[RUBY-ON-RAILS] 링크에 호스트를 누락! 제공 사항 : 호스트 매개 변수 또는 설정 default_url_options [: 호스트]
RUBY-ON-RAILS링크에 호스트를 누락! 제공 사항 : 호스트 매개 변수 또는 설정 default_url_options [: 호스트]
지금은 약 90 분 동안 인터넷 검색을 한 여전히이에 대한 답변이 없습니다. 어디 default_url_options을 설정합니까? config.action_mailer.default_url_options 다른 곳에서이 같은 버그를 해결하기 위해 나는 이미 설정 한하지만, RSpec에 사양 내부 URL 도우미를 사용하려고 할 때 지금은이 오류를 받고 있어요. 나는 default_url_options이 설정 될 것으로 예상있어 아무 생각이 없습니다.
Failure/Error: listing_url(listing).should match(/\/\d+-\w+$/)
RuntimeError:
Missing host to link to! Please provide :host parameter or set default_url_options[:host]
# ./spec/routing/listing_routing_spec.rb:9:in `block (3 levels) in <top (required)>'
이 코드는 이메일과 아무 상관이 / ActionMailer, 그냥 대신 경로의 URL을 필요로 발생합니다.
어떤 아이디어?
해결법
-
==============================
1.당신은 모든 환경에서 다음 줄을 추가해야합니다 :
당신은 모든 환경에서 다음 줄을 추가해야합니다 :
config.action_mailer.default_url_options = {: 호스트 => "YOURHOST"}
그런 식으로, 모든 환경에서 작동 할 수 있으며 환경에 대한 환경 다를 수 있습니다. 예를 들면 :
development.rb
config.action_mailer.default_url_options = { :host => "dev.yourhost.com" }
test.rb
config.action_mailer.default_url_options = { :host => "test.yourhost.com" }
production.rb
config.action_mailer.default_url_options = { :host => "www.yourhost.com" }
-
==============================
2.
Your::Application.routes.draw do default_url_options :host => "example.com" # ... snip ... end
routes.rb : 어딘가에
-
==============================
3.호스트는 각 환경의 설정 파일에 지정해야합니다. 예 :
호스트는 각 환경의 설정 파일에 지정해야합니다. 예 :
config/environments/development.rb
이 질문에이 질문을 참조하십시오.
-
==============================
4.환경 파일의 각 (예를 들어 development.rb, production.rb 등)에서는 action_mailer에 사용할 default_url_options를 지정할 수 있습니다 :
환경 파일의 각 (예를 들어 development.rb, production.rb 등)에서는 action_mailer에 사용할 default_url_options를 지정할 수 있습니다 :
config.action_mailer.default_url_options = { host: 'lvh.me', port: '3000' }
그러나 이러한 MyApp를 설정되지 않습니다 Application.default_url_options :
$ MyApp::Application.config.action_mailer.default_url_options #=> {:host=>"lvh.me", :port=>"3000"} $ MyApp::Application.default_url_options #=> {}
당신이 ActionMailer의 아무것도 외부에서 해당 오류가 발생하는 이유입니다.
당신은 당신이 적절한 환경 파일 (development.rb, production.rb 등)에 action_mailer에 정의 된 것을 사용하도록 응용 프로그램의 default_url_options을 설정할 수 있습니다.
당신은 한 번만 수행 할 수 있도록 가능한 한 드라이로 일을 계속하려면 설정 / environment.rb에 파일에서이 작업을 수행 :
# Initialize the rails application MyApp::Application.initialize! # 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
앱을 부팅 자 할 때, 전체 응용 프로그램의 default_url_options은 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"}
이 경로를 날 실망 선도를위한 @pduersteler에서 모자 팁.
-
==============================
5.당신은 전체 URL이 반환됩니다 모든 listing_url 방법 (안 정상으로 상대를) 사용하는 경우. 레일, 호스트 당신을 요구하고 전체 URL을 계산하는 이유입니다.
당신은 전체 URL이 반환됩니다 모든 listing_url 방법 (안 정상으로 상대를) 사용하는 경우. 레일, 호스트 당신을 요구하고 전체 URL을 계산하는 이유입니다.
호스트는 어떻게 말할 수있는 레일? 당신은 여러 가지 방법으로 그것을 할 수 있습니다 :
각 환경이 옵션을 1.Adding :
[/config/development.rb] config.action_mailer.default_url_options = { host: "localhost:3000" } [/config/test.rb] config.action_mailer.default_url_options = { host: "localhost:3000" } [/config/production.rb] config.action_mailer.default_url_options = { host: "www.example.com" }
참고 :이 엔진은 엔진 테스트 내부 사용자의 더미 앱 동일한 기능을 수행 할 기억 레일 내부에서 작업중인 경우 path_to_your_engine / 테스트 / 더미 / 설정 / 환경 / * 당신이 엔진을 테스트 할 때에 테스트 무엇 레일 때문에.
이 같은 foo_url 방법에 호스트 옵션을 2.Add :
listing_url(listing, host: request.host) # => 'http://localhost:3000/listings/1'
3.Not 출력 옵션을 사용하여 호스트 : only_path true로.
listing_url(listing, only_path: true ) # => '/listings/1'
이 경우에 나는 listing_path 방법을 사용하기 때문에 이럴 나는이 일에 점을 보지 않는다
-
==============================
6.재미있는 것은, config.action_mailer.default_url_options을 설정하는 것은 나에게 도움이되지 않는다는 것을. 또한, 장소의 환경에 독립적 인 설정으로 장난 나는 그렇지처럼 속해 나에게 만족하지 받았습니다. 또한, 나는 sidekiq / resque 근로자의 URL을 생성 할 때 작동하는 솔루션을 원했다.
재미있는 것은, config.action_mailer.default_url_options을 설정하는 것은 나에게 도움이되지 않는다는 것을. 또한, 장소의 환경에 독립적 인 설정으로 장난 나는 그렇지처럼 속해 나에게 만족하지 받았습니다. 또한, 나는 sidekiq / resque 근로자의 URL을 생성 할 때 작동하는 솔루션을 원했다.
설정 / 환경 / {개발, 생산} .rb로 전환, 지금까지 나의 접근 방식 :
MyApp::Application.configure do # Stuff omitted... config.action_mailer.default_url_options = { # Set things here as usual } end MyApp::Application.default_url_options = MyApp::Application.config.action_mailer.default_url_options
레일> = 3.2.x.에서 나를 위해이 작품
-
==============================
7.Rails.application.routes.default_url_options [: 호스트] = '로컬 호스트 3000'
Rails.application.routes.default_url_options [: 호스트] = '로컬 호스트 3000'
development.tb / test.tb에서 다음과 같이 더 간결 수 있습니다 :
Rails.application.configure do # ... other config ... routes.default_url_options[:host] = 'localhost:3000' end
-
==============================
8.당신은 항상 URL 도우미에 매개 변수로 호스트를 전달할 수 있습니다 :
당신은 항상 URL 도우미에 매개 변수로 호스트를 전달할 수 있습니다 :
listing_url(listing, host: request.host)
-
==============================
9.당신은 응용 프로그램 컨트롤러의 기본 URL 옵션을 설정할 수 있습니다 :
당신은 응용 프로그램 컨트롤러의 기본 URL 옵션을 설정할 수 있습니다 :
class ApplicationController < ActionController::Base def default_url_options {:locale => I18n.locale} end end
http://guides.rubyonrails.org/action_controller_overview.html#default_url_options
-
==============================
10.나는이 같은 오류가 발생했다. 나는 모든 튜토리얼에서 목록 10.13을 포함하여, 정확하게 작성했다.
나는이 같은 오류가 발생했다. 나는 모든 튜토리얼에서 목록 10.13을 포함하여, 정확하게 작성했다.
Rails.application.configure do . . . config.action_mailer.raise_delivery_errors = true config.action_mailer.delevery_method :test host = 'example.com' config.action_mailer.default_url_options = { host: host } . . . end
분명히하여 'example.com "내 서버 URL로 대체.
내가 튜토리얼을 통해 호도했던 어떤이 줄을이었다 :
나에 대한 대답은 다시에 오프 서버와 다시 켜 그래서.
-
==============================
11.에 설정 / 환경 / test.rb 이동
에 설정 / 환경 / test.rb 이동
Rails.application.routes.default_url_options [: 호스트] = '로컬 호스트 3000'
-
==============================
12.하지만 올바른 해결책이 아닙니다 경로에 DEFAULT_URL 추가, 일부 경우에 작동합니다.
하지만 올바른 해결책이 아닙니다 경로에 DEFAULT_URL 추가, 일부 경우에 작동합니다.
각 환경 (개발, 테스트, 생산)에서 DEFAULT_URL을 설정했습니다.
이러한 변경을 할 필요가있다.
config/environments/development.rb config.action_mailer.default_url_options = { :host => 'your-host-name' } #if it is local then 'localhost:3000' config/environments/test.rb config.action_mailer.default_url_options = { :host => 'your-host-name' } #if it is local then 'localhost:3000' config/environments/development.rb config.action_mailer.default_url_options = { :host => 'your-host-name' } #if it is local then 'localhost:3000'
-
==============================
13.다만 만일 누군가가 ActiveStorage 관련된 에러에 대한,이 검색은 발견 :
다만 만일 누군가가 ActiveStorage 관련된 에러에 대한,이 검색은 발견 :
당신은 당신이 업로드-URL을 등 로컬 디스크 서비스 (대부분 테스트 환경에서)를 생성하고자하는 컨트롤러 액션이있는 경우, 당신은 ActiveStorage을 포함해야 :: 컨트롤러의에서 setCurrent 작업에 blob.service_url_for_direct_upload을 허용하기 위해 바르게.
-
==============================
14.나는 같은으로 environment.rb를 구성하여 문제를 해결
나는 같은으로 environment.rb를 구성하여 문제를 해결
YourApp :: Application.default_url_options = YourApp :: Application.config.action_mailer.default_url_options
당신은, 개발 등 각 환경에 대해 액션 메일러에 대한 설정 default_url_options에 등 시험 준비 및 생산이 필요
참고 : 링크에 호스트를 누락! 제공 사항 : 호스트 매개 변수 또는 설정 default_url_options [: 호스트]
from https://stackoverflow.com/questions/7219732/missing-host-to-link-to-please-provide-host-parameter-or-set-default-url-optio by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 올바르게 jQuery를 JSON에서 복호화되지 난간 (배열 정수 키 해시되고) (0) | 2020.02.13 |
---|---|
[RUBY-ON-RAILS] A는 컨트롤러를 레일에 모든 예외를 잡아라 (0) | 2020.02.13 |
[RUBY-ON-RAILS] Heroku가 / 유증 - 링크에 호스트를 누락! 제공 사항 : 호스트 매개 변수 또는 설정 default_url_options [: 호스트] (0) | 2020.02.13 |
[RUBY-ON-RAILS] 어떤 일은 3 session_store 도메인 레일 : 모든 정말로? (0) | 2020.02.13 |
[RUBY-ON-RAILS] 마이그레이션을 통해 열에 기본값 추가 (0) | 2020.02.13 |