2012-04-22 8 views
2

私はRuby Webサーバー上でDatamapperを使って操作するPostgresデータベースを持っています。私はHeroku Schedulerを組み込み、データベースの一部を10分ごとに更新しようとしています。しかし、それはそれは、このエラーを与え続けてスクリプトを実行しようとしたとき:Heroku Schedulerと組み合わせてDatamapperを使用するには?

/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

私はあなたがセットアップにあなたのメインのアプリケーションファイルに接続しているものは何でも、あなたはおそらく、あなたのスケジュールされたスクリプトから呼び出す必要があり、スケジューラアプリとは別個に実行されますと信じています。 –

+0

これは正しいです。指定したコマンドを実行して新しいdynoを回転させます。 –

答えて

1

まず、スケジュールされたプロセスをデータベースにポイントする必要があります。そのため、Datamapper.setupをインクルードしますが、移行または初期化は行わないでください。

次に、データベースを読み取る必要があります。おそらくdatamaは、あなたのアプリの使い方と同じように、オブジェクトモデルを作成したいと思うでしょう。私は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 
関連する問題