colinux 経由の ruby-run-script-immediate

rubyの勉強をしようと思ったがwindows上だと何かと不便なのでcoLinux上に環境構築(つってもapt-getだけ)しかしエディタはWindows上でxyzzy使ってるので…

irbだといろいろ面倒なので「スクリプトを書く→結果を見る」みたいなことを繰り返して勉強したいところ。幸い ruby-mode だと ruby-run-script-immediate ってのがあって、現在編集中のバッファをrubyで実行みたいなことが簡単にできる。

しかしWindowsから動かすことはできない…などと考えていたら、PuTTYについているplinkというコマンドで、「sshでログインした後、好きなコマンドを実行してその出力結果をwindows上で得る」という一連の動作をできることを発見。

しかしファイルの受け渡しという問題が。ファイルの受け渡し自体はcolinux上からWindowsのファイルをcofsで見ているので問題ないのだが、ファイル名を変換しないといけない。そこでcoLinux上で

#!/usr/bin/env ruby
a =[]
ARGV.each do |v|
  v = v.gsub( "\\", '/' )
  v = v.gsub( /c\:\/data\//i , '/win/' )
  a.push v
end
system( *a )

という内容の win というコマンドを作成し*1Windows上から

plink colinux win ruby c:\data\hoge.rb

と実行してやると*2colinux上でrubyが走り、その内容を得られることを確認。で、.xyzzy

(setf *ruby-prog* "plink colinux ./win ruby")

と設定してやれば、ruby-run-script-immediate が動くようになった。

*1:上記例だと c:\data\ はcofsにより /win/ にマウントされている

*2:PuTTY上でcolinuxという名前でcolinuxにパスワードなしでログインするセッションが保存してある