2010-05-12 6 views
0

Je tente d'exécuter un script IronRuby de C#:Résolution "exige" s lors de l'exécution IronRuby de C#

var runtime = IronRuby.Ruby.CreateRuntime();     
runtime.ExecuteFile("ruby/foo.rb"); 

foo.rb commence par un "besoin:"

#!/usr/bin/env ruby 
require 'bar' 

Lorsque J'essaye ceci, j'obtiens une exception indiquant "aucun tel tel à charger - barre." Le fichier "bar.rb" et le répertoire "bar" sont tous deux présents dans le répertoire "ruby". Alors, comment exécuter un script ruby ​​qui nécessite d'autres fichiers ruby? Je cible .Net 3.5.

Répondre

4

Utilisez le lieu ScriptEngine et ajoutez vos fichiers de code ruby ​​répertoire au chemin de recherche:

var engine = IronRuby.Ruby.CreateEngine(); 

var paths = engine.GetSearchPaths().ToList(); 
paths.Add(@"C:\Path\To\My\Ruby\Files"); // Add the path to your ruby code files 
engine.SetSearchPaths(paths); 

engine.ExecuteFile("ruby/foo.rb"); 
+0

Merci! Cela fonctionne avec un changement mineur, que j'ai fait ci-dessus. –

+0

@Shay, @James: Comment suggérez-vous de corriger le problème lorsque les fichiers en question sont des librairies Ruby standard? Je reçois l'erreur ci-dessus en faisant 'require 'net/http''. –