我正在尝试构建一个快速的 Sinatra 应用程序来调用一些需要自己的 Bundler env 才能运行的测试 ruby 脚本。
在我的 Sinatra 应用程序中形成一个方法,我想运行类似的方法
system("cd /test_app/; bundle exec ruby some_file.rb")
由于 bundle 程序设置其环境的方式,这不起作用。有没有办法启动一个新的 shell session 来执行我的脚本,以便它可以从 Sinatra 运行?
或者还有其他方法可以做到这一点吗?基本上我唯一的要求是这些脚本可以从网页上的链接触发,以便一些团队成员可以启动测试流程。
最佳答案
这似乎有效:
Dir.chdir "/test_app"
`bundle exec ruby some_file.rb`
在启动 sinatra 以获得正确的 ruby 之前,我还需要 rvm use ruby-1.9.2-p320
。 rvm 不喜欢在 ruby 进程中被告知要改变自己。 (这很有道理!)
(使用反勾号而不是 system() 可以得到输出,这样你就可以打印它或诸如此类的东西。)
关于ruby - Sinatra 执行/系统 'bundler exec',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11507998/