У меня есть приложение для рельсов 4 с Grape API и Swagger через драгоценные камни виноградного чванства и виноградного чванства.
В dev все работает хорошо, я загружаю http://localhost:3000/api/swagger и заголовок swagger ввод текста вверху загружает ожидаемый URL-адрес, http://localhost:3000/api/swagger_doc. Это правильно указывает на файл, который он ищет, swagger_doc.json.
Я отправил это приложение на героку, что принудительно подключает https. К сожалению, при загрузке https://my-app.herokuapp.com/api/swagger ввод текста заголовка swagger вдоль верхней загрузки http://my-app.herokuapp.com/api/swagger_doc вместо загрузки https://my-app.herokuapp.com/api/swagger_doc (http или https).
Я пытался подойти к этому со стороны героку с такими вещами, как:
маршруты.rb
unless Rails.env.development?
get "*path" => redirect("https://my-app.herokuapp.com%{path}"), :constraints => { :protocol => "http://" }
post "*path" => redirect("https://my-app.herokuapp.com%{path}"), :constraints => { :protocol => "http://" }
end
конфигурация/среды/производство
config.force_ssl = false
конфигурация/среды/производство
#config.force_ssl = false
И я пришел к этому, пытаясь установить или манипулировать атрибутом base_path add_swagger_documentation.
приложение/контроллеры/API/base.rb
base_path: "my-app.herokuapp.com",
приложение/контроллеры/API/base.rb
base_path: "http://my-app.herokuapp.com",
приложение/контроллеры/API/base.rb
base_path: = lambda do |request|
return "http://my-app.herokuapp.com"
end
приложение/контроллеры/API/base.rb
base_path: lambda { |request| "http://#{request.host}:#{request.port}" }
Недавно я нажал «просмотреть необработанный» на одном из своих ресурсов и заметил, что он улавливает мои изменения в base_path, но этот base_path даже не используется для заполнения URL-адреса в текстовом вводе в заголовке swagger. Кажется, он генерируется из файла js. Я не могу его редактировать и с радостью приму хак в качестве решения. Вот этот необработанный вывод:
https://gist.github.com/johnnygoodman/5fd246765dc5236fb8c4
Линия интереса:
"basePath":"http://localhost:3000/my-app.herokuapp.com"
Что сломало бы приложение, если бы оно заполнялось и использовалось, но это не так. Я не вижу опции в драгоценном камне с виноградным чванством, который я мог бы использовать для передачи этой переменной и изменения пути на https.
В заключение:
Я хочу, чтобы поле ввода текста swagger загружало https://my-app.herokuapp.com/api/swagger_doc при посещении https://my-app.herokuapp.com/api/swagger.
Кто-нибудь знает, как это сделать на героку?