如何为脚本或批处理文件设置rails_env

时间:2010-02-08 17:34:42

标签: ruby-on-rails ruby

我把我的批处理文件放在lib文件夹中 并使用rails db配置,像这样的活动记录。

require "#{File.dirname(__FILE__)}/../config/environment.rb"

class Batch
  def hello
    Message.new do |t|
      t.title = "hello"
      t.save
    end
  end
end

batch = Batch.new
batch.hello

当执行批处理时

ruby lib/batch.rb

在开发环境中没关系

但是生产环境仍然保存开发数据库...

如何像这样设置rails_env batch.rb

ruby lib/batch.rb RAILS_ENV=production

2 个答案:

答案 0 :(得分:5)

初始化Rails环境,而不是放

require "#{File.dirname(__FILE__)}/../config/environment.rb"

使用script/runner启动批处理文件,并使用-e选项

指定环境

e.g。

script/runner -e production lib/batch.rb

我认为以上是The Rails编写和执行脚本的方式,该脚本需要初始化Rails框架才能工作。正如neutrino所述,替代方案是在命令前加上RAILS_ENV = ,例如

$ RAILS_ENV=production lib/batch.rb

这是一个标准shell功能,用于在执行命令之前设置环境变量。

答案 1 :(得分:2)

仅限FYI没有脚本/跑步者:

RAILS_ENV=production ruby lib/batch.rb