1

テスト用にいくつかの新しい gem をインストールしましたが、初期化されていない定数の ActionController::Dispatcher::MiddlewareStack エラーが発生しました。gem rdocs の指示に従い、environment.rb ファイルで gem の依存関係を指定し、rake gems:install と rake gems:unpack を実行しました。

また、自分の environment.rb ファイルを一度に 1 行ずつ別のプロジェクトにコピーしましたが、エラーは発生しませんでした。他に何がうまくいかないのだろうと思っていました。

エラーの長いバージョンを次に示します (最初に簡単なテストを実行しているときにエラーに遭遇しました。「active_support」を要求すると、コンソールで同じことが起こります)。

$ ruby test/unit/user_test.rb 
** has_many_polymorphs: rails environment detected
/Users/thaiyoshi/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:105:in `const_missing': uninitialized constant ActionController::Dispatcher::MiddlewareStack (NameError)
    from /Users/thaiyoshi/.gem/ruby/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:71
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from /Users/thaiyoshi/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:156:in `require'
    from /Users/thaiyoshi/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:521:in `new_constants_in'
    from /Users/thaiyoshi/.gem/ruby/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:156:in `require'
    from /Users/thaiyoshi/.gem/ruby/1.8/gems/has_many_polymorphs-2.13/lib/has_many_polymorphs/autoload.rb:2
    from /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
     ... 8 levels...
    from ./test/unit/../test_helper.rb:2:in `require'
    from ./test/unit/../test_helper.rb:2
    from test/unit/user_test.rb:1:in `require'
    from test/unit/user_test.rb:1

これが私の environment.rb ファイルです(デフォルトのコメントは削除されています):

RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION
# config.gem 'has_many_polymorphs', :version => "2.12"
# require ‘has_many_polymorphs‘

# Bootstrap the Rails environment, frameworks, and default configuration

require File.join(File.dirname(__FILE__), 'boot')
require 'has_many_polymorphs' 
require 'active_support'

Rails::Initializer.run do |config|

  config.time_zone = 'UTC'


  config.gem "thoughtbot-factory_girl",
             :lib    => "factory_girl",
             :source => "http://gems.github.com"


   config.gem 'thoughtbot-shoulda',
              :lib => false,
              :source => 'http://gems.github.com'

end
4

4 に答える 4

2

私は以前に誤った情報を書きましたが、今は座って数分間邪魔されずにそれを見ることができました。environment.rb を編集し、require 'has_many_polymorphs'ステートメントを初期化子のに移動することで問題を解決しました。ブロック。

ビンゴ。私は一生懸命顔を合わせましたが、これが私たちが学ぶ方法です..

于 2009-05-03T17:02:45.893 に答える
1

このスレッドをしばらくフォローしていました-上記のricの回答は開発中は機能しましたが、本番モードに切り替えるとエラーが発生しました。requireを初期化ブロックの上に戻し、Ricの元の修正を使用すると正常に機能しました。彼の編集はそれを削除しました-それで後ろをフォローしている人のために、ここに再びあります:ところで-私たちは今johnsbrnブランチではなくhmpでトランクを使用していますそしてそれは今2.3.2でうまくいくようです

編集:それは私にとってほとんど問題を修正しました。その後、同様の問題で移行が失敗したことがわかりました。コードを調べた後、私はすぐに答えをハックしました。これには、欠落しているクラス(action_controller / Middleware_stack)が必要でした。

迅速で不潔な修正は、相対パスの下でファイルを編集することです。

"johnsbrn-has_many_polymorphs / lib / has_many_polymorphs / autoload.rb"

最初の2つのrequire行の間に次の行を挿入します。

定義されていない限り、「action_controller / Middleware_stack」が必要ですか?:: ActionController :: MiddlewareStack

たとえば、次のようになります。

定義されていない限り、「初期化子」が必要ですか?:: Rails ::Initializer

定義されていない限り、「action_controller / Middleware_stack」が必要ですか?:: ActionController :: MiddlewareStack

定義されていない限り、「action_controller / dispatcher」が必要ですか?:: ActionController :: Dispatcher

そして今、物事はうまくいきます。

于 2009-08-05T16:25:56.533 に答える
0

environment.rb:

require File.join(File.dirname(__FILE__), 'boot')
require 'action_controller/middleware_stack' unless defined? ::ActionController::MiddlewareStack
require 'has_many_polymorphs'

私のために働く

于 2010-01-24T09:43:48.883 に答える
0

私のように他の誰かがこのページを閲覧した場合に備えて、has_many_polymorphs gem を 1.12.1 から 1.13 にアップグレードし、それをベンダー フォルダーに再凍結する (そして、environment.rb の config.gem 行を使用するように更新する) だけでこれを解決しました。新しいバージョン番号)。

于 2010-02-02T12:43:40.407 に答える