2010-04-15 4 views
5

Кто-нибудь еще играет с ironruby?Запуск приложения Rails под IronRuby Rack

Я успешно получил проект IronRuby.Rails.Example, запущенный на моей локальной машине под IIS 5.1. Теперь я пытаюсь заставить свой собственный сайт демонстрационных рельсов работать одинаково.

Мой web.config немного отличается от примера проекта. Я пытаюсь использовать только то, что было распространено с IronRuby 1.0, и то, что я установил, используя драгоценные камни.

Я получаю следующее сообщение об ошибке, которая не дает мне много, чтобы идти дальше:

D: /demo/config/boot.rb: 66: в `выходе ': выхода (SystemExit)

После пробовать много разных вещей, я думаю, что у него проблемы с поиском драгоценных камней. Я прикрепил свою веб-конфигурацию и ironrack.log. У кого-нибудь есть указатели на то, что я делаю неправильно?

Спасибо!

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
     <!-- custom configuration section for DLR hosting --> 
     <section name="microsoft.scripting" type="Microsoft.Scripting.Hosting.Configuration.Section, Microsoft.Scripting" requirePermission="false"/> 
    </configSections> 
    <system.webServer> 
     <handlers> 
      <!-- clear all other handlers first. Don't do this if you have other handlers you want to run --> 
      <clear/> 
      <!-- This hooks up the HttpHandler which will dispatch all requests to Rack --> 
      <add name="IronRuby" path="*" verb="*" type="IronRuby.Rack.HttpHandlerFactory, IronRuby.Rack" resourceType="Unspecified" requireAccess="Read" preCondition="integratedMode"/> 
     </handlers> 
    </system.webServer> 
    <system.web> 
     <!-- make this true if you want to debug any of the DLR code, IronRuby.Rack, or your own managed code --> 
     <compilation debug="true"/> 
    <httpHandlers> 
     <!-- clear all other handlers first. Don't do this if you have other handlers you want to run --> 
     <clear/> 
     <!-- This hooks up the HttpHandler which will dispatch all requests to Rack --> 
     <add path="*" verb="*" type="IronRuby.Rack.HttpHandlerFactory, IronRuby.Rack" /> 
    </httpHandlers> 
    </system.web> 
    <!-- DLR configuration. Set debugMode to "true" if you want to debug your dynamic language code with VS --> 
    <microsoft.scripting debugMode="false"> 
     <options> 
      <!-- Library paths: make sure these paths are correct --> 
      <!--<set option="LibraryPaths" value="..\..\..\Languages\Ruby\libs\; 
                ..\..\..\..\External.LCA_RESTRICTED\Languages\Ruby\ruby-1.8.6p368\lib\ruby\site_ruby\1.8\; 
                ..\..\..\..\External.LCA_RESTRICTED\Languages\Ruby\ruby-1.8.6p368\lib\ruby\1.8\"/>--> 
      <set option="LibraryPaths" value="C:\IronRuby\lib\IronRuby;C:\IronRuby\lib\ruby\1.8;C:\IronRuby\lib\ruby\site_ruby;C:\IronRuby\lib\ruby\site_ruby\1.8"/> 
     </options> 
    </microsoft.scripting> 
    <appSettings> 
     <add key="AppRoot" value="."/> 
     <add key="Log" value="ironrack.log"/> 
     <!-- <add key="GemPath" value="..\..\..\..\External.LCA_RESTRICTED\Languages\Ruby\ruby-1.8.6p368\lib\ruby\gems\1.8"/> --> 
     <add key="GemPath" value="C:\IronRuby\Lib\ironruby\gems\1.8\gems"/> 
     <add key="RackEnv" value="production"/> 
    </appSettings> 
</configuration> 

=== Booting ironruby-rack at 4/15/2010 1:27:12 PM [DEBUG] >>> TOPLEVEL_BINDING = binding 
=> Setting GEM_PATH: 'C:\\IronRuby\\Lib\\ironruby\\gems\\1.8\\gems' 
=> Setting RACK_ENV: 'production' 
=> Loading RubyGems [DEBUG] >>> require 'rubygems' 
=> Loading Rack >=1.0.0 [DEBUG] >>> gem 'rack', '>=1.0.0';require 'rack' 
=> Loaded rack-1.1 
=> Application root: 'D:\\demo' 
=> Loading Rack application [DEBUG] >>> Rack::Builder.new { (
    require "config/environment" 

    ENV['RAILS_ENV'] = 'development' 

    use Rails::Rack::LogTailer 
    use Rails::Rack::Static 
    run ActionController::Dispatcher.new 
    ) }.to_app exit 
    D:/demo/config/boot.rb:66:in `exit': exit (SystemExit) 
     from D:/demo/config/boot.rb:66:in `load_rails_gem' 
     from D:/demo/config/boot.rb:54:in `load_initializer' 
     from D:/demo/config/boot.rb:38:in `run' 
     from D:/demo/config/boot.rb:11:in `boot!' 
     from D:/demo/config/boot.rb:110 
     from C:/IronRuby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' 
     from C:/IronRuby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' 
     from D:/demo/config/environment.rb:7 
     from C:/IronRuby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' 
     from C:/IronRuby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' 
     from (eval):1 
     from C:/IronRuby/lib/ironruby/gems/1.8/gems/rack-1.1.0/lib/rack/builder.rb:46:in `instance_eval' 
     from C:/IronRuby/lib/ironruby/gems/1.8/gems/rack-1.1.0/lib/rack/builder.rb:46:in `initialize' 
     from (eval):0 
     from D:\Dev\ironruby\ironruby-ironruby-20bc41b\Merlin\Main\Hosts\IronRuby.Rack\RubyEngine.cs:52:in `Execute' 
     from D:\Dev\ironruby\ironruby-ironruby-20bc41b\Merlin\Main\Hosts\IronRuby.Rack\RubyEngine.cs:45:in `Execute' 
     from D:\Dev\ironruby\ironruby-ironruby-20bc41b\Merlin\Main\Hosts\IronRuby.Rack\Application.cs:68:in `Rackup' 
     from D:\Dev\ironruby\ironruby-ironruby-20bc41b\Merlin\Main\Hosts\IronRuby.Rack\Application.cs:32:in `.ctor' 
     from D:\Dev\ironruby\ironruby-ironruby-20bc41b\Merlin\Main\Hosts\IronRuby.Rack\HttpHandlerFactory.cs:37:in `GetHandler' 
     from System.Web:0:in `MapHttpHandler' 
     from System.Web:0:in `System.Web.HttpApplication.IExecutionStep.Execute' 
     from System.Web:0:in `ExecuteStep' 
     from System.Web:0:in `ResumeSteps' 
     from System.Web:0:in `System.Web.IHttpAsyncHandler.BeginProcessRequest' 
     from System.Web:0:in `ProcessRequestInternal' 
     from System.Web:0:in `ProcessRequestNoDemand' 
     from System.Web:0:in `ProcessRequest' 

ответ

3

exit - это способ программно выйти из рубина.

Идея, стоящая за стойкой, заключается в том, что это промежуточное программное обеспечение между рубиновыми веб-фреймами и фактическим сервером приложений. Развязывая это, он позволяет множеству рубиновых фреймворков (рельсы, синатра, ramaze и т. Д.) Нацеливаться на один интерфейс, а множество серверов приложений (mangrel, apache с пассажиром, единорогом и т. Д.) Делают то же самое. Как это выглядит, IR ребята пытаются получить стойку, работающую с IIS. Я сделал быстрый поиск по рельсам по конфигурации стойки и нашел this page

Результат выглядит аналогично тому, что вы видите в методе сервера rails. Я попытался бы выяснить, откуда это происходит:

require "config/environment" 

ENV['RAILS_ENV'] = 'development' 

use Rails::Rack::LogTailer 
use Rails::Rack::Static 
run ActionController::Dispatcher.new 
) }.to_app exit 

и попытайтесь сделать его ближе к тому, что находится в этом руководстве. Если вы не можете получить его там, я бы попытался опубликовать его в списке рассылки IR. Они, как правило, довольно дружелюбны, и поскольку в настоящий момент это такая бахрома, они могут быть единственными, у которых достаточно опыта, чтобы помочь.

Удачи вам :-)

+0

вы были полностью на правильном пути. У меня установлены оба Rack версии 1.0.1 и 1.1.0. Я удалил 1.1.0, и теперь я добираюсь до ошибки маршрутизации .. так что похоже, что я снова на пути к повторной схватке. – NotMyself

+0

сладкий, рад, я смог помочь :) –

+0

@NotMyself - Кажется, я на том же пути, что и вы; Сначала я столкнулся с проблемой «выхода», и удаление 1.1.0 исправлено и для меня. Вы смогли выяснить ошибку маршрутизации? –