Cuando cargo script/console
, a veces quiero jugar con la salida de un controlador o un método de ayuda de vista.
¿Hay formas de:
- simular una solicitud?
- llamar a métodos de una instancia de controlador en dicha solicitud?
- prueba métodos auxiliares, ya sea a través de dicha instancia de controlador o de otra manera?
app.get
(se produce un error de subproceso). ¿Hay alguna manera de poder vaciar el sistema y ejecutar más get?url_for
desde la consola. Para hacer esto lo hiceapp.url_for(...)
NoMethodError: undefined method `protect_against_forgery?' for nil:NilClass
definir una función llamadaprotect_against_forgery?
dentro de la consola que regresafalse
ActionDispatch::Integration::Session.include(Warden::Test::Helpers); Warden.test_mode! ; app.login_as(User.find(1), scope: :user)
.Una manera fácil de llamar a una acción de controlador desde un script / consola y ver / manipular el objeto de respuesta es:
El objeto de la aplicación es una instancia de ActionController :: Integration :: Session
Esto funciona para mí usando Ruby on Rails 2.1 y 2.3, y no probé versiones anteriores.
fuente
Si necesita probar desde la consola (probado en Ruby on Rails 3.1 y 4.1):
Acciones del controlador de llamadas:
Métodos de ApplicationController:
Ayudantes de ruta:
Ver ayudantes:
Hacer:
Métodos de ActiveSupport:
Módulos Lib:
fuente
Aquí hay una forma de hacerlo a través de la consola:
La creación de una nueva instancia de
ActionView::Base
le da acceso a los métodos de vista normales que su ayudante probablemente usa. Luego, la extensiónYourHelperModule
combina sus métodos en su objeto, lo que le permite ver sus valores de retorno.fuente
Si el método es el
POST
método, entonces:(Aquí los parámetros serán según su aplicabilidad).
De lo contrario, si es el
GET
método, entonces:fuente
app.methods.grep(/_path/)
:)controler/action
, depende de tus rutas, por ejemplo, podría ser/users/all
y mapa paraApi::UsersController#index
:)rake routes
. :)Otra forma de hacer esto es usar el depurador Ruby on Rails. Hay una guía de Ruby on Rails sobre depuración en http://guides.rubyonrails.org/debugging_rails_applications.html
Básicamente, inicie el servidor con la opción -u:
Y luego inserte un punto de interrupción en su script donde le gustaría tener acceso a los controladores, ayudantes, etc.
Y cuando realiza una solicitud y presiona esa parte en el código, la consola del servidor devolverá un mensaje en el que podrá realizar solicitudes, ver objetos, etc. desde un símbolo del sistema. Cuando termine, simplemente escriba 'cont' para continuar la ejecución. También hay opciones para la depuración extendida, pero esto al menos debería comenzar.
fuente
Aquí le mostramos cómo hacer una solicitud POST autenticada, utilizando Refinery como ejemplo:
También puede encontrar estos útiles si obtiene un error:
fuente
NameError: undefined local variable or method app for main:Object
ApplicationController.allow_forgery_protection = false
Puede acceder a sus métodos en la consola de Ruby on Rails de la siguiente manera:
fuente
En Ruby on Rails 3, prueba esto:
El cuerpo contendrá el HTML de la URL.
Cómo enrutar y renderizar (despacho) desde un modelo en Ruby on Rails 3
fuente
Las respuestas anteriores están llamando a ayudantes, pero lo siguiente ayudará a llamar a los métodos del controlador. He usado esto en Ruby on Rails 2.3.2.
Primero agregue el siguiente código a su archivo .irbrc (que puede estar en su directorio de inicio)
Luego, en la consola de Ruby on Rails, puede escribir algo como ...
... y el HTML se volcará a la consola.
fuente
Dentro de cualquier acción o vista del controlador, puede invocar la consola llamando al método de la consola .
Por ejemplo, en un controlador:
O en una vista:
Esto generará una consola dentro de su vista. No necesita preocuparse por la ubicación de la llamada de la consola; no se representará en el momento de su invocación, sino al lado de su contenido HTML.
Ver: http://guides.rubyonrails.org/debugging_rails_applications.html
fuente
Para los controladores, puede crear una instancia de un objeto controlador en la consola de Ruby on Rails.
Por ejemplo,
fuente
def show response = @user.contributions end
¿Cómo anulo la@user
variable?Un posible enfoque para la prueba del método Helper en la consola de Ruby on Rails es:
Y para recargar hacer:
fuente
Si ha agregado su propio ayudante y desea que sus métodos estén disponibles en la consola, haga lo siguiente:
include YourHelperName
method_name(args)
en la consola.Ejemplo: digamos que tiene MyHelper (con un método
my_method
) en 'app / helpers / my_helper.rb`, luego en la consola haga:include MyHelper
my_helper.my_method
fuente