加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – Heroku和Datamapper问题

发布时间:2020-12-17 01:49:09 所属栏目:百科 来源:网络整理
导读:我可以在Heroku上启动一个基本的应用程序,显示带有’/’的消息……工作得很好.但是,每当我尝试使用datamapper添加sqlite时,事情就会崩溃. 为了查看我的应用程序结构,请查看github上的项目.我保持代码非常简单. 在heroku的日志中我得到: 2011-06-26T21:28:36
我可以在Heroku上启动一个基本的应用程序,显示带有’/’的消息……工作得很好.但是,每当我尝试使用datamapper添加sqlite时,事情就会崩溃.

为了查看我的应用程序结构,请查看github上的项目.我保持代码非常简单.

在heroku的日志中我得到:

2011-06-26T21:28:36+00:00 app[web.1]: /app/.bundle/gems/ruby/1.9.1/gems/dm-core-1.1.0/lib/dm-core/adapters.rb:163:in `require': no such file to load -- dm-postgres-adapter (LoadError)

关于这一点的是我没有使用postgres,所以我很困惑为什么这么说.

解决方法

“关于这个问题的是我没有使用postgres,所以我很困惑为什么会说这个.”

你正在使用Heroku,所以你正在使用Postgresql.

在你的app.rb中你有这一行:

DataMapper::setup(:default,ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/notes.db")

我猜这是从the Heroku database docs开始的.这行基本上是说“检查环境变量’DATABASE_URL’,如果设置使用它作为数据库url,否则使用Sqlite url”.在本地运行此环境变量将不会被设置,因此您将使用Sqlite网址,但在Heroku上,这将被设置为类似的内容(请参阅上面链接的页面):

postgres://username:password@hostname/database

Datamapper会看到这是一个Postgresql url,并尝试要求postgres适配器,它没有安装,因此会导致您看到的错误.

最好的解决方案是在本地安装Postgresql,以便您的开发和生产环境尽可能相似.如果您不能这样做,或者不想这样做,您可以在本地指定Sqlite适配器,并在生产中指定Postgres适配器.它在Gemfile中看起来像这样:

group :development do
  gem 'dm-sqlite-adapter'
end

group :production do
  gem 'dm-postgres-adapter'
end

如果你这样做,你需要告诉Heroku在安装宝石时要忽略哪些组,请参阅Heroku Gem Bunder docs.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读