ruby1.9.1でTTSP(1.1.1)を実行しようとすると,invalid multibyte char (US-ASCII)になる場合の対処法
CygwinをアップデートしたらTTSP(1.1.1)が動かなくなった*1…
---------------------------------------------------------------------- Execute TTG in auto_code_1 ---------------------------------------------------------------------- /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': /home/mtakada/hrp2/2.0.0/ttsp/tools/ttg/common/bin/CommonModule.rb:2049: invalid multibyte char (US-ASCII) (SyntaxError) /home/mtakada/hrp2/2.0.0/ttsp/tools/ttg/common/bin/CommonModule.rb:2049: invalid multibyte char (US-ASCII) /home/mtakada/hrp2/2.0.0/ttsp/tools/ttg/common/bin/CommonModule.rb:2049: syntax error, unexpected $end, expecting keyword_end TTJ_ATTR_EMPTY = "▒ʤ▒" ^ from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /home/mtakada/hrp2/2.0.0/ttsp/tools/ttg/common/bin/Config.rb:42:in `<top (required)>' from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from /home/mtakada/hrp2/2.0.0/ttsp/tools/ttg/bin/ttg.rb:46:in `<main>' TTG failed in auto_code_1
ぐぐると,どうやらruby1.9.1では日本語の対処が変わったようです。
invalid multibyte char (US-ASCII)とか出てきた
Ruby 1.9上のRailsでinvalid multibyte char (US-ASCII)の対処
なので,こちらも該当箇所のファイルの先頭に追加します。
#!ruby # -*- coding: euc-jp -*- # # TTG
今のところ次のファイル修正しました。
ttsp/tools/ttg/bin/builder/HTMLBuilder.rb
ttsp/tools/ttg/common/bin/CommonModule.rb
ttsp/tools/ttg/ttj/bin/class/TTJModule.rb
ttsp/tools/ttg/ttj/bin/test_scenario/Condition.rb
ttg/ttj/bin/dictionary.rb
そろそろファイルの文字コードはeucじゃなくてUTF-8に移行したほうがいいんじゃないですかね。
追記:TTSP1.1.2では以下のように対応しているようです。
#!ruby -Ke # # TTG ...
って調べると,引っかかっていたKCODEの対応になっているようです。
なので,上記修正したファイルをTTSP1.1.2で修正したようにさらに変更しました。
#!ruby -Ke # -*- coding: euc-jp -*- # # TTG
修正したファイル
ttsp/tools/ttg/ttj/bin/class/TTJModule.rb
ttsp/tools/ttg/ttj/bin/ttj.rb
最後にYAMLファイルのロード箇所を修正します。
ttsp/ttg/ttc/bin/class/TTCCommon.rbにkconvを追加します。
require "kconv" require "yaml" require "common/bin/CommonModule.rb" require "ttc/bin/class/TTCError.rb" require "ttc/bin/class/ObjectCommon.rb" require "ttc/bin/kwalify.rb" require "common/bin/Config.rb" #===================================================================== # TTCModule #===================================================================== module TTCModule include CommonModule #=================================================================== # 概 要: YAMLファイルをロードする #=================================================================== def load_yaml_file(sFileName) check_class(String, sFileName) # ファイル名 cConf = Config.new() begin if (cConf.use_yaml_library?()) yaml = YAML.load(File.read(sFileName).toutf8) else yaml = Kwalify::Yaml.load_file(sFileName) end rescue SystemCallError raise(TTCError.new(sprintf(ERR_CANNOT_OPEN_FILE, sFileName) + "#{TTG_NL}(#{$!.message()})")) rescue ArgumentError raise(TTCError.new(sprintf(ERR_YAML_SYNTAX_INVALID, sFileName) + "#{TTG_NL}(#{$!.message()})")) rescue Kwalify::SyntaxError raise(TTCError.new(sprintf(ERR_YAML_SYNTAX_INVALID, sFileName) + "#{TTG_NL}(#{$!.message()})")) end
*1:1.1.2では対応しているはず