ruby - Sinatra 执行/系统 'bundler exec'

标签 ruby shell sinatra bundler

我正在尝试构建一个快速的 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/

相关文章:

bash - 从当前目录获取文件并在同一行打印具有相同扩展名的文件

ruby - 以相同的 JSON 父项和子项返回数据库结果

具有多部分发布请求的 Ruby Sinatra

linux - 如何重命名文件夹中的所有文件并创建重命名映射

mysqldbcompare 失败,模式名称中包含 '-'

ruby - 我如何使用 Rails 4 在 rake 进程中运行 'cmd' 命令

c - 是否可以在运行前将 Ruby 转换为 C?

ruby - 如何强制 Rack :session + sinatra to read "rack.session" from params instead of cookies

ruby - 在 cucumber Around hook 中修改 proc 中的实例变量

javascript - 如何调整模态窗口的 JavaScript