【问题标题】:How do I pass environmental variables to a Rake task invoked from another Rake task?如何将环境变量传递给从另一个 Rake 任务调用的 Rake 任务?
【发布时间】:2014-02-27 09:42:48
【问题描述】:

我从另一个 Rake 任务中调用了三个 Rake 任务。第一个 Rake 任务要求在执行之前设置环境变量。

以下工作,但这意味着我失去了关键任务的所有输出:

namespace :deploy do

  task :staging => :environment do
    `EXAMPLE=something rake db:rebuild`
    Rake::Task["rake envs:push:staging"].invoke
    Rake::Task["rake app:push:staging"].invoke
  end

end

如何使用环境变量调用第一个任务并将其输出显示到终端?

【问题讨论】:

  • 答案有效吗?您应该将其中一项标记为正确。

标签: ruby-on-rails ruby rake


【解决方案1】:
ENV['EXAMPLE'] = 'something'
Rake::Task['db:rebuild'].invoke

【讨论】:

  • @PedroMorteRolo,确实如此。
  • 这对我不起作用(rake 12.0.0)。调用的任务似乎不知道我对环境所做的更改。
  • 编辑:它确实有效,我的问题似乎是我在更改之前实际上读取了另一个任务的命名空间中的环境。
  • 为我工作! Rails 4.x
【解决方案2】:

使用system 而不是反引号:

system("EXAMPLE=something rake db:rebuild")

【讨论】:

    猜你喜欢
    • 2019-11-28
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    相关资源
    最近更新 更多