9/14/2006

database.yml 要注意的地方

今天遇到一個網友的一個小問題
當他在 ruby script/generate model abc 時
出現了這個 error
in `establish_connection': development database is not configured (ActiveRecord::AdapterNotSpecified)

看到這個問題,心中不自覺想到是 database.yml 設定問題
但是我發現到
Rails 根本就不管有沒有這個 database ,他都會 generate 這個 model file
或是給錯誤的帳號密碼設定,他依舊會沒 error 的 generate 這個 model file
也就是,他不會真的去 connect database 去查真的有沒有這個 table
所以不是這個問題

那到底是那裡的問題呢?

我發現到將
development:
___adapter: mysql
___database:
___username: root
___password:
___host: localhost

改成
developmentlalal:
___adapter: mysql
___database:
___username: root
___password:
___host: localhost

就會出現這個 error
也就是說,Rails 雖然不會 connect database
但是 generator 會先去查是不是有這個config

我就請他 show 一下 database.yml
發現到他是這樣的
development:
adapter: mysql
database:
username: root
password:
host: localhost
答案揭曉,YAML檔案沒有縮排

其實大家可能對 YAML 不太了解
YAML 是靠縮排跟 : 來代表結構的 ( 有點像 python )
縮排的 element 就是上面的 element 的 sub element

這告訴我們在 YAML 裡面,請注意縮排

沒有留言: