Запустить грабли в другом каталоге - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть ruby on rails api_app и test_app, который выполняет api_app.В режиме разработки, который я хочу запустить, из api_app выполняется задача rake match:reset, которая находится в test_app.Я пытаюсь сделать это с помощью файла ruby, который находится в 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)

Я попытался добавить cmd.run 'rvm use 2.4.1' но это не работаетКак установить правильную среду, чтобы она работала?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Я не мог заставить это работать с командным файлом ruby.Я думаю, что причина этого в том, что файл запускается с ruby ​​из каталога api_ppp, поэтому вы не можете перейти на другой 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, если ответ был протестирован.

0 голосов
/ 19 сентября 2018

Это решение не тестировалось, основываясь на документации, которую я внес в скрипт.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...