Используйте переменную окружения PORT в Rack / Sinatra - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь установить порт прослушивания в моем приложении Rack и Sinatra, используя переменную среды PORT, если в противном случае установлено значение по умолчанию.

Я думал, что смогу сделать что-то вроде следующего, ноЯ не уверен, что это даже правильный подход.

class ApplicationController < Sinatra::Base
  set :port, ENV['PORT'] || 3000

  get '/' do
    'Hello, World!'
  end
end

Это, похоже, не работает, по крайней мере, с командой rackup.Как правильно это сделать?

1 Ответ

4 голосов
/ 05 апреля 2019

rackup принимает -p PORT аргумент.

Вы можете сделать:

rackup -p $PORT

В config.ru вы также можете определить параметры в комментарии в первой строке:

#\ -p 9090

Я не уверен, что это может обработать $PORT.

Если вы посмотрите на исходный код rackup, это очень просто:

#!/usr/bin/env ruby
# frozen_string_literal: true

require "rack"
Rack::Server.start

Это весь файл.

Rack::Server.start принимает хэш параметров в качестве параметра, и один из параметров - :Port.

Вы можете создать свой собственный start.sh, который говорит:

#!/usr/bin/env ruby
# frozen_string_literal: true

require "rack"
Rack::Server.start(Port: ENV['PORT'] || 3000)
...