使用 fork 在 rails 目录和现有 rails 进程(如控制台)中启动 sidekiq 有什么区别
What's the difference between starting sidekiq inside rails directory and within an existing rails process (like console) using fork
$ 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)
本质上,分叉进程很可能不会继承与您的 运行 控制台相同的环境,因此捆绑程序不会加载正确的 gems(因此它找不到 selenium-webdriver ) - 你 可能 通过在命令中添加 rails env var 来修复它,例如
fork { exec "RAILS_ENV=#{Rails.env} bundle exec sidekiq -c 3 crawling_jobs -t 1 -L log/sidekiq.log"
我说 "might" 因为您的控制台环境 (Rails.env
) 可能也没有用于 selenium-webdriver 的 gem 组。
尽管您的问题与从控制台启动有关,但您是否需要从现有 rails 进程而不是 shell 执行此操作?
$ 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)
本质上,分叉进程很可能不会继承与您的 运行 控制台相同的环境,因此捆绑程序不会加载正确的 gems(因此它找不到 selenium-webdriver ) - 你 可能 通过在命令中添加 rails env var 来修复它,例如
fork { exec "RAILS_ENV=#{Rails.env} bundle exec sidekiq -c 3 crawling_jobs -t 1 -L log/sidekiq.log"
我说 "might" 因为您的控制台环境 (Rails.env
) 可能也没有用于 selenium-webdriver 的 gem 组。
尽管您的问题与从控制台启动有关,但您是否需要从现有 rails 进程而不是 shell 执行此操作?