В чем разница между запуском sidekiq внутри каталога rails и внутри существующего процесса rails (например, консоли) с использованием fork - PullRequest
0 голосов
/ 08 января 2020
$ 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 (ent: 1.8.1)

1 Ответ

1 голос
/ 08 января 2020

По сути, разветвленный процесс, скорее всего, не наследует ту же среду, что и ваша работающая консоль, поэтому упаковщик не будет загружать правильные гемы (и, следовательно, он не может найти selenium-webdriver) - вы могли бы исправить добавив в команду rails env var, например,

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

Я сказал "может", потому что в вашей консоли env (Rails.env) также может отсутствовать группа гемов для selenium-webdriver.

Хотя ваш вопрос касается запуска этого с консоли, есть ли причина, по которой вам нужно это делать из существующего процесса rails, а не из оболочки?

...