我有一个非常基本的ruby示例在Thin上运行,但我想知道如何将此示例翻译为使用Unicorn或Puma作为HTTP服务器。这是我现在的代码:
require 'rack'
class HelloWorld
def talk()
return "Hello World!"
end
end
class SomeServer
def start(server_object, port)
app = proc do |env|
[ 200, {"Content-Type" => "text/html"}, [server_object.talk()] ]
end
Rack::Handler::Thin::run(app, :Port => port)
end
end
SomeServer.new.start(HelloWorld.new, 3000)
这样运行良好,但我无法弄清楚如何使用Puma或Unicorn运行它。我找到的大多数在线文档都适用于Rails应用程序。如何通过这个简单的程序利用这些服务器的多线程功能?
答案 0 :(得分:4)
使用sinatra。
所以要一步一步地安装sinatra和puma gems
gem install sinatra
gem install puma
然后创建一个文件myapp.rb
require 'sinatra'
configure { set :server, :puma }
get '/' do
"Hello World!"
end
然后运行文件
ruby myapp.rb
默认情况下,sinatra会在4567上收听,所以请转到localhost:4567 您可以配置puma来侦听特定端口或使用配置文件执行许多其他操作阅读documentation
答案 1 :(得分:1)
您应该能够使用Puma Rack处理程序,而不是使用return Meteor.users.find({
profile:{
organiztion: Meteor.user().profile.organization
}
});
启动应用程序,而不是:
Rack::Handler::Thin
安装Puma gem后,您还需要Rack::Handler::Puma.run(app, :Port =>port)
。
答案 2 :(得分:0)
一个不需要其他宝石的最小示例如下。
使用单个文件
创建具有以下内容的puma配置文件config.rb
:
app do |env|
body = 'Hello, World!'
[200, { 'Content-Type' => 'text/plain', 'Content-Length' => body.length.to_s }, [body]]
end
bind 'tcp://127.0.0.1:3000'
并与
一起运行彪马puma -C /path/to/config.rb
就是这样。
使用配置和机架文件
在上面的示例中,配置文件包含应用程序本身。将应用程序移至rackup文件是有意义的:创建具有以下内容的机架文件app.ru
:
class HelloWorld
def call(env)
body = 'Hello, World!'
[200, { 'Content-Type' => 'text/plain', 'Content-Length' => body.length.to_s }, [body]]
end
end
run HelloWorld.new
然后更新您的config.rb
,删除应用程序并链接机架文件:
rackup '/path/to/app.ru'
bind 'tcp://127.0.0.1:3000'
并像以前一样运行puma
puma -C /path/to/config.rb
puma的example configuration file很有帮助。