【问题标题】:Using whenever gem with sinatra每当 gem 与 sinatra 一起使用
【发布时间】:2014-02-13 19:59:46
【问题描述】:
#config/scheduler.rb

set :output, 'log/cron.log'

every 1.minutes do
  rake 'reports:generate'
end

当我运行crontab -l 时,我得到以下输出:

* * * * * /bin/bash -l -c 'cd <path-to-app> bundle exec rake reports:generate --silent >> log/cron.log 2>&1'

首先,它似乎使用我的system ruby,即1.8.7,有没有办法改变这个?

其次,任务没有运行,但在我的cron.log 中显示的唯一内容如下:

Your Ruby version is 1.8.7, but your Gemfile specified 2.0.0

我已经尝试puts 登录日志但没有成功,所以我基本上不知道发生了什么。似乎任务正在启动,但随后失败,没有任何内容写入日志。我不知道如何调试这个,所以请帮忙。

我在 OS X 上,我的应用程序在 Sinatra 上运行。

编辑:我正在使用rbenv 来管理我的 ruby​​ 版本,所以我想我必须告诉 cron 作业以某种方式加载 rbenv?当我 cd 进入应用程序的文件夹并运行 ruby -v 我得到 ​​p>

ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin12.5.0]

【问题讨论】:

  • 你当前的ruby版本是1.8.7,切换到2.0.0

标签: ruby cron sinatra whenever


【解决方案1】:

看来问题出在rbenv,不一定是sinatrawhenever。这解决了我的问题:

#schedlue.rb
command "cd #{Dir.pwd} && RACK_ENV=#{environment} rbenv exec bundle exec rake reports:generate"

通过添加rbenv exec,我们在运行 rake 任务之前成功加载了正确的 ruby​​ 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2015-04-14
    • 2016-12-06
    • 1970-01-01
    • 2016-08-10
    • 2014-11-15
    相关资源
    最近更新 更多