[Ironruby-core] problem

Nathan Stott nrstott at gmail.com
Wed Mar 18 14:57:12 EDT 2009


I dont know if this helps, but this is the full output of the test:

ComponentLoaderRegisteringComponentContext.ShouldRegisterComponent : Failed
CT_INIT: Object
UPDATED: Object
CreateInstanceSingleton        affected=1     rules=0
UPDATED: Object
CreateInstanceSingleton        affected=1     rules=0
CT_INIT: File::Constants
CT_INIT: IO
CT_INIT: File
UPDATED: Object
CreateInstanceSingleton        affected=1     rules=0
MT_INIT: Kernel
MT_INIT: Object
MT_INIT: <anonymous>
MT_INIT: Module
MT_INIT: Class
MT_INIT: <anonymous>
UPDATED: Object
CreateInstanceSingleton        affected=5     rules=1
MT_INIT: <anonymous>
LOADER: Loading assembly 'Motorpool.Calendar.Web.Test,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' and type ''
MT_INIT: Symbol
MT_INIT: Enumerable
MT_INIT: Hash
MT_INIT: Microsoft::Scripting::Actions::TypeTracker
MT_INIT: Microsoft::Scripting::Actions::TypeGroup
System.InvalidOperationException: can't convert
Castle::Core::ComponentModel into Castle::Core::ComponentModel
at CallSite.Target(Closure , CallSite , RubyMethodScope , Object , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecute3<T0,T1,T2,TRet>(CallSite
site, T0 arg0, T1 arg1, T2 arg2) in
C:\git\ironruby\ndp\fx\src\Core\Microsoft\Scripting\Actions\UpdateDelegates.Generated.cs:
line 509
at ℑℜ;component;;10;(Closure , Object , Proc , Object )
at CallSite.Target(Closure , CallSite , RubyScope , Object , Hash )
at System.Dynamic.UpdateDelegates.UpdateAndExecute3<T0,T1,T2,TRet>(CallSite
site, T0 arg0, T1 arg1, T2 arg2) in
C:\git\ironruby\ndp\fx\src\Core\Microsoft\Scripting\Actions\UpdateDelegates.Generated.cs:
line 509
at ℑℜ;#;;0;(Closure , Scope , LanguageContext )
at Microsoft.Scripting.Runtime.LegacyScriptCode.Run() in
C:\git\ironruby\Merlin\Main\Runtime\Microsoft.Scripting\Runtime\LegacyScriptCode.cs:
line 43
at Microsoft.Scripting.SourceUnit.Execute() in
C:\git\ironruby\Merlin\Main\Runtime\Microsoft.Scripting\SourceUnit.cs: line 239
at Microsoft.Scripting.Hosting.ScriptSource.Execute() in
C:\git\ironruby\Merlin\Main\Runtime\Microsoft.Scripting\Hosting\ScriptSource.cs:
line 138
at Motorpool.Calendar.Service.ComponentLoader.Load(IWindsorContainer
container, TextReader reader) in ComponentLoader.cs: line
64<about:file%3A%2F%2F51192FB1-7EF2-4CAF-BAF3-3F0F7A10E911%2Ff%3AComponentLoader.cs%3Fline%3D64%26column%3D1>
at Motorpool.Calendar.Web.Test.ComponentLoaderRegisteringComponentContext
.ShouldRegisterComponent() in
ComponentLoaderRegisteringComponentContext.cs: line
26<about:file%3A%2F%2F532B0F7A-5F7B-4C0E-AF76-4BC0CE12DB4F%2Ff%3AComponentLoaderRegisteringComponentContext.cs%3Fline%3D26%26column%3D1>

On Wed, Mar 18, 2009 at 1:55 PM, Nathan Stott <nrstott at gmail.com> wrote:

> I tried that and no luck.
> It doesn't seem that the assembly is not being loaded properly.  I'm able
> to use methods on the objects fine in the script.  However, it is that last
> call to the $container.Register(ComponentRegistration.new(model)) where
> for some reason it won't work.
>
> ComponentRegistration.new() takes a ComponentModel.  The error seems to
> indicate that it is receiving a ComponentModel even with the same namespace
> prefixes but somehow it's not able to use it.
>
> 2009/3/18 Ivan Porto Carrero <ivan at flanders.co.nz>
>
> You can try using the LoadAssembly method on the runtime object
>>
>> runtime.LoadAssembly(typeof(IWindsorContainer).Assembly);
>>
>> that should require the assembly a little nicer
>>
>> I think you can also use load_assembly 'Castle.Windsor'
>>
>>
>> http://github.com/casualjim/ninject-dynamic/blob/0b531d9e3ae46cc3e8549c9cfc078a8c27e5dda7/src/Ninject.Dynamic/RubyEngine.cs#L166
>>
>> http://github.com/casualjim/ninject-dynamic/blob/0b531d9e3ae46cc3e8549c9cfc078a8c27e5dda7/src/Ninject.Dynamic/RubyEngine.cs#L142
>>
>> http://github.com/casualjim/ninject-dynamic/blob/0b531d9e3ae46cc3e8549c9cfc078a8c27e5dda7/src/Ninject.Dynamic/RubyEngine.cs#L90
>>
>>
>>
>> 2009/3/18 Nathan Stott <nrstott at gmail.com>
>>
>> I'm using the hosting API.
>>> This is the entire method:
>>> public void Load(IWindsorContainer container, TextReader reader)
>>>  {
>>> var runtime = Ruby.CreateRuntime();
>>> ScriptEngine engine = Ruby.GetEngine(runtime);
>>>  var ctx = Ruby.GetExecutionContext(runtime);
>>> ctx.DefineReadOnlyGlobalVariable("container", container);
>>>
>>> string header =
>>> @"require 'Castle.Windsor'
>>> require 'Castle.MicroKernel'
>>> require 'Castle.Core'
>>>
>>> ComponentRegistration =
>>> Castle::MicroKernel::Registration::ComponentRegistration
>>> ComponentModel = Castle::Core::ComponentModel
>>> Parameter = Castle::MicroKernel::Registration::Parameter
>>> Component = Castle::MicroKernel::Registration::Component
>>>
>>> def component(options)
>>> throw :classIsRequired if !options.has_key?(:class)
>>>  klass = options[:class].to_clr_type
>>>  if options.has_key?(:service)
>>> service = options[:service].to_clr_type
>>> else
>>>  service = klass
>>> end
>>>  if options.has_key?(:name)
>>> name = options[:name]
>>> else
>>>  name = klass.class.name.underscore.lowercase
>>> end
>>>  model = ComponentModel.new(name, service, klass)
>>>  if options.has_key?(:parameters)
>>>  parameters = options[:parameters]
>>> parameters.each do |p|
>>> model.Parameters.Add(p.key, p.value)
>>>  end
>>> end
>>>  $container.Register(ComponentRegistration.new(model))
>>> end";
>>>
>>> ScriptSource headerSource = engine.CreateScriptSourceFromString(header);
>>>  headerSource.Execute();
>>>
>>> string containerScript = reader.ReadToEnd();
>>>  ScriptSource source =
>>> engine.CreateScriptSourceFromString(containerScript);
>>> source.Execute();
>>>  }
>>> }
>>>
>>> 2009/3/18 Tomas Matousek <Tomas.Matousek at microsoft.com>
>>>
>>>>  How do you run this script? From command line (ir.exe script.rb) or do
>>>> you use hosting API?
>>>>
>>>>
>>>>
>>>> Tomas
>>>>
>>>>
>>>>
>>>> *From:* ironruby-core-bounces at rubyforge.org [mailto:
>>>> ironruby-core-bounces at rubyforge.org] *On Behalf Of *Nathan Stott
>>>> *Sent:* Wednesday, March 18, 2009 8:33 AM
>>>> *To:* ironruby-core at rubyforge.org
>>>> *Subject:* [Ironruby-core] problem
>>>>
>>>>
>>>>
>>>> Hi all.  I have a question that probably belongs on a users mailing list
>>>> but I could not find one.
>>>>
>>>>
>>>>
>>>> I get the following error when trying to use my IronRuby windsor
>>>> registration script:
>>>>
>>>> *
>>>> System.InvalidOperationException: can't convert Castle::Core::ComponentModel into Castle::Core::ComponentModel
>>>> *
>>>>
>>>>
>>>>
>>>> I assume this has something to do with the fact that newing up an object
>>>> in IronRuby isn't the same thing as newing it up in C#.
>>>>
>>>>
>>>>
>>>> Any suggestions or guidance would be appreciated.
>>>>
>>>>
>>>>
>>>> Here is the important IronRuby code:
>>>>
>>>>
>>>>
>>>> require 'Castle.Windsor'
>>>>
>>>> require 'Castle.MicroKernel'
>>>>
>>>> require 'Castle.Core'
>>>>
>>>>
>>>>
>>>> ComponentRegistration =
>>>> Castle::MicroKernel::Registration::ComponentRegistration
>>>>
>>>> ComponentModel = Castle::Core::ComponentModel
>>>>
>>>> Parameter = Castle::MicroKernel::Registration::Parameter
>>>>
>>>> Component = Castle::MicroKernel::Registration::Component
>>>>
>>>>
>>>>
>>>> def component(options)
>>>>
>>>>             throw :classIsRequired if !options.has_key?(:class)
>>>>
>>>>
>>>>
>>>>             klass = options[:class].to_clr_type
>>>>
>>>>
>>>>
>>>>             if options.has_key?(:service)
>>>>
>>>>                         service = options[:service].to_clr_type
>>>>
>>>>             else
>>>>
>>>>                         service = klass
>>>>
>>>>             end
>>>>
>>>>
>>>>
>>>>             if options.has_key?(:name)
>>>>
>>>>                         name = options[:name]
>>>>
>>>>             else
>>>>
>>>>                         name = klass.class.name.underscore.lowercase
>>>>
>>>>             end
>>>>
>>>>
>>>>
>>>>             model = ComponentModel.new(name, service, klass)
>>>>
>>>>
>>>>
>>>>             if options.has_key?(:parameters)
>>>>
>>>>                         parameters = options[:parameters]
>>>>
>>>>                         parameters.each do |p|
>>>>
>>>>                                     model.Parameters.Add(p.key,
>>>> p.value)
>>>>
>>>>                         end
>>>>
>>>>             end
>>>>
>>>>
>>>>
>>>>             $container.Register(ComponentRegistration.new(model))
>>>>
>>>> end
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Ironruby-core mailing list
>>>> Ironruby-core at rubyforge.org
>>>> http://rubyforge.org/mailman/listinfo/ironruby-core
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Ironruby-core mailing list
>>> Ironruby-core at rubyforge.org
>>> http://rubyforge.org/mailman/listinfo/ironruby-core
>>>
>>>
>>
>> _______________________________________________
>> Ironruby-core mailing list
>> Ironruby-core at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/ironruby-core
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/ironruby-core/attachments/20090318/d4d1e883/attachment-0001.html>


More information about the Ironruby-core mailing list