我把我的批处理文件放在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
答案 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