0

私は何らかの方法を探しています。これを使用して、rubyコードで一時ファイルを作成し、その中にいくつかのrubyコードを追加し、その一時ファイルのパスをjruby -cに渡して、構文エラーがないかどうかを確認します。

現在、私は次のアプローチを試みています。

script_file = File.new("#{Rails.root}/test.rb", "w+") 
            script_file.print(content)
            script_file.close
command = "#{RUBY_PATH} -c #{Rails.root}/test.rb"
            eval(command);
            new_script_file.close

コマンドvarを調べると、jruby-c{rubyファイルパス}が正しく表示されています。しかし、上記のコードを実行すると、次のエラーが発生します。

41msで500の内部サーバーエラーを完了しました

SyntaxError((eval):1:dhunknown regexp options --dh):

誰かがこれについて何か考えを持っているかどうか私に知らせてください。

ありがとう、ディーン

4

1 に答える 1

1

evalは、文字列をコマンド ライン呼び出しとしてではなく、 Ruby コードとして評価します。コマンドが有効な Ruby 構文ではないため、この例外が発生します。

Ruby でコマンドを起動する場合は、%x{} または ``:

出力1 =ls

output2 = %x{ls}

どちらの形式も、起動したコマンドの出力を処理する場合は文字列として返します。この出力をユーザー端末に直接表示したい場合は、system() を使用できます。

システム ("ls")

于 2012-09-13T12:18:17.527 に答える