前提・実現したいこと
Railsでプログラムのコードの正誤判定システムを作っています。
evalを利用して入力したプログラムと解答のプログラムを正誤判定するシステムを作っています。
プログラムをevalで実行すると、なぜか、最後の行だけ実行結果が表示されてしまいます。
プログラミング初心者です。ヒントやアドバイス、よろしくお願い致します。
発生している問題・エラーメッセージ
例えば、
a = "abc"
b = "def"
print a
puts b
のようなコードをevalで実行しようとすると、print a の"abc"は出力されず、puts b の"def"だけが出力・表示されている状況です。
printもputsも両方を出力したいと考えています。
該当のソースコード
#kijyutu_controller.rb def date ''' def seikai @kaitou = Kijutsu.find_by(id: params[:id]) @kaitou2 = @kaitou.seikai.sub("puts","p") binding end''' #問題の解答 @kaitou = Kijutsu.find_by(id: params[:id]) @kaitou2 = @kaitou.seikai.gsub("puts","p").gsub("print","p")#.gsub("\r\n",",") @kaitou3 = eval(@kaitou2) #フォームで入力したコード @seito = Kijutsu.new(title: params[:title],mondai: params[:mondai],seikai: params[:seikai],kaisetu: params[:kaisetu],hint: params[:hint]) @seito2 = @seito.seikai.gsub("puts","p").gsub("print","p") @seito3 = eval(@seito2) #正誤判定 if @kaitou3 == @seito3 flash[:notice] = "正解" render("/kijutsus/kijutsuseikai") else render("/kijutsus/kijutsumatigai") end end
試したこと
@kaitou2 = <<"EOS"
@kaitou.seikai.gsub("puts","p").gsub("print","p")
EOS
@kaitou3 = eval(@kaitou2)
ヒアドキュメントを試しましたが、実行結果の表示は、evalがうまく動かず、コードがそのまま出力されました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/16 08:05