Configurando DataMapper com um arquivo YAML

Você sabia que o DataMapper pode ser configurado com um hash especificando as opções? Embora não esteja muito claro em sua documentação, é possível!

Por exemplo, configurar um adaptador MySQL com DataMapper, seguindo a documentação:

DataMapper.setup( :default, 
"mysql://<user>:<password>@<hostname>:<port>/<database>")

Como posso obter o resultado com um Hash?

options = { adapter: mysql, hostname: "<hostname>", port: "<port>", 
user
: "<user>", password: "<password>" }
DataMapper.setup(:default, options)

“Ah, eu vi o que você fez aí!”. O DataMapper reconstitui o adaptador passado pelo Hashcria a conexão de banco de dados correta.

Você quer tornar ainda melhor? Coloque essas opções em um arquivo YAML:

#datbase.yml

adapter
: mysql
hostname
: "<hostname>"
port
: "<port>"
user
: "<user>"
password
: "<password>"

E depois carregue no DataMapper:

options = YAML.load_file('database.yml')
DataMapper.setup(:default, options)

Você também pode colocar várias configurações em um arquivo YAML e carregar vários DataMapper’s:

#datbase.yml

default
:
adapter
: mysql
hostname
: "<hostname>"
port
: "<port>"
user
: "<user>"
password
: "<password>"

another_database
:
adapter
: mysql
hostname
: "<another_hostname>"
port
: "<port>"
user
: "<another_user>"
password
: "<another_password>"
options = YAML.load_file('database.yml')
DataMapper.setup(:default, options['default'])
DataMapper.setup(:another, options['another'])