|
|
IronRuby > Documentation > .NET Integration > Hosting
HostingFrom $1Table of contentsNo headersHere is some code that we put together for the ASP.NET MVC team. They used it to prototype their IronRuby integration that we showed at Tech Ed 2008. Here's how you can execute a simple file: using Microsoft.Scripting.Hosting;
var runtime = ScriptRuntime.Create();
runtime.ExecuteFile("MyController.rb") Where MyController.rb contains: class MyController
def do_foo a, b
puts a, b
end
end This will define the MyController class and the do_foo method. Here's some code that instantiates the controller and retrieves the action method: var engine = runtime.GetEngine("Ruby");
// TODO: should check that the values are identifiers
var code = String.Format("{0}.new.method :{1}", "MyController", "do_foo");
var action = engine.CreateScriptSourceFromString(code).Execute(); The action variable now holds on do_foo method bound to the controller instance. You can invoke it by: var result = engine.Operations.Call(action, 1, 2); The definitive reference is the DLR hosting specification.
Tags:
|
In my latest project, I had to issue code like
var runtime = IronRuby.Ruby.CreateRuntime();
try {
var foo = Ruby.Runtime.Protocols.Normalize(10);
} catch {}
otherwise I got really bad problems
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Reflection.TargetInvocationException: Failed to load language 'IronRuby': Could not load file or assembly 'IronRuby.Libraries, Version=0.9.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. ---> IronRuby.Builtins.LoadError: Could not load file or assembly 'IronRuby.Libraries, Version=0.9.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. ---> System.IO.FileNotFoundException: Could not load file or assembly 'IronRuby.Libraries, Version=0.9.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. File name: 'IronRuby.Libraries, Version=0.9.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) at System.Reflection.Assembly.Load(String assemblyString) at Microsoft.Scripting.PlatformAdaptationLayer.LoadAssembly(String name) at IronRuby.Runtime.Loader.LoadBuiltins()
I'm referencing all of DLLs from the IronRuby distribution:
IronRuby
IronRuby.Libraries
IronRuby.Libraries.YAML
Microsoft.Dynamic
Microsoft.Scripting
Microsoft.Scripting.Core
Microsoft.Debugging
Microsoft.Scripting.ExtensionAttribute
Am I missing some other 3rd party library? Or is there some other kind of set up such as an environment variable I need to set up? edited 16:12, 11 Nov 2009