在我的initialize方法中,我試圖編寫它,以便我可以傳遞哈希或yaml對象來初始化屬性值。從yaml或hash初始化屬性的安全方法
我YAML文件看起來像:
defaults: &defaults
host: localhost
port: 4565
timeout: 3
development:
<<: *defaults
test:
<<: *defaults
staging:
<<: *defaults
production:
<<: *defaults
目前,我有這樣的:
def initialize(options)
if options.respond_to? "has_key" && options.has_key? "defaults"
config = options["defaults"]
else
config = options
end
@hostname = config[:hostname]
@port = config[:port]
@timeout = config[:timeout]
end
這是目前不適合我的工作,我得到這個錯誤:
unexpected tSTRING_BEG, expecting keyword_then or ';' or '\n'
if options.respond_to? "has_key" && options.has_key? "defaults"
- 我怎樣才能加載正確的環境呢? (測試,開發,生產)
- 如果其中一個鍵不存在,我該如何拋出一個錯誤? (或至少說主要的,我需要肯定像主機名,端口)
空間似乎也很重要?困惑,沒想到這個! – Blankman 2012-03-08 18:55:12