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'変数は、外部ファイルから取得する必要のあるハッシュです。ファイルは、rubyハッシュまたは単純なYML構成のような単純なものにすることができます。

何かが足りないかもしれません-外部ファイルでruby構文でハッシュを定義し、environment.rbからそれを「要求」できると思いましたが、ヘルパーでハッシュ変数を公開していません。

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

4

2 に答える 2

2

私はApplicationConfigを使用しています。これにより、RAILS_ROOT / config/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プラグインもあり、見た目はさらに良くなりますが、まだ試していません。

于 2009-05-28T16:14:17.670 に答える
1

指定したとおりに基本的なYMLファイルを使用し、次の方法でロードします。

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

次に、それに応じて「config」オブジェクトを介してアクセスできます。リクエスト間でファイルが変更されない場合は、後で使用するためにこのファイルのロードをキャッシュできます(したがって、使用するたびにファイルが開かれたり解析されたりすることはありません)が、これはパフォーマンスの最適化であり、概念実証には重要ではありません。

于 2009-05-28T16:11:54.757 に答える