Извините, что (пере) сообщение здесь, люди часто не раздают комментарии.
Проверьте мой комментарий на crashmstr, FlexeLint / PC-Lint сделает это за вас. Информационное сообщение 766. В этом разделе обсуждается раздел 11.8.1 моего руководства (версия 8.0).
Кроме того, и это важно, продолжайте повторять, пока сообщение не исчезнет. Другими словами, после удаления неиспользуемых заголовков повторно запустите lint, после того, как вы удалите ненужные заголовки, больше файлов заголовков могут стать «ненужными». (Это может показаться глупым, медленно прочитайте его и проанализируйте его, это имеет смысл.)
Для вызова помощников используйте объект помощника
:
$ ./script/console
>> helper.number_to_currency('123.45')
=> "R$ 123,45"
Если вы хотите использовать помощник, который не включен по умолчанию (скажем, потому что вы удалили помощник : all
из ApplicationController
), просто включите помощник.
>> include BogusHelper
>> helper.bogus
=> "bogus output"
Что касается работы с контроллерами , я цитирую ответ Ника :
> app.get '/ posts / 1' > response = app.response # теперь у вас есть объект ответа rails, очень похожий на интеграционные тесты > response.body # получите HTML > response.cookies # хеш файлов cookie # и т. д. и т. д.
Вот один способ сделать это через консоль:
>> foo = ActionView::Base.new
=> #<ActionView::Base:0x2aaab0ac2af8 @assigns_added=nil, @assigns={}, @helpers=#<ActionView::Base::ProxyModule:0x2aaab0ac2a58>, @controller=nil, @view_paths=[]>
>> foo.extend YourHelperModule
=> #<ActionView::Base:0x2aaab0ac2af8 @assigns_added=nil, @assigns={}, @helpers=#<ActionView::Base::ProxyModule:0x2aaab0ac2a58>, @controller=nil, @view_paths=[]>
>> foo.your_helper_method(args)
=> "<html>created by your helper</html>"
Создание нового экземпляра ActionView::Base
предоставляет Вам доступ к нормальным методам просмотра, которые, вероятно, использует Ваш помощник. Тогда расширение YourHelperModule
смеси его методы в Ваш объект, позволяющий Вам просматривать их возвращаемые значения.
Другой способ сделать это должно использовать отладчик Ruby on Rails. Существует руководство Ruby on Rails об отладке в http://guides.rubyonrails.org/debugging_rails_applications.html
В основном, запустите сервер с-u опции:
./script/server -u
И затем вставляют точку останова в Ваш сценарий, где требуется иметь доступ к контроллерам, помощникам, и т.д.
class EventsController < ApplicationController
def index
debugger
end
end
И когда Вы выполните запрос и поражаете ту часть в коде, консоль сервера возвратит подсказку, где можно затем выполнить запросы, объекты представления, и т.д. от командной строки. По окончании просто введите 'продолжение следует' для продолжения выполнения. Существуют также опции для расширенной отладки, но это должно, по крайней мере, запустить Вас.
Более ранние ответы вызывали помощников, но следующие помогут для вызова методов контроллера. Я использовал это в Ruby on Rails 2.3.2.
Сначала добавьте следующий код в ваш .irbrc файл (который может находиться в вашем домашнем каталоге)
class Object
def request(options = {})
url=app.url_for(options)
app.get(url)
puts app.html_document.root.to_s
end
end
Затем в консоли Ruby on Rails вы можете ввести что-то вроде. ..
request(:controller => :show, :action => :show_frontpage)
... и HTML будет выгружен в консоль.
An easy way to call a controller action from a script/console and view/manipulate the response object is:
> app.get '/posts/1'
> response = app.response
# You now have a Ruby on Rails response object much like the integration tests
> response.body # Get you the HTML
> response.cookies # Hash of the cookies
# etc., etc.
The app object is an instance of ActionController::Integration::Session
This works for me using Ruby on Rails 2.1 and 2.3, and I did not try earlier versions.