当我想创建一个Ruby on Rails项目时,我得到了下面的消息。

/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:55: uninitialized constant ActiveSupport::Dependencies::Mutex (NameError)
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support.rb:57
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails_generator.rb:31
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.8/bin/rails:15
    from /usr/bin/rails:19:in `load'
    from /usr/bin/rails:19

出了什么问题?我该怎么修呢?


当前回答

如前所述,在Ruby on Rails版本3之前的版本中使用RubyGems 1.6.0时会出现这种情况。我的应用程序使用的是Ruby on Rails 2.3.3,该项目的/vendor提供了该版本。

毫无疑问,Ruby on Rails将升级到更新的2.3。X版本也可以修复此问题。但是,这个问题阻止您运行Rake来解除Ruby on Rails的供应商并升级它。

将require 'thread'添加到环境的顶部。Rb没有帮我解决这个问题。添加require ` thread `到/vendor/rails/activesupport/lib/active_support。Rb确实解决了这个问题。

其他回答

更新rubygems

Gem更新——system

这是Rails 2.3.8和RubyGems最新版本之间的不兼容性。升级到最新的2.3版本(截至今天为2.3.11)。

当我在使用rails 3>之后尝试启动一个旧的rails 2.3.5项目时,我在很多情况下都遇到过这个问题。在我的情况下,要解决这个问题,我必须做一个rubygems更新到1.4.2版本,这是:

sudo gem update --system 1.4.2

如果你不能升级到Ruby on Rails 2.3.11(扩展douglasr的回答),在boot.rb的顶部必须需要thread。例如:

require 'thread'

# Don't change this file!
# Configure your app in config/environment.rb and config/environments/*.rb
...

如果你使用辐射式CMS,只需添加

require 'thread'

到config/boot.rb的顶部。

(Aaron和nathanvda的回答很赞。)