3

レール 3.2.2

rake assets:precompile を実行すると、次のエラーが発生します。

uninitialized constant Redirect

Redirect は、ネイキッド ドメイン要求を mydomain.com から www.mydomain.com にリダイレクトするカスタム ミドルウェア クラスです。

以下を使用して、production.rb にミドルウェアをロードします。

config.middleware.use Redirect

redirect.rb は lib/middleware/redirect.rb にあります。以下を使用して、application.rb にパスをロードします。

config.autoload_paths += %W(#{config.root}/lib/middleware)

アプリケーションを実行すると問題なく動作し、他の rake タスクも問題なく実行されます。しかし、rake assets:precompile を実行すると、lib が正しくロードされないように見えます。最初に Heroku で実行していることに気付きましたが、ローカルで問題なく再現できました。

何か案は?ありがとう!

4

2 に答える 2

3

あなたはおそらくconfig.assets.initialize_on_precompile = falseどこかに設定しました。

Heroku に関連する設定を行った後、このエラーが発生しました。修正するにrequire "#{Rails.root}/lib/my_middleware.rb"は、ミドルウェアを使用するようにアプリを構成する行のすぐ上にします。

于 2012-09-13T03:56:06.597 に答える
0

::GLOBAL/lib からクラスをロードし、それを変数に割り当てると、同じエラーが発生しました。

after_initializeこれは、開発時にブロック内に配置するのを忘れていたためです。

config.after_initialize do
  ::GLOBAL = MyLib::MyClass.new
end

これが誰かに役立つことを願っています!

于 2012-11-20T17:37:01.553 に答える