参考リンクなど
http://delicious.com/hyagni/ruby
基本構文
thenのありなしと、doのありなしは揃えるほうがいいらしい。
なしのほうがタイプ数もへるし、あってもそこまでわかりやすいわけでもないので、ないほうがいいかもしれない。
if 式 [then] 式 ... [elsif 式 [then] 式 ... ] ... [else 式 ... ] end
while 式 [do] ... end
Rubyで例外を適切に処理する方法
標準だと止まってしまうが、さすがにそれは不便なので・・
begin 例外が発生しうる処理 rescue 例外発生時の対処 end
とすることで、例外への対処を自分で決められる。
発生しうる処理 rescue 対処
でもよい。
File.utimeについて
utime関数でなんらかの形でオープンしているファイルにさわりに行こうとすると例外を出す。
当然の処理だが、writable?とかで判別できない?
ファイルロックされてなくても例外出されるみたいだし(emeditorとか)
それで上みたいな発生後に尻拭い方式になってしまう。
あったらいいな関数
mkdir_p
Unix系のmkdir -pオプションの動作を真似たもの。
指定ディレクトリまで階層を辿って作ってゆく。(Unix系でデバッグしてません)
関数名 | mkdir_p | |
引数 | a_dir | 作成対象のディレクトリの絶対パス |
返値 | false or true | falseは作成失敗 |
def mkdir_p(a_dir) #mkdir like mkdir -p in Unix dirs = a_dir.split("/") p dirs temp_path = "" if RUBY_PLATFORM.downcase =~ /mswin(?!ce)|mingw|cygwin|bccwin/ #windowsの場合 temp_path = dirs.shift + "/" if !FileTest.exist?(temp_path) #はじめは"C:"かなんかのはず。これがないと無理 return false end end while(dirs.size>0) do temp_path << dirs.shift + "/"; p temp_path if !FileTest.exist?(temp_path) Dir.mkdir(temp_path) end end return true end
iswin
現在rubyが走っている環境がWindows環境であるかを判定する。
関数にする意味がない。文字数を減らしたり、ソースをみやすくしたりできる程度。
頻繁に呼ぶものではないだろうから関数にしていいとも言えるし、1回呼べばいいから関数にしなくていいとも言える。
お分かりにように、判定にはRubyのシステムの名前を利用していて、wince版はWinではないと判定している。
def iswin() if(RUBY_PLATFORM.downcase =~ /mswin(?!ce)|mingw|cygwin|bccwin/) return true else return false end end
RubyGemsについて
RubyGemsはhttp://rubyforge.org/frs/?group_id=126&release_id=42796から最新版(Win32ならZip)をダウンロードして、解凍し、中にある"setup.rb"を食わせるだけなのだが、
zlib.dllが必要です
みたいなエラーが出ることがよくある(らしい)。
そういうときは、http://www.zlib.net/からDLLなりソースなりをダウンロードして利用する。
このファイルはインストール完了後もパッケージを導入したりするのに利用するようなので、
C:\Program Files\ruby\bin C:\WINDOWS\system32
など、パスが通っている環境におくといい。
しかし、これだけでは終わらない。
この後Eclipseからデバッグを行おうとしたらまたもやエラーである。
C:/Program Files/ruby/lib/ruby/gems/1.9.1/gems/ruby-debug-ide-0.4.5/bin/rdebug-ide:6:in `require': no such file to load -- ruby-debug (LoadError)
ようするに必要なファイルが見つからないということなので、
gem install ruby-debug
でインストールしてみた。なお、この際readline.dllが必要であるから、下記リンクの3からダウンロードする必要がある。
でもまだ終わらない。
C:/Program Files/ruby/lib/ruby/gems/1.9.1/gems/ruby-debug-base-0.10.3/lib/ruby-debug-base.rb:1:in `require': 126: 指定されたモジュールが見つかりません。 - C:/Program Files/ruby/lib/ruby/gems/1.9.1/gems/ruby-debug-base-0.10.3-x86-mswin32/lib/ruby_debug.so (LoadError)
このファイルあるんですが。
Ruby One Click Installerでやってみてもダメだった。
いろいろ調べた結果、現行のruby-debugやruby-debug-ideは1.8向けだということがわかった。(1.9向けもあるようだ:http://rubyforge.org/projects/ruby-debug19/)
それだけか・・・・
でもruby-debug19のインストールも成功しない。
まとめ
- ruby1.9系を使うのなら、それ相応の知識を持って望まねばならない。(私にはない)
- おそらく最良の方法は、るびまに従ってActiveScriptRuby1.8系を使うこと。
- Eclipseは起動遅すぎ(何回再起動したことやら)
- 参考・関連リンク
VisualuRuby
ポイントはやはり1.8系であること?(自分でビルドすればいいんだろうが、libファイルとか揃えるのは面倒だよ)
http://ftp.ruby-lang.org/pub/ruby/binaries/
からswin.soなどのバイナリをおとして突っ込めば大丈夫。
コンソール向けアプリをウィンドウに流しこんで少し便利に。
やっぱりwindowsとコンソールは親和性が低い。
_frm.rbがフォームファイル。main.rbが本体。