Принудительно загружать пользовательский интерфейс Swagger для загрузки пути https при размещении на Heroku

У меня есть приложение для рельсов 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.

Кто-нибудь знает, как это сделать на героку?


person johnnygoodman    schedule 28.11.2015    source источник


Ответы (1)


Я смог обойти это. Я предлагаю:

  1. Не использовать + удалить #gem 'grape-swagger-ui'

  2. Используйте и установите гем 'grape-swagger-rails' и следуйте документации здесь: https://github.com/ruby-grape/grape-swagger-rails

person johnnygoodman    schedule 29.11.2015