복붙노트

[RUBY-ON-RAILS] 어떻게 레일 URL 헬퍼에 대한 기본 호스트를 설정합니까?

RUBY-ON-RAILS

어떻게 레일 URL 헬퍼에 대한 기본 호스트를 설정합니까?

나는 같은 것을 할 싶습니다

config.default_host = 'www.subdomain.example.com'

내 구성 파일의 일부, 그래서 object_url 헬퍼 (ActionView :: 도우미 :: UrlHelper) 생산 링크 http://www.subdomain.example.com로 시작하는 것을

내가하는 팻의에 모르기 때문에, 나는 문서를 검색하는 것을 시도했다 그러나 나는 나를 위해 유용하지 않은 http://api.rubyonrails.org/classes/Rails/Configuration.html을 ActionMailer의 문서를 제외하고 아무것도 찾을하지 않고 보기. 레일의 전체 구조를 설명하는 곳이 있습니까 :: Initializer.config?

해결법

  1. ==============================

    1.asset_host는 URL의하지 작업을 수행

    asset_host는 URL의하지 작업을 수행

    당신은 (레일 3 적어도) 귀하와 ApplicationController의 재정 default_url_options 필요

    http://edgeguides.rubyonrails.org/action_controller_overview.html#default-url-options

    class ApplicationController < ActionController::Base
      def default_url_options
        if Rails.env.production?
          {:host => "myproduction.com"}
        else  
          {}
        end
      end
    end
    
  2. ==============================

    2.귀하의 환경 설정에서 기본 호스트를 정의합니다 :

    귀하의 환경 설정에서 기본 호스트를 정의합니다 :

    # config/environments/staging.rb
    MyApp::Application.configure do
      # ...
      Rails.application.routes.default_url_options[:host] = 'preview.mydomain.com'
      # ...
    end
    

    그런 다음 앱의 URL의 어디를 만들 수 있습니다 :

    Rails.application.routes.url_helpers.widgets_url()
    

    아니면 클래스의 URL 헬퍼를 포함한다 :

    class MyLib
      include Rails.application.routes.url_helpers
    
      def make_a_url
        widgets_url
      end
    end
    

    기본 호스트를 정의하지 않으면, 당신은 옵션으로 합격해야합니다 :

    widgets_url host: (Rails.env.staging? ? 'preview.mydomain.com' : 'www.mydomain.com')
    

    이 프로토콜과 같은 일을 지정하는 것이 유용합니다 :

    widgets_url protocol: 'https'
    
  3. ==============================

    3.또 다른 방법은 이런 식으로 설정하는 것입니다

    또 다른 방법은 이런 식으로 설정하는 것입니다

    # config/production.rb
    config.action_controller.default_url_options = { host: 'myproduction.com' }
    
  4. ==============================

    4.당신은 쉽게 설정할 수 있습니다 : 호스트 또는 / 및 : 모든 url_helper에 대한 매개 변수 only_path.    yours_url (PARAMS : 호스트 => "http://example.com": only_path => Rails.env.test) 당신이 원하는하지 않는 한이 방법은 당신이 당신의 환경에서 글로벌 default_url_options 설정되지 않습니다.

    당신은 쉽게 설정할 수 있습니다 : 호스트 또는 / 및 : 모든 url_helper에 대한 매개 변수 only_path.    yours_url (PARAMS : 호스트 => "http://example.com": only_path => Rails.env.test) 당신이 원하는하지 않는 한이 방법은 당신이 당신의 환경에서 글로벌 default_url_options 설정되지 않습니다.

  5. ==============================

    5.지금까지 내가 아는 한, * _url 헬퍼는 서버의 구성 호스트 이름을 사용합니다. 그래서 예를 들어 내 아파치 설치가 레일 다음 http://www.myapp.com/에서이 레일 응용 프로그램에 대한 요청을 받아 들일지 어떨지하면 해당 주소를 사용합니다. 의 그 이유는 HTTP에 개발 환경 점에서 * _url 방법 : // localhost를 : 기본적으로 3000.

    지금까지 내가 아는 한, * _url 헬퍼는 서버의 구성 호스트 이름을 사용합니다. 그래서 예를 들어 내 아파치 설치가 레일 다음 http://www.myapp.com/에서이 레일 응용 프로그램에 대한 요청을 받아 들일지 어떨지하면 해당 주소를 사용합니다. 의 그 이유는 HTTP에 개발 환경 점에서 * _url 방법 : // localhost를 : 기본적으로 3000.

    이전의 대답에 제안 자산 호스트 만 IMAGE_TAG, stylesheet_link_tag 및 javascript_link_tag 도우미에 영향을 미칠 것입니다.

  6. ==============================

    6.가장 간단한 방법은 레일에 글로벌 변수를 사용하여 URL을 동적 도메인을 얻을 수 있습니다.

    가장 간단한 방법은 레일에 글로벌 변수를 사용하여 URL을 동적 도메인을 얻을 수 있습니다.

    class ApplicationController < ActionController::Base
      def base_url       
        $base_url = request.base_url
      end
    
    end
    

    당신의 헤더 파일에이 메소드를 호출 한 후 <% BASE_URL %>, 지금 당신은 당신의 응용 프로그램에서 도메인 URL 어디서나 액세스 할 수 있습니다.

  7. ==============================

    7.NSD의 솔루션은 내가 할 방법이지만, 나는 그것이 https로 작동하도록 블록을 추가했다 :

    NSD의 솔루션은 내가 할 방법이지만, 나는 그것이 https로 작동하도록 블록을 추가했다 :

    config.action_controller.asset_host = Proc.new { |source, request|
      (request ? request.protocol : 'http://') +  "www.subdomain.example.com"
    }
    
  8. ==============================

    8.이이 있어요,하지만 난 정말 확실히 그들은 당신이 언급하고있는 헬퍼이라면 아니에요 :

    이이 있어요,하지만 난 정말 확실히 그들은 당신이 언급하고있는 헬퍼이라면 아니에요 :

    ActionController::Base.asset_host = "assets.example.com"
    

    http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html

  9. from https://stackoverflow.com/questions/2660172/how-do-i-set-default-host-for-url-helpers-in-rails by cc-by-sa and MIT license