<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -131,7 +131,7 @@ namespace System.Web.Mvc.IronRuby.Tests.Controllers
             _rubyEngine.ExecuteScript(script.ToString());
 
             _controllerDescriptor =
-                MockRepository.GenerateStub&lt;RubyControllerDescriptor&gt;(_rubyEngine.GetRubyClass(&quot;SamuraisController&quot;));
+                MockRepository.GenerateStub&lt;RubyControllerDescriptor&gt;(_rubyEngine.GetRubyClass(&quot;SamuraisController&quot;), _rubyEngine);
         }
 
         protected override RubyActionDescriptor CreateSut()</diff>
      <filename>IronRubyMvc.Tests/Controllers/RubyActionDescriptorFixture.cs</filename>
    </modified>
    <modified>
      <diff>@@ -181,9 +181,11 @@ namespace System.Web.Mvc.IronRuby.Tests.Controllers
         }
 
         [Observation]
-        public void should_have_an_empty_actions_list()
+        public void should_have_at_least_one_action_in_the_canonical_actions_list()
         {
-            Sut.GetCanonicalActions().ShouldBeEmpty();
+            var actions = Sut.GetCanonicalActions();
+            actions.ShouldNotBeEmpty();
+            
         }
 
     }</diff>
      <filename>IronRubyMvc.Tests/Controllers/RubyControllerDescriptorSpec.cs</filename>
    </modified>
    <modified>
      <diff>@@ -253,9 +253,21 @@ namespace System.Web.Mvc.IronRuby.Tests.Controllers
     {
         private Action _action;
 
+        protected override void EstablishContext()
+        {
+            base.EstablishContext();
+
+            var form = new NameValueCollection();
+            var queryString = new NameValueCollection();
+            _httpContextMock.HttpRequest.Expect(r =&gt; r.Form).Returns(form);
+            _httpContextMock.HttpRequest.Expect(r =&gt; r.QueryString).Returns(queryString);
+        }
+
         protected override void Because()
         {
-            _action = () =&gt; ((IController)Sut).Execute(new RequestContext(_httpContextMock.Object, new RouteData{Values = {{&quot;action&quot;, &quot;my_action&quot;}}}));
+            var context = new RequestContext(_httpContextMock.Object, new RouteData {Values = {{&quot;action&quot;, &quot;my_action&quot;}}});
+            
+            _action = () =&gt; ((IController)Sut).Execute(context);
         }
 
         [Observation]</diff>
      <filename>IronRubyMvc.Tests/Controllers/RubyControllerSpec.cs</filename>
    </modified>
    <modified>
      <diff>@@ -48,13 +48,14 @@ namespace System.Web.Mvc.IronRuby.Tests.Core
         [Observation]
         public void it_should_have_a_global_routes_variable()
         {
-            _engine.GetGlobalVariable&lt;object&gt;(&quot;routes&quot;).ShouldNotBeNull();
+            _engine.Context.GetGlobalVariable(&quot;routes&quot;).ShouldNotBeNull();
+//            _engine.GetGlobalVariable&lt;object&gt;(&quot;routes&quot;).ShouldNotBeNull();
         }
 
         [Observation]
         public void routes_should_be_a_ruby_route_collection()
         {
-            _engine.GetGlobalVariable&lt;object&gt;(&quot;routes&quot;).ShouldBeAnInstanceOf&lt;RubyRoutes&gt;();
+            _engine.Context.GetGlobalVariable(&quot;routes&quot;).ShouldBeAnInstanceOf&lt;RubyRoutes&gt;();
         }
 
         [Observation]
@@ -98,7 +99,7 @@ namespace System.Web.Mvc.IronRuby.Tests.Core
         [Observation]
         public void it_should_not_have_a_global_routes_variable()
         {
-            _engine.GetGlobalVariable&lt;object&gt;(&quot;routes&quot;).ShouldBeNull();
+            _engine.Context.GetGlobalVariable(&quot;routes&quot;).ShouldBeNull();
         }
 
 </diff>
      <filename>IronRubyMvc.Tests/Core/RubyEngineSpec.cs</filename>
    </modified>
    <modified>
      <diff>@@ -51,6 +51,10 @@
       &lt;SpecificVersion&gt;False&lt;/SpecificVersion&gt;
       &lt;HintPath&gt;..\dependencies\IronRuby.dll&lt;/HintPath&gt;
     &lt;/Reference&gt;
+    &lt;Reference Include=&quot;IronRuby.Libraries, Version=0.4.0.0, Culture=neutral, processorArchitecture=MSIL&quot;&gt;
+      &lt;SpecificVersion&gt;False&lt;/SpecificVersion&gt;
+      &lt;HintPath&gt;..\dependencies\IronRuby.Libraries.dll&lt;/HintPath&gt;
+    &lt;/Reference&gt;
     &lt;Reference Include=&quot;Microsoft.Scripting, Version=0.9.5.1, Culture=neutral, processorArchitecture=MSIL&quot;&gt;
       &lt;SpecificVersion&gt;False&lt;/SpecificVersion&gt;
       &lt;HintPath&gt;..\dependencies\Microsoft.Scripting.dll&lt;/HintPath&gt;</diff>
      <filename>IronRubyMvc.Tests/IronRubyMvcLibrary.Tests.csproj</filename>
    </modified>
    <modified>
      <diff>@@ -48,7 +48,7 @@ namespace System.Web.Mvc.IronRuby.Core
         /// Gets the context.
         /// &lt;/summary&gt;
         /// &lt;value&gt;The context.&lt;/value&gt;
-        private RubyContext Context { get; set; }
+        internal RubyContext Context { get; set; }
 
         /// &lt;summary&gt;
         /// Gets the engine.
@@ -123,11 +123,14 @@ namespace System.Web.Mvc.IronRuby.Core
         public IEnumerable&lt;string&gt; MethodNames(RubyClass controllerClass)
         {
             var names = new List&lt;string&gt;();
-            controllerClass.EnumerateMethods((_, methodName, __) =&gt;
-                                                 {
-                                                     names.Add(methodName);
-                                                     return false;
-                                                 });
+            using (Context.ClassHierarchyLocker())
+            {
+                controllerClass.EnumerateMethods((_, methodName, __) =&gt;
+                                                     {
+                                                         names.Add(methodName);
+                                                         return false;
+                                                     });
+            }
             return names;
         }
 
@@ -265,7 +268,7 @@ namespace System.Web.Mvc.IronRuby.Core
         public void RequireRubyFile(string path, ReaderType readerType)
         {
             Engine.CreateScriptSource(readerType == ReaderType.File
-                                          ? (StreamContentProvider)new VirtualPathStreamContentProvider(path)
+                                          ? (StreamContentProvider)new VirtualPathStreamContentProvider(path, PathProvider)
                                           : new AssemblyStreamContentProvider(path, typeof (IRubyEngine).Assembly), null, Encoding.ASCII).Execute();
         }
 </diff>
      <filename>IronRubyMvc/Core/RubyEngine.cs</filename>
    </modified>
    <modified>
      <diff>@@ -11,17 +11,19 @@ namespace System.Web.Mvc.IronRuby.Core
     public class VirtualPathStreamContentProvider : StreamContentProvider
     {
         private readonly string _fileName;
+        private readonly IPathProvider _pathProvider;
 
-        public VirtualPathStreamContentProvider(string fileName)
+        public VirtualPathStreamContentProvider(string fileName, IPathProvider pathProvider)
         {
             _fileName = fileName;
+            _pathProvider = pathProvider;
         }
 
         #region Overrides of StreamContentProvider
 
         public override Stream GetStream()
         {
-            return HostingEnvironment.VirtualPathProvider.GetFile(_fileName).Open();
+            return _pathProvider.Open(_fileName);
         }
 
         #endregion</diff>
      <filename>IronRubyMvc/Core/VirtualPathStreamContentProvider.cs</filename>
    </modified>
    <modified>
      <diff>@@ -71,7 +71,7 @@ namespace System.Web.Mvc.IronRuby.Extensions
             var hasKey = filterDescriptions.ContainsKey(key);
             if (hasKey)
             {
-                filters.AddRange((filterDescriptions[key] as RubyArray).Cast&lt;TITarget&gt;());
+                filters.AddRange((filterDescriptions[key] as RubyArray).CastTo&lt;TITarget&gt;());
             }
             return filters;
         }</diff>
      <filename>IronRubyMvc/Extensions/IDictionaryExtensions.cs</filename>
    </modified>
    <modified>
      <diff>@@ -95,5 +95,16 @@ namespace System.Web.Mvc.IronRuby.Extensions
                                    });
             return result;
         }
+
+        internal static IEnumerable&lt;TTarget&gt; CastTo&lt;TTarget&gt;(this IEnumerable collection) where TTarget : class
+        {
+            var result = new List&lt;TTarget&gt;();
+            collection.ForEach(item =&gt;
+            {
+                var casted = (typeof(TTarget) == typeof(string)) ? item.ToString() as TTarget : item as TTarget;
+                if (casted.IsNotNull()) result.Add(casted);
+            });
+            return result;
+        }
     }
 }
\ No newline at end of file</diff>
      <filename>IronRubyMvc/Extensions/IEnumerableExtensions.cs</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/IronRuby.Libraries.Yaml.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/IronRuby.Libraries.Yaml.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/IronRuby.Libraries.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/IronRuby.Libraries.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/IronRuby.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/IronRuby.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/Microsoft.Scripting.Core.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/Microsoft.Scripting.Core.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/Microsoft.Scripting.ExtensionAttribute.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/Microsoft.Scripting.ExtensionAttribute.pdb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/Microsoft.Scripting.dll</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dependencies/Microsoft.Scripting.pdb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>39143f05182d7eebdeeb5c8c22532c5663ad3ece</id>
    </parent>
  </parents>
  <author>
    <name>Ivan Porto Carrero</name>
    <email>ivan@flanders.co.nz</email>
  </author>
  <url>http://github.com/jschementi/ironrubymvc/commit/939319febe205a43d6837e50fe3fe4740708fd58</url>
  <id>939319febe205a43d6837e50fe3fe4740708fd58</id>
  <committed-date>2009-05-02T01:06:21-07:00</committed-date>
  <authored-date>2009-05-02T01:06:21-07:00</authored-date>
  <message>Updated IronRuby, fixed C# specs, fixed errors that came out of using System.Linq for list operations when possible</message>
  <tree>fcf17f357055f64f4f9b5ff5fc21c784887cdb2c</tree>
  <committer>
    <name>Ivan Porto Carrero</name>
    <email>ivan@flanders.co.nz</email>
  </committer>
</commit>
