gpt4 book ai didi

ruby-on-rails - Rails 5 default_url_options 怪事

转载 作者:数据小太阳 更新时间:2023-10-29 07:33:24 29 4
gpt4 key购买 nike

我有一个非常简单的 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

我的应用程序有一个名为 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"

我错过了什么导致这些 URL 不同?

编辑

根据 this thread我设置了

config.action_controller.default_url_options = {
host: ENV['HTTP_HOST'] || 'localhost'
}

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"

编辑 2

可能值得注意的是,这些是请求规范而不是功能规范(不使用 capybara )。

最佳答案

这应该可以解决 Controller /请求规范中的问题:

config.action_controller.default_url_options = {
host: ENV['HTTP_HOST'] || 'localhost'
}

至于为什么会这样,有一些 more information available in this ongoing thread on Github .

关于ruby-on-rails - Rails 5 default_url_options 怪事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43745669/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com