我在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中“需要”,但并不在助手暴露散列变量

如何外在化红宝石散列,使得其将是“范围内”应用程序中的辅助方法?

有帮助吗?

解决方案

如你表示使用基本YML文件,然后通过加载它:

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

然后,可以相应地通过“配置”对象访问它。如果请求的文件并没有改变,你可以缓存供以后使用(所以它不是打开并分析每个使用)这个文件加载,但多数民众赞成在性能优化和证明的概念并不重要。

其他提示

我使用应用配置,该让我建立RAILS_ROOT /配置/ 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的插件,它看起来甚至更好,但我没有试过尚未。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top