未初始化的常量:ActiveSupport :: Dependencies :: Mutex

6

我试图将一个已经运行的rails项目从OSX迁移到Debian。我在两个系统上都使用了RVM,并为该项目创建了相同的gemsets和rvmrc。在Debian上,我只安装了rvm中的ruby,没有系统安装ruby。

当我进入项目文件夹时,rvm会切换到1.8.7版本并使用项目的gemset,一切看起来都很正常。

但是当我运行rake -T时,会出现以下错误:

$ rake -T --trace
(in /home/i/project/src)
rake aborted!
uninitialized constant ActiveSupport::Dependencies::Mutex
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rake-0.8.7/lib/rake.rb:2503:in `const_missing'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:55
/home/i/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
/home/i/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/activesupport-2.3.5/lib/active_support.rb:56
/home/i/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
/home/i/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rails-2.3.5/lib/tasks/misc.rake:18
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rails-2.3.5/lib/tasks/rails.rb:4:in `load'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rails-2.3.5/lib/tasks/rails.rb:4
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rails-2.3.5/lib/tasks/rails.rb:4:in `each'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rails-2.3.5/lib/tasks/rails.rb:4
/home/i/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
/home/i/.rvm/rubies/ruby-1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
/home/i/ws/project/src/Rakefile:10
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rake-0.8.7/lib/rake.rb:2383:in `load'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rake-0.8.7/lib/rake.rb:2383:in `raw_load_rakefile'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rake-0.8.7/lib/rake.rb:2017:in `load_rakefile'
/    home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rake-0.8.7/lib/rake.rb:2016:in `load_rakefile'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rake-0.8.7/lib/rake.rb:2000:in `run'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/gems/rake-0.8.7/bin/rake:31
/home/i/.rvm/gems/ruby-1.8.7-p249@project/bin/rake:19:in `load'
/home/i/.rvm/gems/ruby-1.8.7-p249@project/bin/rake:19

4个回答

19

对我来说,添加 require 'thread' 也没有起作用。问题通过将 rubygems 版本降级解决:

这是新版的 rubygems(在我的情况下是 1.8.5)和旧版的 rails(在我的情况下是 2.3.5)之间的兼容性问题。

$ gem install rubygems-update -v='1.4.2'

$ gem uninstall rubygems-update -v='1.8.5'

$ update_rubygems

13

我的解决方案是,添加以下行:

require 'thread'

在你的Rails项目根目录下的Rakefile文件第一行添加代码即可自动运行;-)


7

不久前我也遇到了这个问题。如果你在谷歌上搜索,你会发现有一些博客和邮件列表的帖子建议你在environment.rb中显式地require "threads"。然而,这对我并没有起作用,但降级rubygems可以解决这个问题:

sudo gem update --system 1.3.7

一些帖子还提到升级到新版本的Rails,但在我们的情况下这并不是一个选项。


0

你可以通过升级Rails来解决它

gem install rails --version 2.3.11

或者降级 gem

sudo gem update --system 1.5.3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接