我有一个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")
我绝对需要一定的要求声明吗?
答案 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