Configurando la Base de Datos en Heroku con DataMapper. Despliegue

Heroku utiliza la base de datos PostgreSQL y una URL en una variable de entorno ENV['DATABASE_URL'].

configure :development do
  DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/development.db")
end

configure :production do
  DataMapper.setup(:default, ENV['DATABASE_URL'])
end

Estas líneas especifican que se usa SQLite en desarrollo y PostgreSQL en producción. Obsérvese que el Gemfile debe estar coherente:

[~/sinatra/sinatra-datamapper-jump-start(master)]$ cat Gemfile
source 'https://rubygems.org'
gem "sinatra"
gem "slim"
gem "sass"
gem "dm-core"
gem "dm-migrations"
gem "thin"
gem "pg", :group => :production
gem "dm-postgres-adapter", :group => :production
gem "dm-sqlite-adapter", :group => :development
o mejor:
group :production do
    gem "pg"
    gem "dm-postgres-adapter"
end

heroku create ...

git push heroku master

heroku open

heroku logs --source app

Ahora ejecutamos la consola de heroku:

heroku run console
lo que nos abre una sesión irb.

Ahora creamos la base de datos en Heroku:

[~/sinatra/sinatra-datamapper-jump-start(master)]$ heroku run console
Running `console` attached to terminal... up, run.8011
irb(main):001:0> require './main'
=> true
irb(main):002:0> DataMapper.auto_migrate!
=> #<DataMapper::DescendantSet:0x007fb89c878230 @descendants=#<DataMapper::SubjectSet:0x007fb89c8781b8 @entries=#<DataMapper::OrderedSet:0x007fb89c878190 @cache=#<DataMapper::SubjectSet::NameCache:0x007fb89c878168 @cache={"Song"=>0}>, @entries=[Song]>>>
irb(main):003:0>
Véase también la practica TicTacToe 45.28 y el capítulo Despliegue en Heroku [*]. .

Casiano Rodríguez León
2015-01-25