[ .NET ] IronRuby Integration

- quinta-feira, 8 de julho de 2010

Hoje 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 ]



Blogado por Rafa Almeida as 23:06
Rafael Almeida Rafael da Silva Almeida, 22 Desenvolvedor;
C#, VB.NET, Java, C, Phyton, Linq, MVC;
VSTS, SQL, TV Digital, Xletview;
eusou@rafaelalmeida.net
SKYPE: stupied4ever
MSN: r.almeidasilva@terra.com.br
Twitter

Ultimos Posts

Amigos