【问题标题】:ruby sidekiq `require': cannot load such file -- pg (LoadError)ruby sidekiq `require':无法加载此类文件 -- pg (LoadError)
【发布时间】:2018-11-30 16:33:28
【问题描述】:

我尝试在带有一些附加功能的纯 ruby​​ 上构建微服务。我将sidekiq 用于工作,pg 用于数据库连接。

为了启动 Sidekiq 服务器,我使用默认设置和代码:

# ./config/sidekiq.rb

require 'sidekiq'
require 'pg'  # This doesn't work with "`require': cannot load such file -- pg (LoadError)"
require_relative '../jobs/location_jobs/collect_job' # here is my job locates

# If your client is single-threaded, we just need a single connection in our Redis connection pool
Sidekiq.configure_client do |config|
  config.redis = { url: 'redis://localhost:6379/0', namespace: 'analytic_serv', size: 5 }
end

# Sidekiq server is multi-threaded so our Redis connection pool size defaults to concurrency (-c)
Sidekiq.configure_server do |config|
  config.redis = { url: 'redis://localhost:6379/0', namespace: 'analytic_serv' }
end

如您所见,我在sidekiq.rb 中尝试了require PG gem。实际上我在另一个文件中使用它并在这里仅用作示例。

所以,当我尝试运行我的 sidekiq-server 时,它会引发异常

bundle exec sidekiq -r ./config/sidekiq.rb -C ./config/sidekiq.yml

analytic_serv/config/sidekiq.rb:2:inrequire': 无法加载此类文件 -- pg (LoadError)`

它适用于我用于创建作业的简单 ruby​​ 脚本,但在我运行 sidekiq-server 时它不起作用。

请帮忙。我究竟做错了什么? 在这种情况下如何包含 gem?

谢谢。

【问题讨论】:

  • 你确定机器上安装了pg gem?
  • 当然!当我创建工作时,我将它用于设置数据。还有我的其他 Rails 项目
  • 它在 ruby​​ 脚本中有效,但在 sidekiq-server 文件中无效

标签: ruby rubygems sidekiq


【解决方案1】:

始终使用 Bundler 确保您的 gem 设置正确:bundle exec ruby script.rbbundle exec sidekiq

【讨论】:

  • 不幸的是,它没有帮助。
【解决方案2】:

尝试将gem 'pg' 添加到您的Gemfile,并使用bundle install 进行安装。

【讨论】:

    【解决方案3】:

    无法加载此类文件意味着,特定文件不可用。 搜索路径bundle show pg

    有时,由于 gemspec,即使 gem 不存在,它也会显示出来。所以,也删除 gemspec 并执行bundle install

    【讨论】:

      猜你喜欢
      • 2014-05-27
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 2022-09-26
      • 2016-08-10
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      相关资源
      最近更新 更多