在机架/Sinatra中使用端口环境变量



我希望在我的 Rack 和 Sinatra 应用程序中设置侦听端口,如果使用 PORT 环境变量(否则设置为默认值(。

我想我也许可以做类似的事情,但我不确定这是否是正确的方法。

class ApplicationController < Sinatra::Base
  set :port, ENV['PORT'] || 3000
  get '/' do
    'Hello, World!'
  end
end

这似乎不起作用,至少在rackup命令中不起作用。正确的方法是什么?

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)

最新更新