2009-05-28 6 views
0

私はこのようになります私のapplication_helper.rbファイル内のレールのヘルパーがあります設定ファイルでレールヘルパーメソッドを改善するにはどうすればよいですか?

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設定などの単純なものにすることができます。

多分私は何かが欠けている - 私は、外部ファイルのRuby構文でハッシュを定義することができ、environment.rbから 'それを必要とする'と思ったが、ハッシュ変数を公開していない。ヘルパー。

アプリケーションヘルパーメソッドで「スコープ内」になるように、どのようにしてルビーハッシュを外部化できますか?

答えて

1

はあなたが示すように、基本的なYMLファイルを使用して、経由して、それをロードします。そして、あなたはそれに応じて、「設定」オブジェクトを介してアクセスすることができます

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

。ファイルがリクエスト間で変更されない場合は、後で使用するためにこのファイルをキャッシュすることができます(そのため、それぞれの用途でオープンされず解析されません)が、パフォーマンスの最適化であり、概念実証には重要ではありません。

私は私がRAILS_ROOT/configに/ application_config.ymlこのように設定することができます Application Config、使用
2

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

関連する問題