Rails控制台:帮助器和应用程序定义在哪里?

时间:2012-10-25 03:48:39

标签: ruby-on-rails console

rails console中,有两个对象:apphelperSeveral blog posts涵盖了这些有用的内容。不幸的是,它们在普通Rails应用程序的源代码中不可用。

这些方法在哪里定义,或者如何在Rails应用程序中使用它们?

1 个答案:

答案 0 :(得分:5)

TLDR

.../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视图助手和渲染器的方法吗?我想是的。