現在、特定のフォルダー内のファイルを検索するスクリプトを開発しています。それらのファイルを複製したいと思います。次に、これらの重複ファイルから不要な行をいくつか削除し、YAMLで解析します(これはコンテンツの形式です)。そして最後にファイルの差分を作成します。
最初はそれらをtmp
フォルダーにコピーすることを考えていましTempfile
たが、スクリプトが機能した後に一時ファイルを削除する必要があるため、その存在がまさに必要なものであることに気付きました。
私が今持っているもの:
require 'Tempfile'
require 'YAML'
PWD = File.dirname(__FILE__)
LOCALES_FOLDER_PATH = "#{PWD}/../app/assets/javascripts/ayl/bo/config/locales"
LOCALES = ['en', 'fr']
files_data = {}
locale_file_names = LOCALES.map{|locale| "#{locale}.js.coffee"}
files = locale_file_names.map do |locale_file_name|
files_data[locale_file_name] = "#{LOCALES_FOLDER_PATH}/#{locale_file_name}"
end
locale_files = []
files.each do |file|
content = File.open(file).read
locale_file = Tempfile.open file.gsub("/", "_") do |f|
f.write content
f.flush
puts f.read
end
locale_files << locale_file
end
結果:
± ruby diff_locales.rb
/Users/adrien/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/YAML.rb:48: warning: already initialized constant ENGINE
/Users/adrien/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/YAML.rb:69: warning: already initialized constant ENGINE
/Users/adrien/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/YAML.rb:73: warning: already initialized constant ENGINE
±
一時ファイルの内容が空です。
これは私には奇妙に思えます。しかし、私はそれらが私が知らない/理解していないものだと思います。
わかった!理解した!ブロック内では、コンテンツを読み取る前に、カーソルをファイルの先頭に戻す必要がありました。