ruby sidekiq`requiret':无法加载这样的文件--pg(LoadError)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby sidekiq`requiret':无法加载这样的文件--pg(LoadError)相关的知识,希望对你有一定的参考价值。

我尝试使用一些额外的功能在纯红宝石上构建微服务。我使用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

如你所见,我在require尝试sidekiq.rb 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?

谢谢。

答案

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

另一答案

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

另一答案

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

有时甚至宝石也不存在因为gemspec而显示。所以,也删除gemspec并做bundle install

以上是关于ruby sidekiq`requiret':无法加载这样的文件--pg(LoadError)的主要内容,如果未能解决你的问题,请参考以下文章

ruby Sidekiq本地处理统计数据

ruby Sidekiq共享队列统计信息

ruby 从sidekiq删除所有工作

ruby sidekiq队列

ruby sidekiq_reporter.rb

ruby sidekiq_reporter.rb