我怎样才能改善与配置文件中的轨道helper方法?
-
06-09-2019 - |
题
我在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的插件,它看起来甚至更好,但我没有试过尚未。
不隶属于 StackOverflow