如何使用配置文件改进rails helper方法?

时间:2009-05-28 16:01:50

标签: ruby-on-rails configuration external helper

我的application_helper.rb文件中有一个rails helper,如下所示:

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中'require'它,但是这不会在帮助器中公开哈希变量

如何将ruby哈希外部化,使其在应用程序助手方法中处于“范围内”?

2 个答案:

答案 0 :(得分:2)

我使用Application Config,这让我可以像这样设置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 plugin,看起来更好,但我还没有尝试过。

答案 1 :(得分:1)

使用您指定的基本YML文件,然后通过以下方式加载:

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

然后您可以通过“config”对象相应地访问它。如果文件在请求之间没有变化,您可以缓存此文件加载以供以后使用(因此在每次使用时都不会打开和解析),但这是性能优化,对于概念验证并不重要。