17

2 つの同時 HTTP リクエストが Rails アプリに送信されるたびに、2 番目のリクエストは常に次のエラーを返します。

ApplicationController のコピーがモジュール ツリーから削除されましたが、まだアクティブです。

そこから、「標準サーバーのものを調べて、ApplicationController で最初の before_filter を実行しました(そして、私は確認しました。どちらのフィルターが最初に実行されてもかまいません)」という効果の役に立たないスタック トレースを提供し、次を提供します。

/home/matchu/rails/torch/vendor/rails/activesupport/lib/active_support/dependencies.rb:414:in `load_missing_constant'

/home/matchu/rails/torch/vendor/rails/activesupport/lib/active_support/dependencies.rb:96:in `const_missing'

これは一般的な応答であり、実際には多くを語っていないと思います。

Google は、Rails Engine を開発している人はこれに遭遇するだろうと私に言っているようですが、私はそうしません。Rails アプリを 2.2 (2.1?) から 2.3 にアップグレードしただけです。

このエラーの考えられる原因は何ですか? また、実際に何が起こっているのかを追跡するにはどうすればよいですか? この質問があいまいであることは承知しています。他に役立つ情報はありますか?

さらに重要なのは、「本番」環境でテストを実行しようとしたところ、エラーが持続しないようです。では、これは開発にのみ影響するので、あまり心配する必要はありませんか?

4

6 に答える 6

8

これは Rails 2.3.3 のバグです:

2-3-stable にはパッチがあります (ただし不完全ですか?):

この問題に対処するには、いくつかのオプションがあります。

  • Rails 2.3.2に戻し、おそらく 8 月末に 2.3.4 がリリースされるのを待ちます。2.3.3 にはいくつかの悪い問題があるので、それが最善かもしれません。
  • この問題は本番モードでは発生しないはずであり、シンサーバーの下の開発モードでも発生しません。プロダクション モードの Google エンジンでこの問題が発生している場合は、パッチが唯一の望みです。dev モードのみの場合は、Mongrel の代わりに Thin を使用してローカル サーバーを実行できます。
  • Google エンジンの場合は、Google エンジンから離れて別の方法でアプリをホストできます。しかし、これは大変な作業のようです。

頑張ってください、これは多くの人が遭遇している本当に悪いバグです。

于 2009-08-07T11:50:39.027 に答える
1

レール2.3.4の新しいエンジンでも同じ問題に直面し、ここで解決策を見つけました。

アンロード可能なメソッドを呼び出すと、問題が解決しました。

于 2009-11-13T23:25:48.537 に答える
1

他の回答に記載されている回避策に加えて、他に2つ遭遇しました。

  1. config/environments/development.rb ファイルに「config.cache_classes = false」を追加します。これには、変更を表示するたびにサーバーを再起動する必要があるという不幸な副作用があります。
  2. エンジンのコントローラー クラス内に「unloadable」を追加します。http://strd6.com/?p=250およびhttp://dev.rubyonrails.org/ticket/6001を参照してください。

最初に別の解決策を見つけたので、2 番目の方法は試していませんが、プラグイン コードの編集を回避することと、新しいバージョンのプラグインがダウンロードされた場合に元に戻される可能性があることとの間にはもちろんトレードオフがあります。 2 番目のソリューションでは、開発サーバーを常に再起動する必要がないため、開発が容易になります。

于 2009-11-05T16:47:05.563 に答える
0

私はこのエラーを抱えていました、そしてそれはメモリからそれを修正したこれらの3つのもののうちの1つでした。

1)mongrel / Rackを更新する必要がありました2)environment.rbからproduction.rbファイルとdevelopment.rbファイルに移動したRESTful認証からの環境変数がありました-environment.rbに戻すと役に立ちました3 )will_paginateは古くなっていました

于 2009-08-07T10:13:11.110 に答える
0

変。

「rakerails:update」を実行して、構成が最新であることを確認してください。テンプレートアプリケーションに対して既存のものをチェックする必要があるかもしれません。

于 2009-08-07T02:54:45.587 に答える
0

「name」クラス メソッドをオーバーライドする名前空間モジュールで、activerecord モデルを呼び出しました。Rails は name メソッドが Product::Categories::MilkProducts::Firstproduct を返すことを想定していますが、Firstproduct だけを取得してエラーをスローします。したがって、このエラーが発生した場合は、最初に self.name を再定義したかどうかを確認してください。

  • Firstproduct.method(:name).owner は Module でなければなりません
  • Firstproduct.method(:name).source_location

ソース:

module Product::Categories::MilkProducts
  class Base
    def self.name
      self.to_s.demodulize
    end
  end
  class Firstproduct < Base
    self.product = Product.first
  end
end
于 2011-03-29T08:59:20.313 に答える