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 中“要求”它,但这不会在帮助程序中公开哈希变量。

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

4

2 回答 2

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 插件,看起来更好,但我还没有尝试过。

于 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 回答