5

アイアンルビーで遊んでいる人はいますか?

IIS 5.1 のローカル マシンで IronRuby.Rails.Example プロジェクトを実行することに成功しました。私は現在、自分のデモ レール サイトを同じ方法で実行しようとしています。

私の web.config は、サンプル プロジェクトとは少し異なります。IronRuby 1.0 で配布されたものと、gem を使用してインストールしたもののみを使用しようとしています。

次のエラーが表示されますが、これでは多くのことができません。

D:/demo/config/boot.rb:66:in `exit': 終了 (SystemExit)

いろいろ試してみた結果、宝石を見つけるのに問題があると思います。Web 構成と 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 でプログラムによって終了する方法です。

ラックの背後にあるアイデアは、Ruby Web フレームワークと実際のアプリ サーバーの間のミドルウェアであるということです。それを切り離すことで、無数の ruby​​ フレームワーク (Rails、sinatra、ramaze など) が単一のインターフェースをターゲットにできるようになり、無数のアプリ サーバー (mongrel、パッセンジャー付きの apache、unicorn など) が同じことを行うようになります。どうやら、IR 担当者がラックを IIS で動作させようとしているようです。Rails on Rack構成について簡単にグーグルで調べたところ、このページが見つかりました

出力は、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 に答える