我有一个非常简单的rails应用程序,我正在从Rails 4升级到Rails 5,但我注意到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
我有:
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"
的命名空间。在我的请求规范中,我看到了:
config.action_controller.default_url_options = {
host: ENV['HTTP_HOST'] || 'localhost'
}
我错过了什么导致这些网址不同?
修改
每this thread我设置了
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"
中,但现在我明白了:
{{1}}
编辑2
可能值得注意的是,这些是请求规格而非功能规格(不使用水豚)。
答案 0 :(得分:3)
这应解决控制器/请求规范中的问题:
config.action_controller.default_url_options = {
host: ENV['HTTP_HOST'] || 'localhost'
}
至于为什么会这样,有一些more information available in this ongoing thread on Github。