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

Use PORT environment variable in Rack/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)