Sinatra + Heroku + Datamapper使用dm-sqlite-adapter部署问题

时间:2012-01-18 15:26:45

标签: ruby heroku sinatra datamapper

出于某种原因,heroku尝试要求dm-sqlite-adapter,即使它应该在这里使用Postgres。请注意,当我打开任何URL时都会发生这种情况 - 而不是在git push本身。

我构建了一个默认的Facebook应用程序。

Gemfile:

source :gemcutter

gem "foreman"

gem "sinatra"
gem "mogli"
gem "json"
gem "httparty"
gem "thin"
gem "data_mapper"
gem "heroku"

group :production do
    gem "pg"
    gem "dm-postgres-adapter"
end

group :development, :test do
    gem "sqlite3"
    gem "dm-sqlite-adapter"
end

Datamapper设置:

# Setting up the database
DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/data/mydatabase.db")

打开任何URL时的相关日志片段:

Starting process with command `bundle exec thin -R config.ru start -p 34984`
2012-01-18T15:11:55+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.0/lib/dm-core/adapters.rb:163:in `require': no such file to load -- dm-sqlite-adapter (LoadError)
2012-01-18T15:11:55+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/dm-core-1.2.0/lib/dm-core/adapters.rb:163:in `load_adapter'

尝试了相关的解决方案,但到目前为止没有任何帮助。

BTW:bundle installUsing do_postgresUsing dm-postgres-adapter。我错过了有关Datamapper设置的内容吗?

2 个答案:

答案 0 :(得分:9)

好吧,在Heroku上有太多Rails应用程序,我认为共享数据库存在是理所当然的。 heroku config未显示DATABASE_URLSHARED_DATABASE_URL设置。

发布heroku addons:add shared-database:5mb解决了这个问题。

奇怪的是,尽管在Gemfile中有'pg'宝石,但db并没有自动添加。

引自http://devcenter.heroku.com/articles/cedar

  

Heroku共享PostgreSQL数据库(shared-database:5mb)将是   在以下任何情况下自动添加到您的应用中:

     
      
  • 该应用是Rails应用
  •   
  • pg
  • 中指定了Gemfile gem   

答案 1 :(得分:3)

尝试改为DataMapper.setup(:default, ENV['DATABASE_URL'] || 'postgres://user:password@hostname/data/mydatabase.db')。 Heroku可能正在查看协议,因此需要SQLite的依赖。