【问题标题】:Use PORT environment variable in Rack/Sinatra在 Rack/Sinatra 中使用 PORT 环境变量
【发布时间】:2019-04-04 22:18:16
【问题描述】:

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

我认为我可以执行以下操作,但我不确定这是否是正确的方法。

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

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

这似乎不起作用,至少对于 rackup 命令不起作用。这样做的正确方法是什么?

【问题讨论】:

  • @tadman 我没有,我在问如何使用环境变量设置端口...
  • 这不起作用怎么办? PORT=9090 rackup
  • @tadman 当我这样做时它会在端口 9292 上运行!
  • 那么,这里没有问题吗?

标签: ruby sinatra port rack


【解决方案1】:

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)

【讨论】:

  • 感谢您的回答 - 我不知道以编程方式启动 Rack,我想我会使用它!
猜你喜欢
  • 2015-08-22
  • 1970-01-01
  • 2018-08-15
  • 2015-12-25
  • 2011-01-15
  • 1970-01-01
  • 2020-09-01
  • 2019-04-02
  • 2021-01-02
相关资源
最近更新 更多