代码之家  ›  专栏  ›  技术社区  ›  Obromios

在另一个目录中运行rake任务

  •  0
  • Obromios  · 技术社区  · 7 年前

    我有一个 ruby on rails api_app 和A test_app 练习 APP应用程序 . 当我想运行开发模式时,从 APP应用程序 ,一个叫rake的任务 match:reset 那是在 测试应用程序 . 我正在尝试使用位于 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 回复  |  直到 7 年前
        1
  •  0
  •   Kedarnag Mukanahallipatna    7 年前

    根据我对脚本所做的更改文档,此解决方案没有经过测试。

    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
    
        2
  •  0
  •   Obromios    7 年前

    我无法使用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命令文件的答案,只要这个答案已经过测试。