在Guard回调中执行bundler任务

时间:2014-02-19 16:35:21

标签: ruby-on-rails bundler guard

我有一个ruby on rails项目,可与其他项目的API一起使用。对于开发和测试,我需要运行其他3个项目,所以当我开始守卫时,我正试图让它们运行起来。

有shell脚本启动服务,所以我使用了Guard回调来运行它们,但是shell脚本中的一些命令不起作用。例如,运行另一个rails服务器不起作用。由于bundle环境不同,它可能会失败,并且命令将在bundle中调用bundle(使用bundle执行guard)。

是否有其他方法可以获得启动服务的保护,还是有办法在bundle中执行bundle?

2 个答案:

答案 0 :(得分:0)

不确定,如果这会有所帮助,但您可以尝试在没有bundle exec

的情况下开始警惕

答案 1 :(得分:0)

当您从Guard回调中执行shell脚本时,您需要将调用包装在Bundler.with_clean_env中。

例如:

Bundler.with_clean_env { system("./start_other_app.sh") }

这清除了Bundler内部使用的环境变量,以便您可以在新的Bundler上下文中运行其他应用程序。

有关详细信息,请参阅http://bundler.io/v1.3/man/bundle-exec.1.html#Shelling-out