在另一个项目中执行耙子任务



在同一台机器上,我有两个轨道项目/服务器。

从一台服务器,我需要从另一个项目中执行耙子任务。这意味着切换上下文和 rake 任务以在其 rails 项目上下文中运行。

该任务首先加载环境:

task update: :environment do .....

应该运行此任务的代码如下所示:

require 'open3'
module Tasks
def self.test
env_vars = {"RAILS_ENV"=>"development"}
cmd = "bundle exec rake store:update"
puts "#{cmd}".light_blue
opts = {:chdir => '/home/master/git/frontend'}
begin
stdout_str, error_str, status = Open3.capture3(env_vars, cmd, opts)
rescue => exception
puts "Command failed:"
puts "#{exception}".red      
end
puts "#{stdout_str}".green
if status.success?
puts "ok".light_green
puts "#{status.inspect}".yellow
else
puts "Command finished with error:"
puts "#{error_str}".light_red
end
end
end

从项目目录执行时,任务成功运行,但从上面的脚本中会抛出错误:

耙子中止了! 加载错误:无法加载此类文件 - 轨道/全部/home/csrhub/git/csrhub-frontend/config/application.rb:3:in>'require'

当然,在application.rb中有这样一行:

require 'rails/all'

但是有什么区别呢?从 bash 作品,从剧本没有。

如您所见,我正在使用open3- 在这种情况下应该是最好的。

我认为这与上下文有关。当我将命令cmd = "bundle exec rake store:update"替换为"rails -v"时,出现此错误:

RBENV:轨道:未找到命令

所以我认为问题来自没有查看正确的宝石文件。

对不起,我不允许发表评论。 我认为您想创建脚本来设置您的环境,然后调用 rake 任务。

从 Rakefile 执行 bash 命令

相关内容

  • 没有找到相关文章

最新更新