IronrubyエンジンでERBを使用します
質問
ERBシステムを備えたIronrubyを使用して、.erb形式のファイルを解析し、出力を取得したいと思います。
Rubyでは、これは次のようになります。
require "erb"
erbContent = "..."
return ERB.new(erbContent,0,"%<>").result
しかし、これは私のIronRubyプロジェクトでは機能しません。 ERBファイルが欠落していることについて例外があります...だから、これはライブラリの問題だと思います。次に、RubyエンジンをIronrubyディレクトリへのパスで開始しました。これにより、別の例外がスローされます。
allocator undefined for System::String
解決
同様の問題がありましたが、範囲を通じてローカル変数としてスクリプトに文字列を提供していました。ローカル変数は.NET CLR文字列でした。これが問題を引き起こしたものです。こちらをご覧ください).
私にとっての解決策は、to_sを使用してearb.newに渡された文字列をRuby stringに変換することでした。
これが例です(Ruby Snippet):
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スニペットを含む文字列です。
所属していません StackOverflow