加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何在不同的端口上运行瘦机?

发布时间:2020-12-17 04:31:38 所属栏目:百科 来源:网络整理
导读:我有一个非常基本的测试应用程序.当我执行此命令时,服务器忽略我指定的端口并在端口4567上运行Thin.为什么我指定的端口被忽略? $ruby xxx.rb start -p 8000== Sinatra/1.3.3 has taken the stage on 4567 for production with backup from Thin Thin web se
我有一个非常基本的测试应用程序.当我执行此命令时,服务器忽略我指定的端口并在端口4567上运行Thin.为什么我指定的端口被忽略?
$ruby xxx.rb start -p 8000

== Sinatra/1.3.3 has taken the stage on 4567 for production with backup from Thin
>> Thin web server (v1.4.1 codename Chromeo)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567,CTRL+C to stop

xxx.rb文件

require 'Thin'

rackup_file = "config.ru" 

argv = ARGV
argv << ["-R",rackup_file ] unless ARGV.include?("-R")
argv << ["-e","production"] unless ARGV.include?("-e")

puts argv.flatten

Thin::Runner.new(argv.flatten).run!

config.ru文件

require 'sinatra'
require 'sinatra/base'

class SingingRain < Sinatra::Base
    get '/' do
        return 'hello'
    end
end

SingingRain.run!

解决方法

你的问题在于:
SingingRain.run!

这是Sinatra的run method,它告诉Sinatra默认启动自己的Web服务器,该服务器在端口4567上运行.这是在你的config.ru文件中,但是config.ru只是Ruby,所以这行就像在任何其他.rb文件中一样运行.这就是为什么你看到Sinatra在那个端口启动的原因.

当您使用CTRL-C停止此服务器时,Thin将尝试继续加载config.ru文件以确定要运行的应用程序.你实际上没有在config.ru中指定一个应用程序,所以你会看到类似的东西:

^C>> Stopping ...

== Sinatra has ended his set (crowd applauds)
/Users/matt/.rvm/gems/ruby-1.9.3-p194/gems/rack-1.4.1/lib/rack/builder.rb:129:in `to_app': missing run or map statement (RuntimeError)
        from config.ru:1:in `<main>'
        ...

此错误只是告诉您实际上没有指定要在配置文件中运行的应用程序.

而不是SingingRain.run !,使用:

run SingingRain

run是一个Rack方法,用于指定要运行的应用程序.你也可以运行SingingRain.new – Sinatra采取措施让你只使用这里的类本身或实例.

现在的输出应该只是:

>> Thin web server (v1.4.1 codename Chromeo)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:8000,CTRL+C to stop

你没有得到== Sinatra / 1.3.2已经在4567上用于生产备份来自Thin消息,因为Sinatra没有运行其内置服务器,它只是你配置它的瘦服务器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读