/ / Atualização do Datamapper falha no Rails 3.1 para o 2º repositório - ruby-on-rails-3.1, ruby-datamapper

Atualização do Datamapper falha no rails 3.1 para o segundo repositório - ruby-on-rails-3.1, ruby-datamapper

Estou tentando usar o Datamapper no meu aplicativo Rails 3.1 e estou tendo problemas para mapear modelos existentes em um segundo repositório.

Eu tenho a seguinte classe

class Arp
include DataMapper::Resource

storage_names[:passive] = "arp"

property :id, Serial, :field => "id"
property :ip_address, String, :field => "ipaddr"

def self.default_repository_name
:passive
end
end

Existem mais campos, mas por uma questão de simplicidade, comentei-os e obtive o mesmo erro. Aqui está o que eu recebo quando executo o rake db: migrate:

O Arp deve ter pelo menos uma propriedade ou muitos para um relacionamento para ser válido

Não tenho certeza do que está acontecendo, porque eu claramente tenho uma propriedade definida.

Aqui está a estrutura da tabela do mysql

+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id     | int(11)     | NO   | PRI | NULL    | auto_increment |
| ipaddr | varchar(15) | NO   |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+

Novamente, alguns campos foram removidos para maior clareza.

Eu tenho vários repositórios no meu arquivo database.yml no Rails e os configurei com base no guia da página do github dm-rails.

Aqui está uma versão abreviada desse arquivo.

passive_defaults: &passive_defaults
adapter: mysql
username: <USERNAME GOES HERE>
password: <PASSWORD GOES HERE>
host: localhost
database: passive

development:
database: portal
<<: *portal_defaults
repositories:
passive:
<<: *passive_defaults

Alguém viu o que estou fazendo de errado aqui? Obrigado.

Respostas:

1 para resposta № 1

Eu resolvi isso logo depois de fazer a pergunta.

A ordem da substituição self.default_repository_name importava. assim

class Arp
include DataMapper::Resource

def self.default_repository_name
:passive
end
storage_names[:passive] = "arp"

property :id, Serial, :field => "id"
property :ip_address, String, :field => "ipaddr"
end

trabalho.