【发布时间】: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?
谢谢。
【问题讨论】:
-
你确定机器上安装了
pggem? -
当然!当我创建工作时,我将它用于设置数据。还有我的其他 Rails 项目
-
它在 ruby 脚本中有效,但在 sidekiq-server 文件中无效