0

私は、windowspc で exerb を使用して実行可能ファイルを作成したい、この作業中の Ruby コードです。hello_world.rb をコンパイルすると、実行可能ファイルの実行に問題はありませんが、このコードでは Exerb が実行可能ファイルを作成しますが、実行すると次のエラーが発生します

undefined method `write' for File:Class (NoMethodError)

ここにコード

def replace text
  replacements = [
     {:pattern => /(^ARFD0001\|.*)(FAC_12125)/, :replace_with => '\1FAC_12102'},
     {:pattern => /^ARFD0001\|121\|25\|ZIEFAC\|/, :replace_with => 'ARFD0001|121|02|ZIEFAC|'},
     {:pattern => /(^ARFD0010\|.*)(12125203)(\d{3})/, :replace_with => '\112102181\3'},
     {:pattern => /(^ARFD0010\|.*)(2030341401)/, :replace_with => '\1181701500'},
     {:pattern => /(^ARFD0019\|.*)(12125203)(\d{3})/, :replace_with => '\112102181\3'},
     {:pattern => /(^ARFD0019\|\d*\|\d*\|\d*)(\|{2})/, :replace_with => '\1|PRINT|'},
     {:pattern => /^ARFD0009\|121\|25\|/, :replace_with => 'ARFD0009|121|02|'}
  ].each{|replacement|text.gsub!(replacement[:pattern], replacement[:replace_with])}
  text
end

Dir.glob("*.txt").each{|file|File.write(file, replace(File.read(file)))}
#line above gives the error in Exerb

これをどうやって手に入れるのですか?コードに問題はありません。Ruby インタープリターではこれは機能しますが、Execrb に File クラスを含めるように指示する必要があるようです。

4

1 に答える 1

2

Fileクラスに書き込みメソッドはありません。最初にファイルを開く必要があり、それから書き込みを行うことができます。これは次のように行うことができます。

Dir.glob("*.txt").each do |file|
  File.open(file, 'w') {|f| f.write replace(File.read(file))}
end
于 2012-05-09T16:54:56.217 に答える