Rails 在 rails 中 call shell 到另外一个项目中执行命令?

lb563 · 发布于 2012年08月08日 · 最后由 Freeman1990 回复于 2017年09月22日 · 2359 次阅读
257

当前rails 项目 /mrli/dev/cms 现在我在action中执行如下命令:

system "cd /mrli/dev/checker && bundle exec cucumber -p prod"

上面的命令是生成一个report.html文件到checker/public目录中

当我请求到这个action中的时候,却没有生成report.html文件,也就是说action没有 执行这个命令.

请问大家是不是在rails中执行shell命令不能cd到其它项目中执行呢?

共收到 10 条回复
8

可以的啊

1.9.3p194 :004 > system "cd /tmp && echo `pwd`"
/tmp
 => true
257

#1楼 @hooopo 确实是可以在consloe环境下运行:

[4] pry(main)> system "cd /mrli/dev/checker && bundle exec cucumber -p prod"
Using the prod profile...
=> false

但是同样的在action中就没有执行成功:

def gen_report 
  system "cd /mrli/dev/checker && bundle exec cucumber -p prod"
  redirect_to root_path
end
8

#2楼 @lb563 返回false说明意外终止了 你把输出打出来

1342

我怎么觉得还需要考虑什么权限用户之类的东东

257

#3楼 @hooopo 还有一个,我用rails s启动服务来执行这个命令就能成功,但是用passenger+nginx的方式就不行.

257

#4楼 @ywjno 具体点呢?我感觉是passenger那里出了问题.

1342

#6楼 @lb563 比如说用户是否有生产文件的权限,或者当前用户是否有操作文件夹权限之类的

我也就是突然想到这方面,不一定就是这个原因。。。

96

你看看是不是环境有问题哦,在里面把当前的env给打出来。 bundle 不一定在当前path下有。

257

确实问题是文件的权限

D37657
257lb563 回复

请问是什么原因导致的这个问题? 我也遇到了类似的问题。 rails 调用其它脚本不成功。

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