我正在尝试使用PORT环境变量在Rack and Sinatra应用程序中设置监听端口,否则将其设置为默认值。
我认为我也许可以做以下事情,但我不确定这是否是正确的方法。
class ApplicationController < Sinatra::Base
set :port, ENV['PORT'] || 3000
get '/' do
'Hello, World!'
end
end
这似乎行不通,至少对于rackup
命令而言,这行不通。正确的方法是什么?
答案 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)