Hatena::Diary

とある電気系出身者のいんでっくす

2010-09-20

FileUtilsを使おう.

Rakeを書く時にはFileUtilsを使おう.

ポータビリティのためもあるし, 以下のコードがsh "cd"の行で落ちるからだ.

task :a do
  FileUtils.cd("Dropbox")
  sh "ls" # OK
  # sh "cd" # NOT OK
  p FileUtils.pwd
end

task :b => ["a"] do
  p FileUtils.pwd
end 

このコードの狙いは2つある.

  1. :aでcdした情報が, :bの方にも引き継がれてるか => 引き継がれてる.
  2. FileUtils.cdとsh "cd"はどう違うのか? => FileUtilsの方はrubyプロセスの中で仮想的にディレクトリを動かすが, sh "cd"の方はプロセスの位置情報をいじろうとするのでエラーになる. 端的にいうと, 親プロセスのPWDを子プロセスruby実行)から変更しようとしたのでエラったのだと説明可能. それはシェルスクリプトでも不可能である.

基本的に, FileUtilsを優先すべきだと思う. つうか, 同等のコマンドであればシェルを直接叩くよりRuby関数を叩いた方がいい. たぶん, mvとかmkdirとかは出来てしまうが, これは混乱の元であるように思うし, そんなコマンドはWindowsにはない. クソWindowsUNIXではないからだ.

RubyはFile, FileUtils, FileList(Rake), String正規表現, Array, Hashあたりをなんとなく使えば, Raekで必要な処理は大体書けるし, ディベロップメントの補助ツールとしては十分だと思う. 非常に面白い言語ですね.

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/akiradeveloper/20100920/1284961340
おとなり日記