구성 파일로 Rails 도우미 방법을 어떻게 개선 할 수 있습니까?
-
06-09-2019 - |
문제
내 응용 프로그램 _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'변수는 외부 파일에서 공급되는 해시입니다. 파일은 루비 해시 또는 간단한 YML 구성만큼 간단 할 수 있습니다.
어쩌면 뭔가 빠졌을 수도 있습니다. 외부 파일에서 Ruby Syntax에서 해시를 정의 할 수 있고 환경에서 '요구'할 수 있다고 생각했지만이를 도우미에 해시 변수를 노출 시키지는 않습니다.
응용 프로그램 도우미 방법에서 "범위"가 될 수 있도록 루비 해시를 어떻게 외부화 할 수 있습니까?
해결책
표시된대로 기본 YML 파일을 사용한 다음 다음을 통해로드하십시오.
config = YAML::load_file(RAILS_ROOT+'/config/external_urls.yml')
그런 다음 "구성"객체를 통해 액세스 할 수 있습니다. 파일이 요청간에 변경되지 않으면 나중에 사용하기 위해이 파일로드를 캐시 할 수 있지만 (따라서 각 사용시 열리지 않고 구문 분석 할 수는 없지만 성능 최적화이며 개념 증명에 중요하지 않습니다.
다른 팁
나는 사용한다 응용 프로그램 구성, 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 플러그인, 더 좋아 보이지만 아직 시도하지 않았습니다.
제휴하지 않습니다 StackOverflow