2

我有一个 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")

是否有我绝对需要的特定需求声明?

4

1 回答 1

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
于 2012-08-21T16:11:42.523 回答