【问题标题】:Getting Ruby environment variables from Rake从 Rake 获取 Ruby 环境变量
【发布时间】:2013-01-22 11:02:28
【问题描述】:

我有一个 Rakefile,其中包含部署或构建应用程序的任务。此 Rakefile 用于生产和开发。

我希望build 任务知道环境是什么。这可以在我运行任务时不向任务传递参数的情况下完成吗?可以用环境变量来完成吗?

在开发过程中,我需要的任务是这样的:

task :build => :clean do
  compass compile -e development
  jekyll
end

在生产中,像这样:

task :build => :clean do
  compass compile -e production
  jekyll
end

【问题讨论】:

  • 是的,rake 任务应该可以访问ENV
  • 我从来没有使用过ENV,所以如果有人能说明我将如何设置变量(并得到它)。我是红宝石 n00b。

标签: ruby rake environment-variables rakefile


【解决方案1】:

是的,您可以使用环境变量。这是骨架实现:

task :build do |t, args|
  puts "Current env is #{ENV['RAKE_ENV']}"
end

用法:

% rake build
Current env is 

% RAKE_ENV=development rake build
Current env is development

【讨论】:

  • 我每次运行命令时都必须指定RAKE_ENV,还是它可以为我记住?
  • ENV 包括新进程已知的所有环境变量。因此,如果您将该 var 放入 .profile(或您使用的任何 init 文件)中,它将在系统重新启动时被记住。顺便说一句,您可以选择任何名称,不一定是 RAKE_ENV。只要确保它足够独特,就不会覆盖任何其他环境变量。
  • 我只是在我的项目目录中创建一个.profile 文件还是这是系统范围的事情?
  • @OliverJosephAsh:它依赖于系统。不同的系统(和外壳)使用不同的文件。但这在这里有点离题。您应该在Super User 上询问(如何持久化环境变量)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
  • 2013-12-04
  • 1970-01-01
相关资源
最近更新 更多