Existe um Phoenix equivalente ao Rails Console

92

Estou aprendendo Phoenix e Elixir e venho de Ruby / Rails onde trabalho no REPL usando prypara inspecionar meu banco de dados e o estado do aplicativo.

Estou tentando descobrir como interagir com meu banco de dados e modelos em um aplicativo Phoenix. Estou ciente iex, mas não sei como usá-lo, inspecionar o banco de dados do meu aplicativo a partir do repl. Eu preciso me conectar a ele com ecto todas as vezes a partir do repl? Existe um rails consoleequivalente. Verifiquei os documentos de Phoenix, Elixir Dose e o repositório Ecto, mas não consigo encontrar o que procuro. Estou esquecendo de algo?

Edit: Com base na resposta abaixo, encontrei esta seção dos documentos ecto. Com base nisso, posso fazer algo comoArticlesApi.Repo.all ArticlesApi.Article

Chase Gilliam
fonte
2
Você pode salvar a digitação por aliasing os nomes dos módulos: alias ArticlesApi.{Repo, Article}. Além disso, tenha em mente que você pode recompilar convenientemente módulos individuais de seu console ( r Article) ou recompilar todo o projeto usando recompile. Isso permite que você deixe uma iexsessão aberta o tempo todo, mantendo os aliases ativos.
hmans

Respostas:

120

Você pode executar iex -S mixpara executar iexcom as dependências em seu projeto mix atual incluídas. Você pode ler sobre isso em http://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html

A partir daí, você pode executar consultas Ecto:

iex> MyApp.Repo.all(MyApp.User)

A execução iex -S mix phoenix.servertambém iniciará o servidor Phoenix.

Gazler
fonte
8
Também vale a pena observar a conveniência de um iex.exsarquivo na raiz do seu projeto para permitir que você configure aliases (para que você não precise preceder tudo com MyApp.). Um exemplo seria: alias MyApp.Repo alias MyApp.User alias MyApp.Car
David Kuhta
2
Existe uma maneira de usar isso no ambiente de produção?
Chris.Zou
@ Chris.Zou Sim, use bin/my_app remote_consoleem seu shell remoto.
Nic Nilov de
3
Na verdade, isso ocorre iex -S mix phx.serverdesde o Phoenix 1.3.
ok56k
27

Para depuração em tempo de execução, (como byebugou debuggerou pryem trilhos), use

require IEx na parte superior do seu modelo ou controlador ou arquivo de visualizações, digite

IEx.pry para onde você precisar que ele pare no tempo de execução e continue a depuração.

Digite hpara obter ajuda dentro do console

Mais importante, depois de tudo isso, reinicie seu servidor com:

iex -S mix phoenix.server

Mais informações: aqui

Devaroop
fonte
4

Se você estiver trabalhando em desenvolvimento, use iex -S mix phx.server.

Se você precisar acessar o console de uma versão implantada, vá para o diretório de versão e execute bin/<name of your app> remote_consolepara abrir um shell remoto para o console do seu aplicativo.

Mark Wilbur
fonte