[Ironruby-core] problem

Ivan Porto Carrero ivan at flanders.co.nz
Wed Mar 18 15:23:02 EDT 2009


If so turn off shadow copy assemblies under Resharper -> options -> unit
testing

On Wed, Mar 18, 2009 at 8:22 PM, Ivan Porto Carrero <ivan at flanders.co.nz>wrote:

> Are you using resharper for your unit tests?
>
>
>
> 2009/3/18 Nathan Stott <nrstott at gmail.com>
>
>> 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
>> at Motorpool.Calendar.Web.Test.ComponentLoaderRegisteringComponentContext
>> .ShouldRegisterComponent() in
>> ComponentLoaderRegisteringComponentContext.cs: line 26
>>
>> 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
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> 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/e15d21dc/attachment-0001.html>


More information about the Ironruby-core mailing list