如何使用Puma或Unicorn启动最小的ruby应用程序?

时间:2014-04-03 21:59:09

标签: ruby unicorn thin puma

我有一个非常基本的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应用程序。如何通过这个简单的程序利用这些服务器的多线程功能?

3 个答案:

答案 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很有帮助。