我尝试使用一些额外的功能在纯红宝石上构建微服务。我使用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:in
要求':无法加载此类文件 - pg(LoadError)`
它适用于我用于创建作业的简单ruby脚本,但是当我运行sidekiq-server时它不起作用。
请帮忙。我究竟做错了什么? 在这种情况下如何包含gem?
感谢。
答案 0 :(得分:1)
始终使用Bundler确保您的宝石设置正确:bundle exec ruby script.rb
和bundle exec sidekiq
答案 1 :(得分:1)
尝试将gem 'pg'
添加到Gemfile
,并使用bundle install
进行安装。
答案 2 :(得分:0)
无法加载此类文件意味着特定文件不可用。
搜索路径bundle show pg
。
有时甚至由于该gemspec而无法显示该gem。因此,也请删除gemspec并执行bundle install
。