code

환경별로 config.action_controller.default_url_options = {: host = '#' '} 설정 방법

codestyles 2020. 12. 11. 08:14
반응형

환경별로 config.action_controller.default_url_options = {: host = '#' '} 설정 방법


지금은 개발 호스트에서 작동하는 이것을 사용하고 있지만 프로덕션으로 이동할 때 {: host => ""} 코드를 수동으로 변경해야합니다.

post.rb

def share_all
  url =  Rails.application.routes.url_helpers.post_url(self, :host => 'localhost:3000')
  if user.authentications.where(:provider => 'twitter').any?
    user.twitter_share(url)  
  end
end

이것을 사용하고 환경별로 default_url_options를 정의하고 싶습니다.

post.rb

def share_all
  url =  Rails.application.routes.url_helpers.post_url(self)
  if user.authentications.where(:provider => 'twitter').any?
    user.twitter_share(url)  
  end
end

이 파일을 config / environments / development.rb에 추가하려고했지만 여전히 "링크 할 호스트가 없습니다! : host 매개 변수를 제공하거나 default_url_options [: host]를 설정하십시오"오류가 발생합니다.

development.rb

config.action_controller.default_url_options = {:host => "localhost:3000"}

그리고 나는 이것을 이렇게 시도했습니다.

development.rb

config.action_controller.default_url_options = {:host => "localhost", :port => "3000"}

편집하다:

나는 이제 이것을 따랐고 여전히 동일한 오류 가이드 http://edgeguides.rubyonrails.org/action_controller_overview.html#default_url_options

애플리케이션 컨트롤러

class ApplicationController < ActionController::Base
  protect_from_forgery
  include ApplicationHelper
  def default_url_options
    if Rails.env.production?
      { :host => "example.com"}
    else
      {:host => "example1.com"}
    end
  end
end

이것은 나를 미치게 만든다. 내가 여기서 무엇을 놓치고 있는가 ???


좋아 나는 그것을 쓰는 올바른 방법을 알아 냈다.

Rails.application.routes.default_url_options[:host] = 'localhost:3000'

:)


이 파일의 변경 사항을 적용하려면 서버를 다시 시작해야합니다.


default_url_options에서 애플리케이션을 상속합니다 ActionMailer.

가능한 한 DRY로 유지하기를 원하므로 ActionMailer 실제로 나머지 .NET과 다른 호스트 및 포트를 사용 하지 않는 한 동일한 환경의 여러 위치에서 호스트 및 포트를 하드 코딩하고 싶지 않습니다 Application.

default_url_options전체 Application에 대해을 설정하려면 config/environment.rb파일에 다음 줄을 추가하기 만하면 됩니다 ( MyApp앱 이름으로 변경 ).

# Set the default host and port to be the same as Action Mailer.
MyApp::Application.default_url_options = MyApp::Application.config.action_mailer.default_url_options

이 문제를 해결하고 자동으로 설정됩니다 Application의를 default_url_options당신 같은에 config.action_mailer.default_url_options:

$ MyApp::Application.config.action_mailer.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}

$ MyApp::Application.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}

config.action_mailer.default_url_options = {: host => "your host"}

for instance your host localhost:3000

you can put this in test.rb, development.rb, production.rb files host could be different from environment to environment

참고URL : https://stackoverflow.com/questions/5691727/how-to-set-config-action-controller-default-url-options-host-on-per

반응형