在Rack / Sinatra中使用PORT环境变量

时间:2019-04-04 22:18:16

标签: ruby sinatra port rack

我正在尝试使用PORT环境变量在Rack and Sinatra应用程序中设置监听端口,否则将其设置为默认值。

我认为我也许可以做以下事情,但我不确定这是否是正确的方法。

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

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

这似乎行不通,至少对于rackup命令而言,这行不通。正确的方法是什么?

1 个答案:

答案 0 :(得分:4)

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)