2012年9月14日 星期五

[宅] ROR筆記(1) - "ActiveRecord::ConnectionNotEstablished"問題

因為考慮到後期的延伸以及功能性,我捨棄了預設與ROR綁定的sqlite,改用postgresql來做為網站的資料庫,在設定好database.yml後,在routing時卻發生了ActiveRecord::ConnectionNotEstablished的錯誤訊息。上網survey一下才發現原來是資料庫的相關設定不夠完全,所以整理了一下設定資料庫所必需的步驟:
(單純只是個page reguest也要過sql那一關...是要整誰...Orz)

1. database.yml : 

在這個檔案中你可能會看到三個設定分別是development, test, production,分別是在開發、測試、正式上線時所用的三種模式,基本上應該是要長這樣:

development:
  adapter: postgresql
  database:[給ROR使用的資料庫]
  pool: 5
  timeout: 5000
  username: [給ROR使用的帳號,必須有全域的CREAT權限]
  password: [密碼]
  host: [你的database路徑]
尤其是最後一句特別要注意,因為預設使用的sqlite是不用安裝且在本機端運行的database,所以在原本的設定並沒有host這個項目,要自己加上去。
以上是以development mode為例,其他的mode也是差不多的概念。

2. gemfile:

這個檔案可以在專案的根目錄裡找到,其中有一行會是 : gem 'sqlite3'
這是提示系統說我們需要用到sqlite的gem,在這邊請改成" gem 'pg' "

3. 安裝gem pg:

在gemfile中做了使用postgres的設定卻沒安裝postgres的gem是跑不起來的,這時請在commend line中打"gem install pg"就會安裝好了。
貓桑一開始安裝成gem install postgres也是成功的,但卻發現那是比較舊的postgres driver,在2008年後就不被支援了,當然也跑不起來。