Eug*_*ene 5 ruby ruby-on-rails
我有一个非常简单的 Rails 应用程序,我正在从 Rails 4 升级到 Rails 5,但我注意到一些奇怪的地方 default_url_options
在config/environments/test.rb我有:
Rails.application.routes.default_url_options[:host]= ENV["HTTP_HOST"] || "localhost"
Rails.application.routes.default_url_options[:port]= ENV["PORT"] || 3000
Run Code Online (Sandbox Code Playgroud)
我的应用程序有一个名为api. 在我的请求规范中,我看到了这个:
[1] pry> api_v3_sample_url
=> "http://www.example.com:3000/api/v3/sample"
[2] pry> Rails.application.routes.url_helpers.api_v3_sample_url
=> "http://localhost:3000/api/v3/sample"
Run Code Online (Sandbox Code Playgroud)
我错过了什么导致这些 URL 不同?
编辑
根据我设置的这个线程
config.action_controller.default_url_options = {
host: ENV['HTTP_HOST'] || 'localhost'
}
Run Code Online (Sandbox Code Playgroud)
在config/environments/test.rb但现在我得到这样的:
> Rails.application.routes.url_helpers.api_v3_sample_url
ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
> api_v3_sample_url
=> "http://www.example.com/api/v3/sample"
Run Code Online (Sandbox Code Playgroud)
编辑 2
可能值得注意的是,这些是请求规范而不是功能规范(不使用水豚)。
这应该可以解决控制器/请求规范中的问题:
config.action_controller.default_url_options = {
host: ENV['HTTP_HOST'] || 'localhost'
}
Run Code Online (Sandbox Code Playgroud)
至于为什么会发生这种情况,可以在 Github 上的这个正在进行的线程中找到更多信息。
| 归档时间: |
|
| 查看次数: |
6913 次 |
| 最近记录: |