Rails 3アプリケーション「MyApp」があります。config\environments\production.rbファイルには次のような記述があります。
MyApp::Application.configure do
config.log_level = :info
config.logger = Logger.new(config.paths.log.first, 'daily')
...or...
config.logger = Logger.new(Rails.root.join("log",Rails.env + ".log"),3,20*1024*1024)
したがって、質問は用語とその意味に焦点が当てられています... (または、これがどのように機能するかを説明する、私が探したが見つからなかったサイトを教えてください。)
- MyAppはモジュールですか?
- MyApp::Application は...? え、モジュールでもあるの?
- MyApp::Application.configure はメソッドですか?
- config は変数ですか? コンソールで確認するにはどうすればいいですか?
- config.logger は???
- config.paths.log.first は ...?? -- コンソールに「MyApp::Application.configure.config.paths.log.first」と表示されますが、それが何を意味するのか、またはそこから情報を抽出する方法がわかりません。
一つの質問としては多すぎますか? :)
チュートリアルを見ましたhttp://guides.rubyonrails.org/configuring.htmlしかし、それは物事が何をするかにすぐに飛びつきます。
ベストアンサー1
6面の質問です!おやおや。えーんロール。1では、6 倍の賛成票をもらえることを期待しています。:)
1. MyApp はモジュールですか?
はい、それはモジュールです。アプリケーションに関係するすべてのものの「コンテナ」として機能します。たとえば、次のようなクラスを定義できます。
module MyApp
class MyFunClass
def my_fun_method
end
end
end
そうすれば、他の誰かが を持っていてもMyFunClass
、それがあなたの に干渉することはありませんMyFunClass
。これは、コードを分離するための優れた方法です。
2. MyApp::Application は...? え、モジュールでもあるの?
MyApp::Application
は実際には を継承するクラスです。これは、実際には のインスタンスである オブジェクトRails::Application
の設定など、さまざまなことを行います。このオブジェクトでは、アプリケーションへのリクエスト (またはセッション内) など、さまざまな楽しい操作を実行できます。たとえば、このコードはアプリケーションのルート パスにダミー リクエストを実行し、単純な Rack レスポンスである 3 サイズの配列を返します。Rails.application
MyApp::Application
rails console
rails c
Rails.application.call(Rack::MockRequest.env_for("/"))
次のように呼び出すことで、アプリケーションのルートを取得することもできます。
Rails.application.routes
メイン目的定義の目的はMyApp::Application
、おそらく決して使わないであろう楽しいことではなく、アプリケーション固有の設定を内部で定義できるようにすることですconfig/application.rb
。フィルターされるパラメータ、アプリケーションのタイムゾーン、自動ロードするディレクトリなどです。これらはすべてRails の設定ガイド。
3. MyApp::Application.configure はメソッドですか?
確かにこれはメソッドであり、アプリケーションconfig/application.rb
がロードされた後に、アプリケーションの構成にさらに構成オプションを追加することができます。おそらく、このconfig/environments/development.rb
メソッドまたはそのディレクトリ内の他の2つのファイルのいずれかで使用されているのを見たことがあるでしょうが、基本的にそれらはすべて、そのファイルに示されているのと同じオプションを使用します。設定ガイド先ほどリンクしました。
4. config は変数ですか? コンソールで確認するにはどうすればいいですか?
「config
変数」は、実際には、使用されるコード内で定義されたメソッドでありRails::Application
、アプリケーションの構成を格納する構成オブジェクトを単純に返します。
コンソールでアクセスするには、 を使用します。これにより、表示しやすいようにRails.application.config
かなり大きなオブジェクトが返されます。Rails::Application::Configuration
5. config.logger は???
あなたが言及しているメソッドは、次の行から来ているものだと思いますconfig/environments/production.rb
:
# Use a different logger for distributed setups
# config.logger = SyslogLogger.new
この例のメソッドは ではなく でconfig.logger
ありconfig.logger=
、これは Ruby の世界では「setter」メソッドと呼ばれます。等号のないものは「getter」と呼ばれます。このメソッドは、Rails の運用環境用の代替ロガーを設定し、Rails.logger
コンソール内またはアプリケーション自体を使用してアクセスできるようになります。
これは、ログに何かを出力したい場合に便利です。次のコードを呼び出すだけです。
Rails.logger.info("DEBUG INFO GOES HERE")
6. config.paths.log.first は ...?? -- コンソールに「MyApp::Application.configure.config.paths.log.first」と表示されますが、それが何を意味するのか、またはそこから情報を抽出する方法がわかりません。
Rails アプリケーション内では、特定のディレクトリの場所を変更できます。したがって、このconfig.paths
メソッドは、これらのディレクトリがどこにマップされているかを追跡する方法です。私は Rails を使い始めてからこれまで、この変数を使用したり変更したりする必要は一度もありませんでした。これは、次の 2 つのことを意味します。
- Rails プログラマーによってはあまり使用されません。
- 私はあまり変化に富んだ生活を送っていません。
好きなように解釈してください。私が言いたいのは、あなたもおそらくそれを使うことはないだろうということです。
これらが Rails の理解を少しでも深めるのに役立つことを願っています。
1ひどいサイコロジョーク。