3

では、とrails consoleの 2 つのオブジェクトを使用できます。 いくつかのブログ投稿で、これらの有用性について説明しています。残念ながら、通常の Rails アプリケーションのソース コードでは利用できません。apphelper

これらのメソッドはどこで定義されていますか、または Rails アプリ内でどのように使用できますか?

4

1 に答える 1

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 のビュー ヘルパーとレンダラーに簡単にアクセスする方法ですか? そう思います。

于 2012-10-25T03:48:39.090 に答える