我有一个ruby on rails项目,可与其他项目的API一起使用。对于开发和测试,我需要运行其他3个项目,所以当我开始守卫时,我正试图让它们运行起来。
有shell脚本启动服务,所以我使用了Guard回调来运行它们,但是shell脚本中的一些命令不起作用。例如,运行另一个rails服务器不起作用。由于bundle环境不同,它可能会失败,并且命令将在bundle中调用bundle(使用bundle执行guard)。
是否有其他方法可以获得启动服务的保护,还是有办法在bundle中执行bundle?
答案 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。