Jas*_*ler 2 c# rubygems ironruby .net-4.0 visual-studio-2010
IronRuby和VS2010 noob问题:
我正试图做一个尖峰来测试C#项目和现有RubyGem之间的互操作的可行性,而不是重新发明.net中的特定轮.我已经下载并安装了IronRuby和RubyGems包,以及我最终想要使用的gem.
运行.rb文件或在iirb Ruby控制台中工作没有问题.我可以加载RubyGems包和gem本身并使用它,所以,至少对于那个用例,我的环境设置正确.
但是,当我尝试在C#(4.0)控制台应用程序中执行相同类型的操作时,它会抱怨第一行:
require 'RubyGems'
Run Code Online (Sandbox Code Playgroud)
有错误:
no such file to load -- rubygems
Run Code Online (Sandbox Code Playgroud)
我的控制台应用程序如下所示:
using System;
using IronRuby;
namespace RubyInteropSpike
{
class Program
{
static void Main(string[] args)
{
var runtime = Ruby.CreateRuntime();
var scope = runtime.ExecuteFile("test.rb");
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
删除依赖项,只是做一些基本的自包含Ruby工作正常,但包括任何类型的'requires'语句似乎导致它失败.
我希望我只需要在创建它时将一些额外的信息(路径等)传递给ruby运行时,并且真的希望这不是某种限制,因为这会让我感到难过.
简短回答:是的,这将按照你想要的方式工作.
您需要使用引擎的SetSearchPaths方法来执行您想要的操作.
一个更完整的示例
(假设您将IronRuby加载到C:\ IronRubyRC2作为根安装目录)
var engine = IronRuby.Ruby.CreateEngine();
engine.SetSearchPaths(new[] {
@"C:\IronRubyRC2\Lib\ironruby",
@"C:\IronRubyRC2\Lib\ruby\1.8",
@"C:\IronRubyRC2\Lib\ruby\site_ruby\1.8"
});
engine.Execute("require 'rubygems'"); // without SetSearchPaths, you get a LoadError
/*
engine.Execute("require 'restclient'"); // install through igem, then check with igem list
engine.Execute("puts RestClient.get('http://localhost/').body");
*/
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1127 次 |
| 最近记录: |