【问题标题】:How can I improve a rails helper method with a config file?如何使用配置文件改进 rails helper 方法?
【发布时间】:2009-05-28 16:01:50
【问题描述】:

我的 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​​ 哈希外部化,使其在应用程序帮助方法中“在范围内”?

【问题讨论】:

    标签: ruby-on-rails configuration external helper


    【解决方案1】:

    我使用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,看起来更好,但我还没试过。

    【讨论】:

    • 我不喜欢 AppConfig API 的外观,但简单的 ApplicationConfig 插件看起来很棒,谢谢!
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-19
      • 2021-05-22
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      相关资源
      最近更新 更多