【问题标题】:PaperTrail (paper_trail) error after upgrading to Ruby 2.1.2 with RVM. Uninitialized constant PaperTrail::Rails::Engine使用 RVM 升级到 Ruby 2.1.2 后出现 PaperTrail (paper_trail) 错误。未初始化的常量 PaperTrail::Rails::Engine
【发布时间】:2014-10-30 22:27:46
【问题描述】:

我正在尝试从Ruby 1.9.3 to Ruby 2.1.2 (Rails 4.0) 升级。我正在使用 RVM。

我安装了 Ruby 2.1.2,更新了 Gemfile,包括指定 "gem 'paper_trail', '~> 3.0.5'",切换到带有 RVM 的 Ruby 2.1.2,创建了一个新的 gemset,然后切换到它。

然后我进行了捆绑安装。

当我尝试运行 rails server 时,出现以下错误:

/Users/sjohnson/my_app/config/initializers/paper_trail.rb:2:in <top (required)>': uninitialized constant PaperTrail::Rails::Engine (NameError) from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/zeus-0.13.3/lib/zeus/load_tracking.rb:50:in load' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/zeus-0.13.3/lib/zeus/load_tracking.rb:50:in load' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/zeus-0.13.3/lib/zeus/load_tracking.rb:43:in load' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/engine.rb:609:in block (2 levels) in <class:Engine>' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/engine.rb:608:in each' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/engine.rb:608:in block in <class:Engine>' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/initializable.rb:30:in instance_exec' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/initializable.rb:30:in run' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/initializable.rb:55:in block in run_initializers' 来自 /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:226:in block in tsort_each' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:348:in block(2 个级别)在 each_strongly_connected_component' 来自 /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:418:in block (2 levels) in each_strongly_connected_component_from' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:427:in each_strongly_connected_component_from' 来自 /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:417:in block in each_strongly_connected_component_from' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/initializable.rb:44:in each' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/initializable.rb:44:in tsort_each_child' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:411:in call' 来自 /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:411:in each_strongly_connected_component_from' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:347:in block in each_strongly_connected_component' 来自 /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in each' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in call' 来自 /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:345:in each_strongly_connected_component' from /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:224:in tsort_each' 来自 /Users/sjohnson/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/tsort.rb:205:in tsort_each' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/initializable.rb:54:in run_initializers' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/application.rb:215:in initialize!' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/railties-4.0.5/lib/rails/railtie/configurable.rb:30:inmethod_missing' 来自 /Users/sjohnson/my_app/config/environment.rb:5:in <top (required)>' from /Users/sjohnson/my_app/spec/spec_helper.rb:10:inrequire' 来自 /Users/sjohnson/my_app/spec/spec_helper.rb:10:in <top (required)>' from /Users/sjohnson/my_app/spec/api/v1/api_authentication_spec.rb:1:in require' 来自 /Users/sjohnson/my_app/spec/api/v1/api_authentication_spec.rb:1:in <top (required)>' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/configuration.rb:1057:in load' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/configuration.rb:1057:in block in load_spec_files' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/configuration.rb:1057:in each' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/configuration.rb:1057:in load_spec_files' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:97:in setup' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:85:in run' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:70:in run' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/lib/rspec/core/runner.rb:38:in invoke' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/gems/rspec-core-3.0.3/exe/rspec:4:in ' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/bin/rspec:23:in load' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/bin/rspec:23:in ' 来自 /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/bin/ruby_executable_hooks:15:in eval' from /Users/sjohnson/.rvm/gems/ruby-2.1.2@rails4/bin/ruby_executable_hooks:15:in '

我试图运行: bundle exec rails 生成 paper_trail:install

表示迁移文件已经存在(PaperTrail 是 在 1.9.3 下工作)。所以,我再次运行它: bundle exec rails generate paper_trail:install -s

它成功完成,但我有同样的问题。

config/initializers/paper_trail.rb:

# the following line is required for PaperTrail >= 3.0.3 with Rails
PaperTrail::Rails::Engine.eager_load!

module PaperTrail
  class Version < ActiveRecord::Base
    attr_accessible :captain
  end
end `

想法?其他有用的信息?

编辑: 尽管在初始化文件中引用了 paper_trail 3.0.3,gem 的版本是 3.0.5(通过 gem list 进行验证)。错误跟踪中对 3.0.3 的引用适用于 Rspec。

【问题讨论】:

  • 他们已将 paper_trail 版本更新为 3.0.5 并删除了 3.0.3 版本,并不断解决。我刚刚在我的初始化程序中做了module PaperTrailmodule Railsclass Engine &lt; ::Rails::Enginepaths['app/models'] &lt;&lt; 'lib/paper_trail/frameworks/active_record/models'endendend
  • 我将代码添加到我的初始化程序中,这似乎可以正常工作。如果您输入此信息作为答案而不是评论,我可以接受。谢谢。

标签: ruby-on-rails ruby ruby-on-rails-4 gem paper-trail-gem


【解决方案1】:

我刚刚在我的初始化程序中做了:

module PaperTrail  
  module Rails  
    class Engine < ::Rails::Engine 
      paths['app/models'] << 'lib/paper_trail/frameworks/active_record/models'  
    end 
  end 
end

我建议你把这个:

PaperTrail::Rails::Engine.eager_load!`

作为初始化器中的最后一个字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多