使用fork在rails目录内和现有的rails进程(如控制台)中启动sidekiq有什么区别

问题描述 投票:0回答:1
$ rails console

[1] pry(main)> fork { exec "bundle exec sidekiq -c 3 crawling_jobs -t 1 -L log/sidekiq.log" }
=> 7306

bundler: failed to load command: sidekiq (/Users/raducroitoru/.rbenv/versions/2.5.3/bin/sidekiq)
LoadError: cannot load such file -- selenium-webdriver

相同的命令在项目目录中有效。

对我来说,这似乎是bin PATH问题,但我找不到与此相关的任何主题。感谢任何帮助。

Ruby:2.5.3,Rails:4.2.11.1,Sidekiq:5.2.7(输入:1.8.1)

ruby-on-rails sidekiq rails-console
1个回答
0
投票

基本上,分叉的过程很可能不会继承与正在运行的控制台相同的环境,因此捆绑程序不会加载正确的gem(因此找不到selenium-webdriver)-您might通过添加进行修复命令的rails env var例如

fork { exec "RAILS_ENV=#{Rails.env} bundle exec sidekiq -c 3 crawling_jobs -t 1 -L log/sidekiq.log" 

我说“可能”,因为您的控制台环境(Rails.env)可能也没有selenium-webdriver的gem组。

尽管您的问题涉及从控制台启动此操作,但是是否有理由需要从现有的Rails进程而不是从Shell进行此操作?

© www.soinside.com 2019 - 2024. All rights reserved.