首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在IronRuby引擎中使用ERB

在IronRuby引擎中使用ERB
EN

Stack Overflow用户
提问于 2011-12-03 08:41:10
回答 1查看 155关注 0票数 0

我想在雇员再培训局系统中使用IronRuby来解析.erb格式的文件并获得输出。

在ruby中,这将类似于:

代码语言:javascript
复制
require "erb"
erbContent = "..."
return ERB.new(erbContent,0,"%<>").result

但这在我的IronRuby项目中是行不通的。我得到了一个关于erb文件丢失的异常...所以我猜这是一个库问题。然后我用IronRuby目录的路径启动了我的Ruby引擎,然后抛出了一个不同的异常:

代码语言:javascript
复制
allocator undefined for System::String
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-11 06:48:26

我也遇到过类似的问题,但我通过作用域将字符串作为局部变量提供给脚本。本地变量是一个.NET CLR字符串,这是导致问题(please see here)的原因。

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

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

代码语言:javascript
复制
require 'erb'

template = ERB.new(template_code.to_s)
template.result(binding)

调用上述脚本的C#部件:

代码语言:javascript
复制
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代码片段的字符串。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8364490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档