質問

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スニペットを含む文字列です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top