在IronRuby引擎中使用ERB



我想使用IronRuby与ERB系统来解析。ERB格式文件并获得输出。

在ruby中应该是:

require "erb"
erbContent = "..."
return ERB.new(erbContent,0,"%<>").result

但是这在我的IronRuby项目中不起作用。我得到一个关于动词文件丢失的异常…所以我想这是图书馆的问题。然后我用IronRuby目录的路径启动了我的Ruby引擎,然后抛出了一个不同的异常:

allocator undefined for System::String

我有一个类似的问题,但是我通过作用域将字符串作为局部变量提供给脚本。局部变量是一个。net CLR字符串,这就是导致问题的原因(请参阅这里)。

我的解决方案是转换字符串传递给ERB。使用to_s.

下面是一个示例(Ruby代码片段):

require 'erb'
template = ERB.new(template_code.to_s)
template.result(binding)

调用上述脚本的c#部分:

var scriptEngine = Ruby.CreateEngine();
var templateCode = "my ERB template code goes here";
// Pass the template code to the Ruby script through a scope
var scope = _scriptEngine.CreateScope(new Dictionary<string, object>() 
                                                  { 
                                                    {"template_code", templateCode}
                                                  });
var result scriptEngine.Execute(_boostrapScript, scope).ToString();

在上面的c#代码片段中,_bootstrapScript是一个字符串,它包含上面的Ruby代码片段。

相关内容

  • 没有找到相关文章