我在stackoverflow中跟踪了一些其他帖子,并使用rvm cron setup
成功地使用RVM设置了cron,并将一些ENV注入到crontab文件中。
当我在解决为什么dotenv
gem不起作用时,我意识到以下内容:
我将test.rb
放在文件路径/home/myuser/ruby/test.rb
中并拥有我的crontab
文件,如下所示:
* * * * * ruby /home/myuser/ruby/test.rb >> /home/myuser/ruby/output.log
当我将test.rb的输出与Dir.pwd
放在一起时。输出表明rb在/home/myuser/
目录而不是/home/myuser/ruby
目录中运行。
虽然我通过手动更改路径来修补此修补程序。但我想知道为什么会这样。
答案 0 :(得分:5)
默认情况下,用户的cron任务是从用户的主目录执行的。为了从正确的目录执行脚本,你必须" cd"它。
考虑将您的crontab更改为:
* * * * * cd /home/myuser/ruby && ruby ./test.rb >> /home/myuser/ruby/output.log
祝你好运!
答案 1 :(得分:0)
@Pawel Dawczak在评论中留下了答案。
解决方案是将crontab中的语句重写为
* * * * * cd /home/myuser/ruby && ruby test.rb >> /home/myuser/ruby/output.log
谢谢!