elixir rethinkdb phoenix-framework ecto

elixir - ¿Cómo usar RethinkDB con Phoenixframework?



phoenix-framework ecto (1)

Paso 1) Generar proyecto sin ecto:

mix phoenix.new some_app --no-ecto

Paso 2) Agregue rethinkdb como una dependencia en mix.exs

defp deps do [{:phoenix, "~> 0.13.1"}, {:phoenix_html, "~> 1.0"}, {:phoenix_live_reload, "~> 0.4", only: :dev}, {:rethinkdb, "~> 0.0.5"}, {:cowboy, "~> 1.0"}] end

Paso 3) Ejecutar mix deps.get

Paso 4) Crea una base de datos:

defmodule SomeApp.Database do use RethinkDB.Connection end

Paso 5) lib/some_app.ex a su árbol de supervisión en lib/some_app.ex : el name debe coincidir con el módulo de su base de datos anterior ( SomeApp.Database )

def start(_type, _args) do import Supervisor.Spec, warn: false children = [ # Start the endpoint when the application starts supervisor(SomeApp.Endpoint, []), worker(RethinkDB.Connection, [[name: SomeApp.Database, host: ''localhost'', port: 28015]]) # Here you could define other workers and supervisors as children ] # See http://elixir-lang.org/docs/stable/elixir/Supervisor.html # for other strategies and supported options opts = [strategy: :one_for_one, name: Rethink.Supervisor] Supervisor.start_link(children, opts) end

Paso 6) Ejecutar una consulta:

defmodule Rethink.PageController do use Rethink.Web, :controller use RethinkDB.Query plug :action def index(conn, _params) do table_create("people") |> SomeApp.Database.run |> IO.inspect table("people") |> insert(%{first_name: "John", last_name: "Smith"}) |> SomeApp.Database.run |> IO.inspect table("people") |> SomeApp.Database.run |> IO.inspect render conn, "index.html" end end

Tenga en cuenta: He puesto las consultas en el PageController solo por la facilidad de ejecución. En un ejemplo real, estos estarían en un módulo separado, tal vez uno que represente su recurso.

La otra cosa a tener en cuenta es que estoy creando la tabla en línea en el controlador. Puede ejecutar el comando para crear una tabla en un archivo como priv/migrations/create_people.exs y ejecutarlo con mix run priv/migrations/create_people.exs

Habiendo llegado a Elixir / Phoenix, quiero usar RethinkDB en lugar de PostgreSQL, pero solo encuentro documentación / ejemplos en PostgreSQL (que parece ser la base de datos predeterminada / oficial). Hay un muy buen paquete de Hamiltop (Rethinkdb-elixir) pero desafortunadamente la documentación en el Wiki no está lista y en el Léame no es suficiente para mí. Absolutamente no quiero usar SQL (vine de usar Meteor / MongoDB donde la base de datos no fue un problema). ¿Puede alguien mostrarme un ejemplo sencillo del código que necesito para:

  1. Conectar a RethinkDB;
  2. Iniciar el servidor / administrar el servidor / conexiones;
  3. Crear una base de datos / tabla;
  4. Realizar operaciones básicas de CRUD.

Esto podría sonar tonto, pero como Meteor se encargó de esto, ahora es un problema para mí ... porque no puedo hacerlo correctamente. ¡Gracias!