如何将Datamapper与Heroku Scheduler结合使用?

时间:2012-04-22 22:06:40

标签: ruby heroku sinatra datamapper

我有一个Postgres数据库,我在ruby Web服务器上使用Datamapper进行操作。我想尝试使用Heroku Scheduler每10分钟更新一次数据库部分。但是,当它尝试执行脚本时,它会继续发出此错误:

/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 :(得分: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