通常,当你运行rails server它时,启动Webrick.如果您安装'thin'宝石,那么'thin'会启动.我想用'puma'服务器做同样的事情.
我看到startrailties(lib/rails/commands)中的命令调用super,但我找不到'super'的各种选项.我还在'thin'中回顾了许多对Rails的引用.
我从2008年10月发现了一个名为"添加对脚本/服务器的精简支持.#488 [Bob Klosinski]"的Changelog条目,但该代码区域自该提交后发生了重大变化(a93ea88c0623b4f65af98c0eb55924c335bb3ac1).
如果有人可以将我引导到正确的代码部分,那将非常有帮助.
全新生成的Rails 4.2.0项目.Ran rails s,使用WEBrick表现得如预期:
vagrant@web1:~$ netstat -nlpt
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN 27158/ruby2.1
tcp6 0 0 ::1:3000 :::* LISTEN 27158/ruby2.1
Run Code Online (Sandbox Code Playgroud)
添加puma到Gemfile,运行bundle,然后rails s再次; 想出了Puma,但只绑定了tcp6接口,而不是tcp:
vagrant@web1:~$ netstat -nlpt
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 ::1:3000 :::* LISTEN 27116/ruby2.1
Run Code Online (Sandbox Code Playgroud)
有什么线索的原因?我一直在谷歌搜索没有运气.
更新:
跑步puma -b tcp://0.0.0.0:3000工作.但是,将bind指令添加到config/puma.rb并运行rails s不会:
bind 'tcp://0.0.0.0:3000'
Run Code Online (Sandbox Code Playgroud)
然而,我的配置文件中的threads/workers指令正在工作,因此我知道配置文件正在加载和使用.(甚至添加了一个put语句以确定.)
如果我只是运行puma,绑定到正确的接口,配置文件甚至会被拾取.我可能只需要运行puma而不是rails s,尽管它很烦人,必须添加到我的开发人员文档中.
UPDATE2:
我误解了.运行 …
一些指南(示例)建议您启动一个网络服务器
bundle exec rails server puma
Run Code Online (Sandbox Code Playgroud)
但我总是刚开始的服务器puma直接
bundle exec puma
Run Code Online (Sandbox Code Playgroud)
通过启动puma(或任何其他服务器)时会发生什么特别的事情rails server吗?