7

次の方法に関するドキュメントが見つからないようです: エンジンを使用するすべてのアプリケーションに構成変数を提供して、エンジンに設定を簡単に渡すことができるようにする必要があります。

これを行うための適切な方法または受け入れられた方法へのリンクはありますか?

編集:更新として、これを行うための適切な方法を見つけました。コードは以下です。

# file: lib/my_engine.rb
module MyEngine

  class Engine < Rails::Engine

    initializer "my_engine.configure_rails_initialization" do |app|
      # Engine configures Rails app here, this is not what my question was about
    end

  end

  # This is what I was trying to figure out
  def self.config(&block)
    @@config ||= MyEngine::Configuration.new

    yield @@config if block

    return @@config
  end

end

MyEngine::Configurationこれにより、私のエンジンを使用するアプリケーションは、クラスで定義されたメソッドを呼び出して、初期化子または environment.rb ファイルで以下のように構成できます。

MyEngine.config do |config|
  config.some_configuration_option = "Whatever"
end
4

3 に答える 3

6

簡潔な答え:

your_engine_class.rb というファイルを作成し、ホスティング アプリの config/initializers に配置します。このファイルの例を次に示します。

module YourEngineClass
  class Engine < Rails::Engine
    config.param_name = 'value'    
  end
end

次に、メインの engine.rb 内で以下にアクセスできます。

config.param_name

より長い答え: 私は、これと必要な他の多くの標準構成を含むスタブ エンジンを作成しました。これを出発点として使用できます。

http://keithschacht.com/creating-a-rails-3-engine-plugin-gem/

于 2010-11-02T01:26:32.553 に答える
4

次のように私には良いようです:

#lib/my_engine.rb
require 'rails'

module MyEngine
  class Engine < Rails::Engine

  end

  def self.config(&block)
    yield Engine.config if block
    Engine.config
  end
end
于 2013-03-01T15:43:55.530 に答える