2013-11-27 107 views
3

我正在嘗試在本地創建一個使用CouchDB的rails 4.0應用程序,並將它部署在heroku上。我已經安裝並在本地運行CouchDB,以及用於heroku的Cloudant插件。 Heroku抱怨DATABASE_URLrake assets:precompile步驟無效。當我運行這個地方(以及當我運行rails server)我得到了明顯的錯誤:更改Rails數據庫適配器

Specified 'sqlite3' for database adapter, but the gem is not loaded

不過,我不希望使用sqlite3,我想使用CouchDB的。由於缺乏更好的已知選項,我正在使用couchrest_model寶石,並且我在Gemfile中使用它作爲gem 'couchrest_model'。他們的README接着說,

CouchRest Model is configured to work out the box with no configuration as long as your CouchDB instance is running on the default port (5984) on localhost.

我能理解爲什麼它不會與Heroku的工作,因爲我可能需要額外的配置(雖然我不知道這將是 - 我假設的Heroku需要照顧自動),但CouchDB 在我自己的機器上運行localhost:5984。

我注意到config/database.yml提到sqlite3開發/測試/生產。如果我評論這些,我得到的抱怨沒有指定任何連接適配器。

我必須做些什麼來至少讓本地的應用程序與CouchDB一起運行,理想情況下還是與Heroku一起運行?

+0

根據[this](https://rubygems.org/search?utf8=%E2%9C%93&query=CouchDB),沒有一個可以使用的確切的couchdb適配器gem。我會嘗試最流行的,但它看起來過時了。 –

+0

@ dmtri.com我真的不熟悉rails ......你究竟在暗示我做了什麼? –

回答

2

您應該創建一個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 

類似的東西

此外,你需要擺脫活動記錄

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寶石沒有得到有效記錄錯誤

看看這個SO post關於禁用導軌4的活動記錄以及

+0

我已經添加了我的問題中指定的'config/couchdb.yml'。它不能解決問題 –

+0

你應該刪除活動記錄,我剛剛編輯的問題,並補充說,希望這可以幫助 – user2262149