2010-05-27 75 views
0

我正在寫一個rake任務,它一次使用自定義的YAML文件導入方法來爲數據庫創建種子。在Rake任務中使用ActiveRecord :: Base.transaction?

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?

謝謝!

+0

那你的代碼親愛的? – Salil 2010-05-27 16:14:27

+0

這應該肯定包括代碼或至少一個樣本。此外,問題標題不涉及問題,也不解決方案.... – rpbaltazar 2017-04-18 02:39:47

+0

它應該,對吧? 7年後,我不記得實際問題/解決方案是什麼。如果可以的話,會刪除這個問題,但它不會允許我,因爲有人寫了一個答案。 – 2017-05-12 01:17:18

回答

3

也許你沒有在rake任務中包含'環境'?

rake task can't access rails.cache

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

沒有=>:環境中,您將無法訪問任何你的Rails應用程序的模型