У меня есть хороший файл litte .ru
, который я могу запустить с rackup
, но я хочу, чтобы иметь возможность опубликовать его как драгоценный камень. Я предполагаю, что могу переместить его в каталог lib
и добавить его в свой gemspec
, но что еще мне нужно сделать, чтобы я мог запускать его только после установки драгоценного камня?Как мне сделать приложение для стойки самоцветом?
1
A
ответ
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!
,
Вы знаете, как написать '.rb', который запустит приложение с расширением' .ru'? Я думаю, что это то, что я действительно переживаю. – linuxdan
Я предполагаю, что вам придется распоряжаться файлом '.ru' или преобразовать его в форму, предложенную мной в обновлении до моего ответа. В конце концов, ваше приложение Rack - это, скорее всего, класс, который можно запустить. Команда Rackup выполняет почти то же самое, что и код, который я предоставил для файла 'test', с некоторыми опрятными функциями, такими как параметры обработки и предоставление метода' run' в области ядра. – Anton