`

将Rails项目从Ruby 1.8.7升级到Ruby 1.9.2的脚本

阅读更多
Ruby 1.9的代码文件中,如果包含了utf-8字符,那么需要在文件的第一行加上# encoding: utf-8。我找到这样一个脚本来自动增加。
http://stackoverflow.com/questions/3999415/why-are-all-strings-ascii-8bit-after-i-upgraded-to-rails-3/4158423#4158423

在lib/tasks目录下创建个文件lib/tasks/utf8encode.rake,内容如下:
# encoding: utf-8
desc "Manage the encoding header of Ruby files"
task :utf8_encode_headers => :environment do
  files = Array.new
  ["*.rb", "*.rake"].each do |extension|
    files.concat(Dir[ File.join(Dir.getwd.split(/\\/), "**", extension) ])
  end

  files.each do |file|
    content = File.read(file)
    next if content[0..16] == "# encoding: utf-8\n" ||
            content[0..22] == "# -*- encoding: utf-8 -*-"

   ["\n\n", "\n"].each do |file_end|
      content = content.gsub(/(# coding: utf-8#{file_end})|(# encoding: utf-8#{file_end})|(# -*- coding: utf-8 -*-#{file_end})|(# -*- encoding: utf-8 -*-#{file_end})/i, "")
    end

    new_file = File.open(file, "w")
    new_file.write("# encoding: utf-8\n"+content)
    new_file.close
  end
end


运行rake utf8_encode_headers,好了,现在脚本全都帮你加完了
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics