【问题标题】:Sidekiq Install - uninitialized constant ActiveRecord::Base (NameError)Sidekiq 安装 - 未初始化的常量 ActiveRecord::Base (NameError)
【发布时间】:2014-04-10 23:49:52
【问题描述】:

我正在尝试将 Sidekiq 与我的 Rails Mongoid 应用程序集成。我一直按照Here

概述的步骤进行操作

我也在本地运行 redis 和 mongodb。但是,在我运行 bundle 之后,当我尝试启动我的服务器时,我得到了这个错误......

c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/sidekiq-2.17.7/lib/sidekiq/rails.rb:4:in `hook_rails!': uninitialized constant ActiveRecord::Base (NameError)
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/sidekiq-2.17.7/lib/sidekiq/rails.rb:16:in `block in <class:Rails>'
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/initializable.rb:30:in `instance_exec'
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/initializable.rb:30:in `run'
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/initializable.rb:55:in `block in run_initializers'
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/initializable.rb:54:in `each'
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/initializable.rb:54:in `run_initializers'
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:136:in `initialize!'
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.13/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from C:/Users/example/Documents/Workspace/app/config/environment.rb:5:in `<top (required)>'

我的environment.rb文件如下...

# Load the rails application
require File.expand_path('../application', __FILE__)

# Initialize the rails application
App::Application.initialize!

我以前在这个应用程序中使用 redis 与 mongoid 一起使用 resque,所以这是一个 sidekiq 问题。我没有 database.yml 文件,因为我使用的是 mongoid。我还添加了 kiqstand 的步骤,但我得到了同样的错误。不确定如何解决?

编辑:我 90% 确定它是因为 Sidekiq 正在寻找 ActiveRecord,但是我删除了 ActiveRecord,因为我使用的是 Mongo。我的 application.rb 有...

# remove activerecord and run off of mongo only
#require 'rails/all'
#http://stackoverflow.com/a/9327651/1026266
%w(
  action_controller
  action_mailer
  active_resource
  rails/test_unit
  sprockets
).each do |framework|
  begin
    require "#{framework}/railtie"
  rescue LoadError
  end
end

现在我只需要弄清楚如何告诉 sidekiq 不要寻找它?

【问题讨论】:

    标签: ruby-on-rails mongodb redis mongoid sidekiq


    【解决方案1】:

    缺少 ActiveRecord 是问题所在,看起来有一个拉取请求 - https://github.com/mperham/sidekiq/pull/1090

    但这被拒绝了,所以我只需要将 ActiveRecord 添加到我的应用程序中并添加一个虚拟的 database.yml 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 2016-11-26
      • 2016-09-15
      相关资源
      最近更新 更多