ich eine ziemlich einfache Rails-Anwendung, die ich auf ein Upgrade von Rails gerade arbeite 4 bis Rails 5, aber ich bin etwas Seltsamkeit mit default_url_options
Rails 5 default_url_options Merkwürdigkeiten
In config/environments/test.rb
bemerkte ich:
Rails.application.routes.default_url_options[:host]= ENV["HTTP_HOST"] || "localhost"
Rails.application.routes.default_url_options[:port]= ENV["PORT"] || 3000
Meine Anwendung hat einen Namensraum namens api
. In meinen Anfrage-Spezifikationen sehe ich folgendes:
[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"
Was fehlt mir, dass diese URLs anders sind?
EDIT
Per this thread stelle ich
config.action_controller.default_url_options = {
host: ENV['HTTP_HOST'] || 'localhost'
}
in config/environments/test.rb
aber jetzt bekomme ich diese:
> 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"
EDIT 2
Es ist vielleicht erwähnenswert, dass es sich um Anforderungsspezifikationen und nicht um Eigenschaftenspezifikationen handelt (keine Verwendung von Capybara).
siehe die Bearbeitung, die ich zum ursprünglichen Beitrag gemacht habe. – Eugene
@Eugene Sie mussten den Code, den Sie hatten, nicht entfernen. – coreyward
@coreward sogar mit dem ursprünglichen Code zurück, das Verhalten ist das gleiche wie es ursprünglich war – Eugene