私はプラグインとしてRailsエンジンを開発中です。ロード時にRailsの設定に必要な変更を加えて、Gemの依存関係を指定するだけでなく、いくつかのロードパスを追加することができるようにしたいと思います。エンジンプラグイン内でRailsの設定を変更するにはどうすればよいですか?
プラグインのinit.rbファイルはconfigオブジェクトにアクセスできますが、これは効果的に読み取り専用ですが、宝石を指定できますが違いはありません。この時点でイニシャライザが既に実行されている必要があります。
私はそうのような新しいRailsの::初期化子ブロックでファイルを必要とすることによって、今のところ、この周りを持っている:
Rails::Initializer.run do |config|
config.gem "authlogic", :version => ">= 2.0.9"
# etc
end
これは動作しますが、メインアプリケーションのenvironment.rbにで既存の設定を払拭。
おそらく私は、右の段階でプラグインの設定を読み込むenvironment.rbに何かを加えるエンジンのジェネレータを持っているかもしれませんが、これを行うためにconfig/initializersにファイルを追加する方法があるかもしれませんジョブ。これについては、どのように最善を尽くすかわからない。
私には良い方法のように聞こえること。 環境内の設定ファイル(development.rbなど)とは異なります。)config/initializersのファイルにはconfigオブジェクトへのアクセス権がありません。この状況でどのようにgemの依存関係を指定するのか知っていますか? ありがとう – DavidNorth
これまでに唯一の方法は、私のエンジンからファイルを読み込んで、environment.rbのRails :: Initializerブロックからevalしてファイルに 'config 'config.gemを呼び出すことができる eval(File.read( "#{RAILS_ROOT} /vendor/plugins/my-engine/config/gems.rb")) これは非常に醜いですが、そのブロックの外でgemの依存関係を指定する必要はありません。 私の発電機はそのブロック内に関連するラインを追加するだけかもしれないが、エンジンの要求をできるだけ別々にしたいと思う。 – DavidNorth