加载某种互斥锁时出错

时间:2011-03-14 22:26:11

标签: ruby-on-rails ruby rake mutex

我刚为我的网站安装了facebook connect,但是没有对导致错误的文件进行过编辑,我得到了这个:

rake aborted!
uninitialized constant ActiveSupport::Dependencies::Mutex
/var/www/###/Rakefile:10:in `require'
(See full trace by running task with --trace)

在我的Rakefile的第10行,你会发现:

require 'tasks/rails'

我没有编辑'tasks / rails'...这个Mutex是什么?为什么它现在会抛出这个错误?

3 个答案:

答案 0 :(得分:1)

可能会抛出错误,因为模块ActiveSupport :: Dependencies中的某些代码想要使用Mutex类,但由于某种原因,该类无法自动加载。

有时候问题不在于代码,而是在环境中 - 就像冲突的宝石一样,我想问题是你新安装的facebook连接会搞乱系统中的某些部分

它可以帮助查看rake some:task --trace输出,以确定导致问题的文件 - 可能会查找对facebook连接库的调用,然后尝试使用该文件 - 注释掉可能的行引起你的问题,确定必须做什么。

为了进一步帮助您,需要堆栈跟踪,项目中使用的宝石列表及其版本,以及安装facebook connect时所做的步骤

答案 1 :(得分:1)

如果你无法从rails 2.3.4升级,那么在boot.rb初始化之前,需要在Rakefile中使用'thread'。

您可能还需要在config / environment.rb和脚本/服务器中要求它。

看起来像这样:

require 'thread'
require File.join(File.dirname(__FILE__), 'boot')

答案 2 :(得分:0)

您已安装Rails 3.0.5,但正在尝试使用2.3.4。虽然,如果你另外安装了2.3.4,它们不应该发生冲突,我建议你看一下使用RVM进行开发来创建隔离的开发环境(称为gemsets)。

此外,您使用的是Rails 2.3.4,它与Rubygems 1.6不兼容。我强烈建议您将rails升级到最新的2.3版本(目前为2.3.11),因为它包含许多错误和安全修复程序,以及与最新的Rubygems的兼容性。或者你可以将Rubygems降级到1.3.7,但我建议升级Rails,因为它是一个更好的长期解决方案,并包含许多重要的安全修复程序。