我有一个ruby on rails
api_app
和一个锻炼test_app
的{{1}}。在开发模式下,我想从api_app
运行api_app
中的match:reset
耙任务。我正在尝试使用test_app
api_app
执行此操作时出现以下错误
#!/usr/bin/env ruby
require 'tty-command'
cmd = TTY::Command.new
Dir.chdir('../test_app') do
cmd.run 'run rake match:reset'
end
我尝试添加 Your Ruby version is 2.4.4, but your Gemfile specified 2.4.1 (Bundler::RubyVersionMismatch)
,但这不起作用。如何设置正确的环境以使其起作用?
答案 0 :(得分:0)
根据我对脚本所做的更改,该解决方案未经测试。
require 'tty-command'
require 'rake'
cmd = TTY::Command.new
cmd.run("rvm use 2.4.1")
Dir.chdir("../test_app") do
cmd.run(:rake, 'match:reset', env: {rails_env: :development})
end
答案 1 :(得分:0)
我无法将其与ruby命令文件一起使用。我认为这样做的原因是该文件在api_ppp
目录中与ruby一起运行,因此您不能更改为另一个ruby。我最终要做的是使用bash文件:
#!/bin/bash
cd ../test_app
source $HOME/.rvm/scripts/rvm
rvm use 2.4.4@test_app_2.4.4
BUNDLE_GEMFILE=../test_lab/Gemfile bundle exec rake -f ../test_app/Rakefile match:reset
只要答案已经过测试,我很乐意考虑使用ruby命令文件的答案。