在rails console
中,有两个对象可用:app
和helper
。 几篇 博客 文章涵盖了这些内容的用途。不幸的是,它们在普通 Rails 应用程序的源代码中不可用。
这些方法在哪里定义,或者我如何在 Rails 应用程序中使用它们?
.../gems/railties-3.2.8/lib/rails/console/app.rb
.../gems/railties-3.2.8/lib/rails/console/helpers.rb
我将介绍我是如何发现这些信息的以及声明是什么样的。
如何:
# in rails console
1.9.3p194 :019 > a = self
=> main
1.9.3p194 :020 > a.method :helper
=> #<Method: Object(Rails::ConsoleMethods)#helper>
1.9.3p194 :021 > _.source_location
=> ["/Users/erichu/.rvm/gems/ruby-1.9.3-p194@global/gems/railties-3.2.8/lib/rails/console/helpers.rb", 3]
该文件的相关来源:
def helper
@helper ||= ApplicationController.helpers
end
所以helpers
只是一个别名ApplicationController.helpers
查找来源的app
过程类似。以下是相关来源:
def app(create=false)
@app_integration_instance = nil if create
@app_integration_instance ||= new_session do |sess|
sess.host! "www.example.com"
end
end
所以app
在控制台中是一个别名@app_integration_instance
,我可以验证它在控制器中是否可用
在应用程序中使用这些是一种好习惯吗?可能不是。
这是一种快速访问 Rails 视图助手和渲染器的方法吗?我认同。