2013-07-21 2 views
1

У меня есть хороший файл litte .ru, который я могу запустить с rackup, но я хочу, чтобы иметь возможность опубликовать его как драгоценный камень. Я предполагаю, что могу переместить его в каталог lib и добавить его в свой gemspec, но что еще мне нужно сделать, чтобы я мог запускать его только после установки драгоценного камня?Как мне сделать приложение для стойки самоцветом?

ответ

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, а затем запустил его с указанным кодом. Спасибо @ Антон за то, что начал меня.

2

Gemspec + правильная структура каталогов + (самое главное) размещение сценария, который запустит ваше приложение (возможно, с run) в каталог bin/.

немного больше деталей на драгоценных бинарников here

UPDATE

Пример по запросу. Я сделал драгоценный камень под названием 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! ,

+0

Вы знаете, как написать '.rb', который запустит приложение с расширением' .ru'? Я думаю, что это то, что я действительно переживаю. – linuxdan

+0

Я предполагаю, что вам придется распоряжаться файлом '.ru' или преобразовать его в форму, предложенную мной в обновлении до моего ответа. В конце концов, ваше приложение Rack - это, скорее всего, класс, который можно запустить. Команда Rackup выполняет почти то же самое, что и код, который я предоставил для файла 'test', с некоторыми опрятными функциями, такими как параметры обработки и предоставление метода' run' в области ядра. – Anton