2009-05-28 57 views
0

我在application_helper.rb文件中軌幫手,看起來像這樣:如何使用配置文件改進rails輔助方法?

def external_link(name) 
    url = external_links[name] 
    if url.blank? 
     Rails.logger.error "No URL defined for external link [#{name}]!" 
     return "[URL undefined]" 
    end 
    return url 
end 

的「external_links」變量是應該從外部文件來採購的哈希值。該文件可以像紅寶石哈希或簡單的YML配置一樣簡單。

也許我錯過了一些東西 - 我想我可以在外部文件中定義紅寶石語法中的散列值,並從environment.rb中'require'它,但是這並不公開散列值幫手。

我該如何外部化一個紅寶石哈希,以便它將在應用程序幫助器方法中的「範圍內」?

回答

1

爲您指示使用基本YML文件,然後通過加載它:

config = YAML::load_file(RAILS_ROOT+'/config/external_urls.yml') 

然後你可以通過「配置」對象相應的訪問。如果文件在請求之間沒有改變,你可以緩存這個文件加載以供以後使用(所以它不會在每次使用時打開並解析),但這是性能優化,對於概念驗證不是關鍵。

2

我用Application Config,這讓我建立RAILS_ROOT /配置/ application_config.yml這樣的:

development: &defaults 
    items_per_page: 25 
    secure_with_basic_auth: false 
    base_url: development.com 
    test: 
    <<: *defaults 
    base_url: test.com 
    production: 
    <<: *defaults 
    base_url: production.com 

然後參考他們這樣的:

class FooController < ApplicationController 
    def index 
     @base_url = property(:base_url) 
    end 
    end 

另外還有AppConfig plugin,看起來甚至更好,但我還沒有嘗試過。

+0

我不喜歡AppConfig API的外觀,但簡單的ApplicationConfig插件看起來不錯,謝謝! – Lee 2009-05-29 15:34:15