2009-12-04 5 views
2

Синатра приложения:дробовик камень взрывается при запуске приложения Синатров на окнах

require "rubygems" 
require "sinatra" 

get '/' do 
    "Hello world. It's #{Time.now} at the server!" 
end 

окно XP с последней версией беспородного, Синатра, дробовик. рубин 1.8.6

бегущие дробовика результаты test_app.rb в


C:\Files\sites\sinatra>shotgun test.rb 
== Shotgun starting Rack::Handler::Mongrel on localhost:9393 
Thu Dec 03 16:51:37 -0800 2009: Read error: #<NotImplementedError: fork() functi 
on is unimplemented on this machine> 
c:/ruby/lib/ruby/gems/1.8/gems/shotgun-0.4/lib/shotgun.rb:26:in `fork' 
c:/ruby/lib/ruby/gems/1.8/gems/shotgun-0.4/lib/shotgun.rb:26:in `call!' 
c:/ruby/lib/ruby/gems/1.8/gems/shotgun-0.4/lib/shotgun.rb:15:in `call' 
c:/ruby/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/content_length.rb:13:in `call' 
c:/ruby/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/chunked.rb:15:in `call' 
c:/ruby/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/handler/mongrel.rb:61:in `process' 
c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:159:in `process_client' 
c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:158:in `each' 
c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:158:in `process_client' 
c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:285:in `run' 
c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:285:in `initialize' 
c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:285:in `new' 
c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:285:in `run' 
c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:268:in `initialize' 
c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:268:in `new' 
c:/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/lib/mongrel.rb:268:in `run' 
c:/ruby/lib/ruby/gems/1.8/gems/rack-1.0.0/lib/rack/handler/mongrel.rb:34:in `run' 
c:/ruby/lib/ruby/gems/1.8/gems/shotgun-0.4/bin/shotgun:129 
c:/Ruby/bin/shotgun:19:in `load' 
c:/Ruby/bin/shotgun:19 

Любые идеи о том, как решить эту проблему? Спасибо!

ответ

1

Лучшее, что я могу сделать, это указать вам на another thread about this. Для дробовика требуется вилка, которая доступна только на системах * nix. Там даже немного о том, как сделать это изначально, если вам хочется отправить патч.

+5

Спасибо. «Вы не можете» - общий ответ за все, что Ruby связано с окнами :) – aaandre

+0

Ха-ха, да. Это печальный факт, что почти все рубисты - это парни Мак. Частично это объясняется тем, что Ruby долгое время использовался только на небольших надменных дизайнерских фирмах, так что это обучение. Но я слышу, что с каждым днем ​​все становится лучше! –

1

Простой способ использовать sinatra/reloader. Установите sinatra/contrib камень и добавить расширение в основной файл:

require 'sinatra/reloader' 

отлично работает под WIndows 8.1.

0

Вы можете попробовать restart gem - он предназначался для использования в Windows, поэтому он не использует fork(). В вашем примере, вы бы просто заменить дробовик с рестарта рубин, как это:

restart ruby test_app.rb 

Смотрите here для получения дополнительной информации - надеюсь, что это работает для вас :)

+0

Спасибо, что ответите, я посмотрю. Поскольку я перешел на разработку в Ubuntu VM на моей рабочей станции Windows. – aaandre