Sinatra + Heroku + Datamapper使用dm-sqlite-adapter部署问题
出于某种原因,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
数据映射器设置:
# 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 install
说Using do_postgres
和Using dm-postgres-adapter
。 我错过了一些关于Datamapper设置的内容吗?
好吧,Heroku上有太多Rails应用程序,我认为共享数据库存在是理所当然的。 heroku config
既未显示DATABASE_URL
也SHARED_DATABASE_URL
显示SHARED_DATABASE_URL
。
发布heroku addons:add shared-database:5mb
解决了这个问题。
奇怪的是,尽管在Gemfile中有’pg’gem,但db并没有自动添加。
引自http://devcenter.heroku.com/articles/cedar :
在以下任何一种情况下,Heroku共享的PostgreSQL数据库(
shared-database:5mb
)将自动添加到您的应用程序中:
- 该应用程序是一个Rails应用程序
pg
gem在Gemfile
指定
尝试使用DataMapper.setup(:default, ENV['DATABASE_URL'] || 'postgres://user:password@hostname/data/mydatabase.db')
。 Heroku可能正在查看协议,因此需要SQLite的依赖项。
- Datamapper成为String
- 如何使用DataMapper仅获取模型的指定字段?
- DataMapper:创建新记录或更新现有记录
- 使用dm-accepts_nested_attributes和dm-is-tree在rails中的2个模型的嵌套表单
- 通过DataMapper从SQLite内存DB中没有这样的表错误
- DataMapper因关系而无法删除记录
- 使用RSpec测试Datamapper模型
- 如何告诉DataMapper对DateTime属性使用“timestamp with time zone”?
- 未定义的方法auto_upgrade! 将Sinatra / DataMapper应用程序推送到Heroku时