我有一个postgres数据库,在我的ruby web服务器上使用datamapper进行操作。我正在尝试合并heroku调度程序,每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")

有什么我绝对需要的要求声明吗?

最佳答案

首先,您需要将计划的进程指向数据库,因此请包含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

关于ruby - 如何将Datamapper与Heroku Scheduler结合使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10272533/

10-12 13:09