【问题标题】:Using ActiveRecord::Base.transaction in a rake task?在 rake 任务中使用 ActiveRecord::Base.transaction?
【发布时间】:2010-05-27 16:07:52
【问题描述】:

我正在编写一个 rake 任务,它在某一时刻使用自定义 YAML 文件导入方法来为数据库播种。

rake 任务如下所示:

desc "Seed the database with production/ data."
task :production => :environment do     
  import_yaml 'seed/production'
end

在导入代码的某一时刻,我有:

ActiveRecord::Base.transaction do

尝试运行 rake 任务会抛出:

You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]

堆栈跟踪指向代码中的上述行。

有没有办法在 rake 任务期间实例化 ActiveRecord::Base?

谢谢!

【问题讨论】:

  • 这绝对应该包括代码或至少一个示例。此外,问题标题与问题无关,也与解决方案无关......
  • 应该是吧? 7 年后,我不记得实际的问题/解决方案是什么。如果可以的话,我会删除这个问题,但它不允许我这样做,因为有人写了答案。

标签: ruby-on-rails rake yaml


【解决方案1】:

也许你没有在 rake 任务中包含“环境”?

rake task can't access rails.cache

task (:my_rake_task => :environment) do
    # ....
end

没有 => :environment,您将无法访问任何 Rails 应用模型

【讨论】:

    猜你喜欢
    • 2012-12-19
    • 2015-10-05
    • 2010-10-27
    • 2011-12-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    相关资源
    最近更新 更多