2007/10/02(火) [n年前の日記]
#7 [prog] xyzzy + ruby-modeで実行できなくて悩む
環境変数 RUBYOPT に -Ku を指定してる状態で、DOS窓から下のスクリプトを実行すると両方動いてくれるのだけど。(DOS窓内なので、上は文字化けするが、実行はされる。)
_ruby-mode for xyzzy で、C-c C-x (editor::ruby-run-script-immediate) をしても、前者は動くが、後者はエラーが出る。こんな感じのメッセージが。
#!/usr/bin/ruby puts '終了'
#!/usr/bin/ruby require "tk" TkLabel.new { text 'こんにちは' }.pack TkButton.new { text '終了' command 'exit' }.pack Tk.mainloop
_ruby-mode for xyzzy で、C-c C-x (editor::ruby-run-script-immediate) をしても、前者は動くが、後者はエラーが出る。こんな感じのメッセージが。
C:/home/prg/ruby/__temp_u4kp.rb:10: Invalid char `\217' in expression C:/home/prg/ruby/__temp_u4kp.rb:10: syntax error text '終了' ^ C:/home/prg/ruby/__temp_u4kp.rb:10: Invalid char `\227' in expression C:/home/prg/ruby/__temp_u4kp.rb:10: Invalid char `\271' in expression C:/home/prg/ruby/__temp_u4kp.rb:11: syntax error command 'exit' ^ C:/home/prg/ruby/__temp_u4kp.rb:11: unterminated string meets end of file C:/home/prg/ruby/__temp_u4kp.rb:11: syntax error何故。utf8nで保存してるんだけどなぁ…。
◎ スクリプトファイルを直接保存して実行するようにしたら動いた。 :
ruby-mode for xyzzy によるスクリプト実行は、標準設定なら仮ファイルを保存して、その仮ファイルを実行するのだけど。
~/.xyzzy に、
おそらく、仮ファイルを保存する際に、元ファイルの文字コードによってはおかしな状態で保存・実行されてしまうのでは。と根拠のない想像を。
~/.xyzzy に、
(setq *ruby-save-bufer-before-run* t)と書くと、編集中のファイルを保存→実行するように処理が変わるようで。それならエラーを出さずに実行できた。
おそらく、仮ファイルを保存する際に、元ファイルの文字コードによってはおかしな状態で保存・実行されてしまうのでは。と根拠のない想像を。
◎ _ [Ruby] Windowsのメモ帳によるUTF-8エンコーディング - Day by day (2007-03-05) :
関係あるかどうかわからないけどメモ。UTF8はBOMが入るのでよろしくないという話。
◎ _Rubyist Magazine - 標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconv :
[ ツッコむ ]
以上です。