2012-04-22 20 views
2

我有一個Postgres數據庫,我在我的Ruby Web服務器上使用Datamapper進行操作。我正在嘗試合併Heroku Scheduler來每10分鐘更新一次數據庫的部分。然而,當它試圖執行腳本就一直給這個錯誤:如何將Datamapper與Heroku Scheduler結合使用?

/app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.0/lib/dm-core/repository.rb:72:in `adapter': Adapter not set: default. Did you forget to setup? (DataMapper::RepositoryNotSetupError) 

當服務器啓動數據庫初始化,那麼爲什麼不能在此腳本更新數據庫就像我通常會在其他地區做代碼。

例如劇本由調度器調用,將包含線,如:

User.update(:user_x => "whatever") 

有一定要求發言。我絕對需要?

+1

我相信,調度運行,從您的應用程序分開的,所以無論你在你的主應用程序文件設置有連接,你應該從你的計劃的腳本中調用。 – 2012-04-23 02:14:56

+0

這是正確的。它會啓動一個新的測功機,執行你指定的命令。 – 2012-04-23 09:56:22

回答

1

首先,您需要將計劃進程指向您的數據庫,因此包括Datamapper.setup,但不要遷移或初始化。

然後你需要讀取數據庫。您可能希望datamapper創建對象模型,就像您的應用程序使用的一樣。我一直在使用dm-is-reflective

require 'data_mapper' 
require 'dm-is-reflective' 
dm = DataMapper.setup(:default, ENV['DATABASE_URL']) 

class User 
    include DataMapper::Resource 
    is :reflective 
    reflect 
end 

p User.fields