Arquivos

Posts Etiquetados ‘IronRuby’

IronRuby – Integração com .Net

Hoje vou falar um pouco sobre IronRuby. Não sou um expert, mas comecei a brincar com o IronRuby, e percebi que ele é mais uma ferramenta pra guardar em nossa caixa de ferramentas.

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 defina um script para calculo do frete, normalmente se usaria um vbscript. Mas porque não utilizar uma linguagem dinâmica como o ruby? 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:

public void CriaCalculadora
{
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 ]

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.