Rails Rails 在调用其它项目的 Rake 命令会不出现失败?

lb563 · 2013年12月04日 · 最后由 kgen 回复于 2013年12月04日 · 2328 次阅读

Rails 项目需要自动去执行另外一个项目的 rake 命令. 例如:cd /data/home/app/utils/backup_db && bundle exec rake backup:db day=2013.12.02

每次通过 Rails 的 Controller 来执行这个 shell 命令时会失败 (没有成功执行该脚本的代码).但是手动执行这个语句时会执行成功。

我当是猜想是和 shell 的环境有有关系于是尝试: source ~/.bash_profile && cd /data/home/app/utils/backup_db && bundle exec rake backup:db day=2013.12.02 ~/.bash_profile 里面设置所需要的环境变量例如:Ruby 的环境什么的。

但是这样设置后执行也没有成功。希望各位大神帮忙出出主意,指点一下。

莫非是权限问题?

然后就是通过

system('call cmd')

来调用命令跟用

`call cmd`

有细微的不同(我也一下忘记有啥不一样了,自己找文档看看吧

环境变量差异。

另外,为什么要这么做?在一个 Web 系统中执行系统命令是不常见且非常不安全的设计。 至少也要推送到队列里面,然后单独一个进程来处理吧,比如 delayed_job 之类的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号