shell脚本通过cron和rvm执行rails runner
在 crontab
中,我有:
0,30 * * * * sh /path/to/my/script.sh
在我的 script.sh
中,我有:
#!/bin/bash
rvm use 1.9.2@r321
cd /path/to/my/proyect
rails runner rails_script.rb
但它不会加载 1.9.2 中的
,它保留在系统设置上,在我的例子中为rvm
1.8.7
。
我应该如何确保运行程序在 1.9.2
中使用 gemset r321
在 rvm
下运行?
In crontab
I have:
0,30 * * * * sh /path/to/my/script.sh
and in my script.sh
I have:
#!/bin/bash
rvm use 1.9.2@r321
cd /path/to/my/proyect
rails runner rails_script.rb
But it doesn't load the rvm
in 1.9.2
, It stays on the system setting which is 1.8.7
in my case.
What should I do to make sure the runner is running under rvm
in 1.9.2
with the gemset r321
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
至少有 4 种方法可以让 cron 与 RVM 一起工作: https://rvm.io/integration/cron/< /a>
就我个人而言,我更喜欢
2。在shell脚本中加载RVM环境文件。
there are at least 4 ways to make cron working with RVM: https://rvm.io/integration/cron/
personally I prefer the
2. Loading RVM environment files in shell scripts.
我认为你的问题是:RVM 仅在你的用户 shell 中正确工作。记得之后
安装rvm你必须写一些类似的东西。
.zshrc 或 .bashrc 中的
告诉 cron 的用户使用 rvm,因为 rvm 必须作为函数加载
对于不加载 rvm 作为功能的用户,它将无法工作,并且会自动使用系统 ruby 版本。
例子:
或者,您也可以安装 rvm 作为多用户显示: 在此处输入链接描述
I think your problem is: RVM worked only correct in your user shell. Remember after
installing rvm you must write somethink like.
in your .zshrc or .bashrc
Tell cron with wich user you use rvm because rvm must load as a function
and with a user that not load rvm as a function it will not worked and the system ruby version is used automatically.
Example:
alternativly you can install rvm as multiuser show at: enter link description here