设置 Crontab 以与 Cucumber 配合使用

设置 Crontab 以与 Cucumber 配合使用

我正在尝试设置 crontab 以与 cucumber 配合使用。到目前为止,我能够让 crontab 执行 ruby​​ 命令,但不能执行 cucumber 命令。

这是我在 crontab 中的内容:

          • ~/test.sh > ~/out.log 2> err.log

如果我在 test.sh 中执行此操作,它可以正常工作:

/ruby 的绝对路径 ~/test.rb

但是,如果我在 test.sh 中执行此操作,则会失败:

/绝对路径到黄瓜〜/ test.feature

这是它在 err.log 中打印出的内容:

没有要加载的文件——capybara/cucumber(LoadError)

但是,如果我在终端中运行 test.sh (/Absolute-path-to-cucumber ~/test.feature),它可以正常工作。


因此,我认为 cron 和终端使用的 ruby​​ 版本不同(因此存在环境问题)。

当我在终端中执行 $ruby -rpp -e 'pp ENV' 时,它给了我这个:

"_"=>"/用户/名称/.rvm/rubies/ruby-1.9.3-p392/bin/ruby"

当我在 cron 中执行相同的命令时,它在日志文件中给出了以下内容:

“_”=>“/usr/bin/ruby”

因此,看起来 cron 使用的是系统 ruby​​ (1.8.7),而终端使用的是用户 ruby​​ (1.9.3)。我尝试了所有我能找到的方法让 cron 使用 ruby​​ 1.9.3,但到目前为止还没有成功。

有人能给我一些提示或指示,告诉我下一步该怎么做吗?谢谢你的帮助。

答案1

cron 的默认路径是/usr/bin:/bin,默认 shell 是/bin/sh。它不读取任何配置文件,如 .bash_profile。

你能添加. ~/.rvm/scripts/rvm脚本吗?

或者bash -lc启动一个读取配置文件(如.bash_profile)的登录shell。

* * * * * bash -lc '~/test.sh > ~/out.log 2> ~/err.log'

相关内容