【问题标题】:Change Database Adapter for Rails更改 Rails 的数据库适配器
【发布时间】:2013-12-13 17:28:33
【问题描述】:

我正在尝试使用 CouchDB 在本地创建一个 Rails 4.0 应用程序并部署在 heroku 上。我在本地安装并运行了 CouchDB,并为 heroku 安装了 Cloudant 插件。 Heroku 抱怨 DATABASE_URLrake assets:precompilestep 处无效。当我在本地运行它时(以及当我运行 rails server 时),我得到了明显的错误:

为数据库适配器指定了“sqlite3”,但 gem 没有加载

但是,我不想使用sqlite3,我想使用 CouchDB。由于缺乏更广为人知的选项,我正在使用couchrest_model gem,我在我的 Gemfile 中将它作为gem 'couchrest_model'。他们的 README 继续说,

只要您的 CouchDB 实例在 localhost 的默认端口 (5984) 上运行,CouchRest 模型就被配置为无需配置即可运行。

我可以理解为什么它不能与 Heroku 一起使用,因为我可能需要额外的配置(虽然我不确定那会是什么——我假设 Heroku 会自动处理),但是 CouchDB 是 在我自己的机器上的 localhost:5984 上运行。

我注意到config/database.yml 在开发/测试/生产中引用了sqlite3。如果我将这些注释掉,我会收到未指定任何连接适配器的投诉。

我必须做些什么才能至少让应用程序在本地运行 CouchDB,理想情况下也可以在 Heroku 上运行?

【问题讨论】:

  • 根据this,没有一个明确的 couchdb 适配器 gem 可以使用。我会尝试最受欢迎的,但它看起来已经过时了。
  • @dmtri.com 我对 Rails 真的不熟悉......你到底建议我做什么?

标签: ruby-on-rails heroku ruby-on-rails-4 couchdb


【解决方案1】:

您应该创建一个config/couchdb.yml 并设置您的配置,如下所示(查看Configuration section on the couchrest_model documentation

development:
  protocol: 'http'
  host: localhost
  port: 5984
  prefix: project
  suffix: development
  username: test
  password: user

对于 heroku,您可能需要指定 Cloudant 主机

production:
  protocol: 'https'
  host: sample.cloudant.com
  port: 5984
  prefix: project
  suffix: test
  username: production
  password: user

类似的东西

另外,你需要摆脱 Active Record

config/application.rb中,删除require rails/all并替换为

require "action_controller/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"

config/environments/development.rb,注释掉

# config.active_record.migration_error = :page_load

然后您应该能够删除 config/database.yml 和删除 sqlite3 gem 而不会出现 Active Record 错误

查看此SO post 以同时禁用 Rails 4 的活动记录

【讨论】:

  • 我已经按照我的问题中的说明添加了config/couchdb.yml。它不能解决问题
  • 您应该删除 Active Record,我刚刚编辑了问题并添加了该问题,希望对您有所帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
  • 2016-11-25
相关资源
最近更新 更多