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 というコマンドを作成し*1、Windows上から
plink colinux win ruby c:\data\hoge.rb
と実行してやると*2colinux上でrubyが走り、その内容を得られることを確認。で、.xyzzyで
(setf *ruby-prog* "plink colinux ./win ruby")
と設定してやれば、ruby-run-script-immediate が動くようになった。