ruby-on-rails - 每当 gem 在开发环境中时,rails 4.2.0 都不起作用

标签 ruby-on-rails development-environment whenever

大家好,我有这样的问题:

我正在使用带有rvm gemsets的rails 4.2.0(使用正确的ruby版本和安装了gem的正确gemset)。 我正在尝试使用每当 gem 进行一些 cron 任务,但我无法使其工作。

这就是我所拥有的:

Gemfile

gem 'whenever', :require => false

型号

class SomeModel < ActiveRecord::Base
end

schedule.rb

set :environment, :development

every 1.minute do
  runner "SomeModel.create"
end

使用后

whenever --update-crontab store

我的 Crontab

# Begin Whenever generated tasks for: /home/user/project/config/schedule.rb
* * * * * /bin/bash -l -c 'cd /home/user/project && bin/rails runner -e development '\''SomeModel.create'\'''

# End Whenever generated tasks for: /home/user/project/config/schedule.rb

在 cron.log 中,我看到任务已执行,但我在 db 中没有看到任何新对象(我正在使用 mysql)。

所以我尝试用模型创建新项目。我使用 mysql-lite 并在具有相同类型任务的 gem 时添加。然后我更新了 crontab,每当开始工作正常时,直到我使用 mysql 而不是 mysql-lite。

我没有发现任何使用 mysql 的故障排除以及无论何时文档,所以我坚持这样做(使用控制台我可以毫无问题地创建对象)。

最佳答案

使用计划中的输出帮助我找到问题。

我使用了特定的 gem 集,但没有在我的日程中指定它。 这就是我出错的原因。每当 gem 尝试使用与我在项目中使用的 gemset 不同的默认 gemset 时。

因此有两个选项可以解决问题,使用默认的 gemset 或在计划中指定您的 gemset。

设置 gem 和环境的示例:

set :environment, :development

rake :

job_type :rake, "cd :path && $HOME/.rvm/scripts/rvm && rvm use 2.2.0@somename && rake ':task' :output"

运行者:

job_type :runner, "cd :path && $HOME/.rvm/scripts/rvm && rvm use 2.2.0@somename && bin/rails runner ':task' :output"

关于ruby-on-rails - 每当 gem 在开发环境中时,rails 4.2.0 都不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821745/

相关文章:

ios - 如何在 iOS 应用程序中使用 Objective C 解析 Ruby on rails webservice

windows - 如何从开发中服务 https Aurelia

ruby-on-rails - 运行 cron 作业时出错 `require' : cannot load such file -- bundler/setup (LoadError)

ruby-on-rails - 每当 rails 3 ubuntu 的 crontab 文件中的 PATH

ruby-on-rails - 我如何从 Rails 中的模型中保存

ruby-on-rails - Rails 参数中复制和克隆的明显问题

python - 在 ubuntu 上学习 python 3.0

ruby-on-rails - 延迟作业与 cron

ruby-on-rails - Webpacker 找不到应用程序

git - 生产和开发环境同步