5

还有人在玩ironruby吗?

我已经成功地让 IronRuby.Rails.Example 项目在我的本地机器上运行在 IIS 5.1 下。我现在正试图让我自己的演示 Rails 站点以相同的方式运行。

我的 web.config 与示例项目略有不同。我试图只使用随 IronRuby 1.0 分发的内容以及我使用 gems 安装的内容。

我收到以下错误,这并没有给我太多的帮助:

D:/demo/config/boot.rb:66:in `exit': 退出 (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'
4

1 回答 1

3

exit是在 ruby​​ 中以编程方式退出的方式。

rack 背后的想法是它是 ruby​​ web 框架和实际应用服务器之间的中间件。通过将其解耦,它可以让无数的 ruby​​ 框架(rails、sinatra、ramaze 等)以单一接口为目标,而无数的应用服务器(mongrel、带乘客的 apache、独角兽等)也可以做同样的事情。看起来,IR 人员正试图让机架与 IIS 一起工作。我对机架配置上的导轨进行了快速谷歌搜索,并找到了这个页面

输出看起来与您在 rails 服务器方法中看到的类似。我会试着弄清楚这是从哪里来的

require "config/environment"

ENV['RAILS_ENV'] = 'development'

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

并尝试使其更接近该指南中的内容。如果您无法到达那里,我会尝试在 IR 邮件列表上发布。他们往往相当友好,而且由于目前这是一件边缘的事情,他们可能是唯一有足够专业知识来提供帮助的人。

祝你好运 :-)

于 2010-04-15T21:08:51.803 回答