Railtie を介してロードされる Rails アプリケーション用の gem を開発しています。私は基本的に、古いRailsアプリのスタイルで、ライブラリといくつかのイニシャライザにモデルを挿入しています。私の主な懸念は、Rails アプリケーションのローディング ロジック全体で、ロジックを挿入するのに最適な場所を正確に把握していないことです。私の要件は、アプリの初期化子の前に宝石の初期化子をロードする必要があり、ライブラリと同じことであり、初期化子がライブラリ情報にアクセスすることです。Rails アプリのワークフローでは、何とか機能します。私の短期的な回避策は次のとおりです。
module Gemname
def self.initialize_railtie
ActiveSupport.on_load :active_record do
require 'gemname/lib'
require 'gemname/initializers'
end
end
class Railtie < Rails::Railtie
initializer 'gemname.insert_into_app' do
Gemfile.initialize_railtie
end
end
このようにして、ライブラリが初期化子の前にロードされると確信しています。それを行うためのより良い方法があると確信しています。つまり、いくつかのrailtieフックにアクセスして、アプリのライブラリを使用してライブラリをロードし、アプリの初期化子を使用して初期化子をロードできるようにします。ただ、それらを見つけることができないようです。