【问题标题】:rake errors while loading some kind of mutex加载某种互斥体时出现错误
【发布时间】:2011-07-15 09:22:34
【问题描述】:

我刚刚为我的网站安装了 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 是什么,为什么它现在会抛出这个错误?

【问题讨论】:

  • 不,您帖子中的答案并不能解决问题...
  • gem --versionrails --versionruby --version 的输出是什么?
  • RubyGems:1.6.2,Rails:3.0.5,Ruby:1.8.7(可能切换到1.9.2); Rails 项目运行为 2.3.4
  • 等一下,您正在尝试使用 3.0.5 gem 运行 Rails 2.3.4 项目?

标签: ruby-on-rails ruby rake mutex


【解决方案1】:

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

有时问题不在于代码,而在于环境——比如冲突的 gem,我想问题是你新安装的 facebook 连接弄乱了系统中的某些部分

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

为了进一步帮助您,您需要堆栈跟踪、项目中使用的 gem 列表及其版本,以及安装 facebook connect 时可能执行的步骤

【讨论】:

    【解决方案2】:

    您已安装 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,因为它是一个更好的长期解决方案,并且包含许多关键的安全修复。

    【讨论】:

      【解决方案3】:

      如果您无法从 rails 2.3.4 升级,请在初始化 boot.rb 之前在 Rakefile 中使用“线程”。

      您可能还需要在 config/environment.rb 和 script/server 中使用它。

      看起来像这样:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 2017-08-31
        • 1970-01-01
        • 1970-01-01
        • 2013-10-12
        • 1970-01-01
        相关资源
        最近更新 更多