0

gem を使用して omniAuth 認証システムを実装していますが、gem が読み込まれる前に定数を初期化する必要があります。

シナリオ:

開発者はその定数を構成ファイルに書き込み、サーバーを再起動して、gem がロードされる前にその定数を初期化する必要があります。

config/initializers/omniauth.rbファイルに入れようとしましたが、サーバーをロードするときにエラーが発生します

unitialized constant OmniAuth::Strategies::Xyz::URL.

私はこの方法で宝石に書いています:

OmniAuth::Strategies::Xyz::URL= "http://my_account.com"
4

1 に答える 1

1

Rails アプリに gem をロードする前に定数を設定したい場合は、ステートメントconfig/application.rbの直前の に配置できます。Bundler.requireただし、gem はまだロードされていないため、このように深くネストされた定数を設定すると問題が発生する可能性があります。

これを行う適切な方法は、構成のために定数に依存しないことです。適切な構成オブジェクトを作成します。Railtieを作成して、Rails 自体に適切な構成オプションを追加し、to_preparegem の構成のロードを適切なタイミングで開始するなどの適切なフックを定義できます。

于 2013-09-13T11:53:58.190 に答える