ruby-on-rails - context - rspec 사용법




링크 할 호스트가 없습니다! 호스트 매개 변수를 제공하거나 default_url_options[: host]를 설정하십시오. (7)

action_mailer.default_url_options 를 사용하도록 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.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 를 설정할 수 있습니다.

가능한 한 DRY 상태를 유지하려면 config/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_optionsaction_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 입니다.

나는 지금 약 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이 필요합니다.

어떤 아이디어?



나는이 같은 오류가 있었다. 튜토리얼의 Listing 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로 바뀌 었습니다.

튜토리얼에서 내가 썼던 내용은 다음과 같다.

구성을 활성화하기 위해 개발 서버다시 시작한 후 ...

그래서 나를위한 대답은 서버를 껐다가 다시 켜는 것이 었습니다.


모든 환경에서 다음 줄을 추가해야합니다.

config.action_mailer.default_url_options = { :host => "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" }


호스트를 매개 변수로 URL 도우미에 전달할 수 있습니다.

listing_url(listing, host: request.host)

Your::Application.routes.draw do
  default_url_options :host => "example.com"

  # ... snip ...
end

routes.rb 어딘가에 :)







rspec