ruby - 没有这样的文件加载 active_record/associations/has_and_belongs_to_many_association

标签 ruby ruby-on-rails-3

我在我的 Gemfile 中添加了 composite_primary_keys gem。在本地环境中它运行良好,但在 centos 机器上它因以下错误而中断。 Ruby 版本是 1.9.2p290,rubygems 版本是 1.3.7 在这两个环境中。有谁知道为什么会这样?

bundle exec rake db:create --trace

no such file to load -- active_record/associations/has_and_belongs_to_many_association
/var/tmp/jenkins/gem_cache/myapp/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `require'
/var/tmp/jenkins/gem_cache/myapp/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `block in require'
/var/tmp/jenkins/gem_cache/myapp/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223:in `block in load_dependency'
/var/tmp/jenkins/gem_cache/myapp/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:640:in `new_constants_in'
/var/tmp/jenkins/gem_cache/myapp/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:223:in `load_dependency'
/var/tmp/jenkins/gem_cache/myapp/gems/activesupport-3.1.3/lib/active_support/dependencies.rb:240:in `require'
/var/tmp/jenkins/gem_cache/myapp/gems/composite_primary_keys-4.1.2/lib/composite_primary_keys.rb:40:in `<top (required)>'
/opt/ruby/1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.22/lib/bundler/runtime.rb:68:in `require'
/opt/ruby/1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.22/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
/opt/ruby/1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.22/lib/bundler/runtime.rb:66:in `each'
/opt/ruby/1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.22/lib/bundler/runtime.rb:66:in `block in require'
/opt/ruby/1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.22/lib/bundler/runtime.rb:55:in `each'
/opt/ruby/1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.22/lib/bundler/runtime.rb:55:in `require'
/opt/ruby/1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.22/lib/bundler.rb:122:in `require'

最佳答案

当尝试将 composite_primary_keys gem 与 A​​ctive Record 4.1.0 一起使用时,可能会发生相同的错误:

.../vendor/cache/ruby/1.9.1/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:247:in `require': cannot load such file -- active_record/associations/has_and_belongs_to_many_association (LoadError)
  from .../vendor/cache/ruby/1.9.1/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:247:in `block in require'
  from .../vendor/cache/ruby/1.9.1/gems/activesupport-4.1.0/lib/active_support/dependencies.rb:232:in `load_dependency'
  ...

这是因为 composite_primary_keys 的当前版本(截至 2014 年 4 月 17 日的 6.0.1 版)不包括对 Active Record 4.1.0 的支持,这显然删除了有问题的文件。

问题已在 the ar_4.1.x branch of the gem's source code 中修复, 然而。如果您的项目使用 Bundler,一个解决方案是编辑其 Gemfile 并替换行

gem 'composite_primary_keys'

gem 'composite_primary_keys', {
  :git => 'git://github.com/composite-primary-keys/composite_primary_keys.git',
  :branch => 'ar_4.1.x'
}

然后从项目的根文件夹运行bundle install

关于ruby - 没有这样的文件加载 active_record/associations/has_and_belongs_to_many_association,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11023167/

相关文章:

ruby-on-rails - delayed_job 作为守护进程运行时作业失败。使用 rake 作业时运行良好 :work

ruby-on-rails - Heroku 网站因 Rails 3.2.9 和路由约束而崩溃

ruby-on-rails - Facebook 之类的用户在输入时进行搜索

mysql - 如何在每个组中选择具有最新日期的记录

ruby-on-rails - Rails 路线 : Nested Scopes/Namespaces

jquery - 与使用 jquery 在此表中追加相反

ruby-on-rails - Rails 中的大小写不敏感

ruby-on-rails - 自定义 gem 未加载到 Rails 应用程序中

ruby-on-rails - Rails 3 身份验证解决方案

ruby-on-rails - 使用 Sanitize 将转换器中的节点列入白名单