如何让我的机架应用成为宝石?

时间:2013-07-21 18:11:41

标签: ruby gem rack

我有一个很好的litte .ru文件,我可以使用rackup运行,但我希望能够像宝石一样发布它。我假设我可以将它移动到lib目录并将其添加到我的gemspec但我还需要做什么才能在安装gem之后运行它?

2 个答案:

答案 0 :(得分:2)

Gemspec +正确的目录结构+(最重要的是)放置一个脚本,用于启动您的应用(可能run)到bin/目录。

关于gem二进制文件的更多细节here

<强>更新

请求的示例。我制作了一个名为agent的宝石,它取决于sinatra(它还取决于rack)。它具有Agent::Server

的定义
module Agent
  # Your code goes here...
  class Server <  ::Sinatra::Base

    get '/sync' do
        [200, "yahoo!"]
    end
  end

我还创建了名为test的文件,内容如下:

#!/usr/bin/env ruby

require "rubygems"
require "agent"

Rack::Handler::WEBrick.run(
  Agent::Server.new,
  :Port => 9000
)

然后,如果我之后运行chmod 0755 test./test,我可以转到http://localhost:900/sync并查看yahoo!

答案 1 :(得分:0)

这是我最终的结果:

#!/usr/bin/env ruby

require 'rack'
require 'illusionist'

options = {
  :Host => '127.0.0.1',
  :Port => '8080'
}

merlin = Illusionist.new

Rack::Handler::Thin.run(merlin, options) do |server|
  [:INT, :TERM].each { |sig| trap(sig) { server.stop } }
end

我将.ru文件重命名为.rb,然后使用上面的代码启动它。感谢@Anton让我开始。