문제

내 응용 프로그램 _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 플러그인, 더 좋아 보이지만 아직 시도하지 않았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top