[ .NET ] IronRuby Integration
- quinta-feira, 8 de julho de 2010Hoje vou falar um pouco sobre IronRuby. Não sou um expert, mas comecei a brincar com o IronRuby, ele é mais uma ferramenta pra guardar naquela caixa de ferramentas que se quando temos um problema.
Em alguns casos queremos precisamos de uma linguagem dinâmica para realizar tarefas complicadas de maneira muito mais facil. Imagine por exemplo que você quer permitir que o cliente execute alguns tipos de scripts, normalmente se usaria um vbscript, mas porque não utilizar uma linguagem dinâmica? Alguns, como eu, devem estar achando que integrar uma linguagem como o ruby ao .net deve ser muito complicado, se você é um desses é porque não conhece o IronRuby (ou IronPyton, teoricamente os dois são muito parecidos).
No exemplo que colocarei para download, mostro como integrar o IronRuby com C#, para isso crio uma Interface simples ICalc e implemento ela em duas classes do ruby. depois executo as duas "calculadoras" que implementei ("somadora" e "multiplicadora").
Segue o exemplo do codigo para a chamada de um arquivo Ruby:
var runtime = Ruby.CreateRuntime();
var engine = runtime.GetEngine("rb");
var paths = new List<string>();
paths.Add(@"E:\Workspace\RafaelAlmeida.net\Trunk\Exemplos\IronRuby\Calculators.Console\bin\Release");
engine.SetSearchPaths(paths);
// Cria calculadora que sabe multiplicar
engine.ExecuteFile("Pessoa.rb");
var rubyClass = engine.Runtime.Globals.GetVariable("Multiplicadora");
var calculator = (ICalc)engine.Operations.CreateInstance(rubyClass);
// Calcula
var result = calculator.calculate(A, B);
// Imprime resultado
System.Console.WriteLine(string.Format("A * B = {0}", result));
// Cria calculadora que sabe somar
rubyClass = engine.Runtime.Globals.GetVariable("Somadora");
calculator = (ICalc)engine.Operations.CreateInstance(rubyClass);
// Calcula
result = calculator.calculate(A, B);
// Imprime resultado
System.Console.WriteLine(string.Format("A + B = {0}", result));
Simples não é? Se você quiser ver o exemplo completo, faça o download [ Aqui ]
Ultimos Posts
25/7/2010
16/7/2010
8/7/2010
29/6/2010
8/2/2010
Amigos
Navarro
Klaus
Andre
Danilo
Tomás
Carolina Andrade
Design By Carolina Andrade
Rafael da Silva Almeida, 22 Desenvolvedor;
