Quando carrego script/console
, às vezes quero jogar com a saída de um controlador ou de um método auxiliar de exibição.
Existem maneiras de:
- simular uma solicitação?
- chamar métodos de uma instância do controlador no referido pedido?
- métodos auxiliares de teste, por meio da instância do controlador ou de outra maneira?
app.get
(ocorre um erro de thread). Existe uma maneira de liberar o sistema e executar mais ganhos?url_for
do console. Para fazer isso eu fizapp.url_for(...)
NoMethodError: undefined method `protect_against_forgery?' for nil:NilClass
definir uma função chamadaprotect_against_forgery?
no console que os retornosfalse
ActionDispatch::Integration::Session.include(Warden::Test::Helpers); Warden.test_mode! ; app.login_as(User.find(1), scope: :user)
.Uma maneira fácil de chamar uma ação do controlador a partir de um script / console e exibir / manipular o objeto de resposta é:
O objeto do aplicativo é uma instância do ActionController :: Integration :: Session
Isso funciona para mim usando o Ruby on Rails 2.1 e 2.3 e não tentei versões anteriores.
fonte
Se você precisar testar no console (testado no Ruby on Rails 3.1 e 4.1):
Ações do controlador de chamada:
Métodos ApplicationController:
Auxiliares de rota:
Exibir auxiliares:
Render:
Métodos do ActiveSupport:
Módulos Lib:
fonte
Aqui está uma maneira de fazer isso através do console:
Criar uma nova instância de
ActionView::Base
fornece acesso aos métodos de exibição normais que seu ajudante provavelmente usa. Em seguida, estenderYourHelperModule
combina seus métodos em seu objeto, permitindo visualizar os valores de retorno.fonte
Se o método for o
POST
método, então:(Aqui os parâmetros serão de acordo com a sua aplicabilidade.)
Caso contrário, se for o
GET
método, então:fonte
app.methods.grep(/_path/)
:)controler/action
, depende de suas rotas, por exemplo, poderia ser/users/all
e mapear paraApi::UsersController#index
:)rake routes
. :)Outra maneira de fazer isso é usar o depurador Ruby on Rails. Há um guia do Ruby on Rails sobre depuração em http://guides.rubyonrails.org/debugging_rails_applications.html
Basicamente, inicie o servidor com a opção -u:
E, em seguida, insira um ponto de interrupção no seu script, onde você gostaria de ter acesso aos controladores, ajudantes etc.
E quando você faz uma solicitação e atinge essa parte do código, o console do servidor retornará um prompt onde você poderá fazer solicitações, visualizar objetos etc. em um prompt de comando. Quando terminar, basta digitar 'cont' para continuar a execução. Também existem opções para depuração estendida, mas isso deve pelo menos ajudá-lo a começar.
fonte
Aqui está como fazer uma solicitação POST autenticada, usando a refinaria como exemplo:
Você também pode achar útil se você receber um erro:
fonte
NameError: undefined local variable or method app for main:Object
ApplicationController.allow_forgery_protection = false
Você pode acessar seus métodos no console do Ruby on Rails da seguinte maneira:
fonte
No Ruby on Rails 3, tente o seguinte:
O corpo conterá o HTML da URL.
Como rotear e renderizar (despacho) de um modelo no Ruby on Rails 3
fonte
As respostas anteriores estão chamando ajudantes, mas o seguinte ajudará na chamada de métodos do controlador. Eu usei isso no Ruby on Rails 2.3.2.
Primeiro adicione o seguinte código ao seu arquivo .irbrc (que pode estar no seu diretório pessoal)
Em seguida, no console do Ruby on Rails, você pode digitar algo como ...
... e o HTML será despejado no console.
fonte
Dentro de qualquer ação ou exibição do controlador, você pode chamar o console chamando o método do console .
Por exemplo, em um controlador:
Ou em uma visão:
Isso renderizará um console dentro da sua visualização. Você não precisa se preocupar com o local da chamada do console; ele não será renderizado no local da invocação, mas próximo ao seu conteúdo HTML.
Veja: http://guides.rubyonrails.org/debugging_rails_applications.html
fonte
Para controladores, você pode instanciar um objeto de controlador no console do Ruby on Rails.
Por exemplo,
fonte
def show response = @user.contributions end
Como faço para substituir a@user
variável?Uma abordagem possível para o teste do método Helper no console do Ruby on Rails é:
E para recarregar faça:
fonte
Se você adicionou seu próprio auxiliar e deseja que seus métodos estejam disponíveis no console, faça:
include YourHelperName
method_name(args)
no console.Exemplo: digamos que você tenha o MyHelper (com um método
my_method
) em 'app / helpers / my_helper.rb` e, no console, faça:include MyHelper
my_helper.my_method
fonte