Когда я загружаюсь script/console
, иногда я хочу поиграть с выводом контроллера или методом помощника вида.
Есть ли способы:
- смоделировать запрос?
- вызывать методы из экземпляра контроллера по указанному запросу?
- проверить вспомогательные методы, либо через указанный экземпляр контроллера, либо другим способом?
app.get
(возникает ошибка потока). Есть ли способ, которым я могу очистить систему и выполнить больше операций?url_for
с консоли. Для этого я сделалapp.url_for(...)
NoMethodError: undefined method `protect_against_forgery?' for nil:NilClass
определения функции, вызываемойprotect_against_forgery?
в консоли, которая возвращаетfalse
ActionDispatch::Integration::Session.include(Warden::Test::Helpers); Warden.test_mode! ; app.login_as(User.find(1), scope: :user)
.Простой способ вызвать действие контроллера из скрипта / консоли и просмотреть / манипулировать объектом ответа:
Объект приложения является экземпляром ActionController :: Integration :: Session
Это работает для меня, используя Ruby on Rails 2.1 и 2.3, и я не пробовал более ранние версии.
источник
Если вам нужно выполнить тестирование с консоли (протестировано на Ruby on Rails 3.1 и 4.1):
Действия контроллера вызовов:
Методы ApplicationController:
Помощники маршрута:
Просмотр помощников:
Рендер:
Методы ActiveSupport:
Lib-модули:
источник
Вот один из способов сделать это через консоль:
Создание нового экземпляра
ActionView::Base
дает вам доступ к обычным методам представления, которые, вероятно, использует ваш помощник. Затем расширениеYourHelperModule
смешивает свои методы с вашим объектом, позволяя вам просматривать их возвращаемые значения.источник
Если метод является
POST
методом, то:(Здесь параметры будут соответствовать вашей применимости.)
Иначе, если это
GET
метод, то:источник
app.methods.grep(/_path/)
:)controler/action
, зависит от ваших маршрутов, например, может быть/users/all
и на картуApi::UsersController#index
:)rake routes
. :)Другой способ сделать это - использовать отладчик Ruby on Rails. Руководство по отладке в Ruby on Rails можно найти по адресу http://guides.rubyonrails.org/debugging_rails_applications.html.
По сути, запустите сервер с параметром -u:
А затем вставьте точку останова в ваш скрипт, где вы хотели бы иметь доступ к контроллерам, помощникам и т. Д.
И когда вы делаете запрос и нажимаете эту часть в коде, консоль сервера возвращает запрос, где вы можете затем делать запросы, просматривать объекты и т. Д. Из командной строки. Когда закончите, просто введите «продолжение», чтобы продолжить выполнение. Существуют также варианты расширенной отладки, но это, по крайней мере, должно помочь вам начать.
источник
Вот как сделать аутентифицированный POST-запрос, используя в качестве примера Refinery:
Вы также можете найти это полезным, если вы получите ошибку:
источник
NameError: undefined local variable or method app for main:Object
ApplicationController.allow_forgery_protection = false
Вы можете получить доступ к своим методам в консоли Ruby on Rails, как показано ниже:
источник
В Ruby on Rails 3 попробуйте это:
Тело будет содержать HTML-код URL.
Как выполнить маршрутизацию и рендеринг (отправку) из модели в Ruby on Rails 3
источник
Предыдущие ответы вызывают помощники, но следующее поможет вызову методов контроллера. Я использовал это на Ruby on Rails 2.3.2.
Сначала добавьте следующий код в ваш файл .irbrc (который может быть в вашем домашнем каталоге)
Затем в консоли Ruby on Rails вы можете напечатать что-то вроде ...
... и HTML будет сброшен на консоль.
источник
Внутри любого действия или представления контроллера вы можете вызвать консоль, вызвав метод console .
Например, в контроллере:
Или в виде:
Это сделает консоль внутри вашего представления. Вам не нужно заботиться о месте вызова консоли; он не будет отображаться сразу после вызова, но рядом с вашим HTML-контентом.
Смотрите: http://guides.rubyonrails.org/debugging_rails_applications.html
источник
Для контроллеров вы можете создать экземпляр объекта контроллера в консоли Ruby on Rails.
Например,
источник
def show response = @user.contributions end
как мне переопределить@user
переменную?Один из возможных подходов к тестированию методов Helper в консоли Ruby on Rails:
И для перезагрузки сделайте:
источник
Если вы добавили свой собственный помощник и хотите, чтобы его методы были доступны в консоли, выполните:
include YourHelperName
method_name(args)
в консоли.Пример: скажем, у вас есть MyHelper (с методом
my_method
) в 'app / helpers / my_helper.rb`, затем в консоли выполните:include MyHelper
my_helper.my_method
источник