Ruby on rails 在rails目录中启动sidekiq和在现有rails进程(如控制台)中使用fork有什么区别
相同的命令在项目目录中工作 对我来说,这似乎是类似于bin路径的问题,但我找不到任何与此相关的主题。谢谢你的帮助Ruby on rails 在rails目录中启动sidekiq和在现有rails进程(如控制台)中使用fork有什么区别,ruby-on-rails,sidekiq,rails-console,Ruby On Rails,Sidekiq,Rails Console,相同的命令在项目目录中工作 对我来说,这似乎是类似于bin路径的问题,但我找不到任何与此相关的主题。谢谢你的帮助 Ruby:2.5.3,Rails:4.2.11.1,Sidekiq:5.2.7 ent:1.8.1本质上,分叉进程很可能不会继承与运行控制台相同的环境,因此bundler无法加载正确的gems,因此无法找到selenium webdriver-您可以通过在命令中添加Rails环境变量来修复它,例如 $ rails console [1] pry(main)> fork { e
Ruby:2.5.3,Rails:4.2.11.1,Sidekiq:5.2.7 ent:1.8.1本质上,分叉进程很可能不会继承与运行控制台相同的环境,因此bundler无法加载正确的gems,因此无法找到selenium webdriver-您可以通过在命令中添加Rails环境变量来修复它,例如
$ 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
我说可能是因为您的控制台env Rails.env可能也没有用于selenium webdriver的gem组
虽然你的问题涉及到从控制台启动它,是否有理由需要从现有rails进程而不是从shell执行此操作?是否可以将您的Gemfile添加到问题中-您正在运行的环境似乎没有加载selenium,例如,从selenium webdriver gem,该命令已与rails_ENV={rails.ENV}一起使用但你的回答让我意识到了文件中的分组。我将gem放在测试组中,而在本例中,RAILS_ENV正在转移。我不想从控制台启动它,它只是一个示例。我必须根据用户的需求启动它,以便在登台时对一些临时队列进行处理。此处没有生产主管:
fork { exec "RAILS_ENV=#{Rails.env} bundle exec sidekiq -c 3 crawling_jobs -t 1 -L log/sidekiq.log"