2008-01-01から1年間の記事一覧

rule がうまく機能しない

Rakeで、 rule の依存先が複数の場合、うまく動かないことがあるようです。 以下のような Rakefile の場合、 rule '.foobar' => ['.foo', '.bar'] do |t| sh "cat #{t.prerequisites} > #{t.name}" end rule '.foo' do |t| sh "echo #{t.name} > #{t.name}" …

RakeFileUtils :noop, :verbose の デフォルトオプションがおかしい

id:ke-k:20080211:rakefileutils でもちょろっと書きましたが、 RakeFileUtils がうまく動いていないようです。 nowrite(true) verbose(true) sh 'mkdir hoge' mkdir 'fuga' とすると、sh には :noop, :verbose オプションが渡されているのですが、 mkdir に…

挙動がおかしい

Rakeを使い始めて間もないですが、いろいろとおかしな挙動に当たります。仕様なのかバグなのか。短期間でこんなにハマるっていうのは、僕の使い方がそんなに特殊なんでしょうか…。 作者にコンタクトとってみたいですが、英語が苦手なのできっついです。バグ…

RakeFileUtils の :noop, :verbose オプション

!注意!現在のRake(0.8.1.1)には、この記事のとおりにやっても一部うまく行かない問題があります。修正は後ほど公開します。id:ke-k:20080212:rakefileutils_fix で公開しています。前にも書きましたが、Rakeではモジュール FileUtils(正確にはRakeFileUti…

directory

directory メソッドでディレクトリ作成タスクを生成できます。 directory 'a/b/c' ディレクトリがネストしている場合は、それぞれのディレクトリについてタスクを生成してくれます。 file 'a' do |task| mkdir task.name end file 'a/b' do |task| mkdir tas…

pathmap

Rake の rule では、 rule '.o' => ['%X.c'] do |t| ... end のように、依存先のルールに'%' を入れると、pathmapを使って変換されるようです。pathmapについての情報があまりなかったのですが、新しい機能なのか、使う人がいないのか。pathmapについてまと…

Rakeメモ - rule

ruleは、Makeの型ルールをもっと高度にしたものですね。 rule '.o' => ['.c'] do |task| sh "gcc #{task.source} #{task.name}" end 依存先が'.'で始まる場合は、いわゆるサフィックスルール(古いタイプの) task.nameがターゲット名(file, taskでも使える…

Rakeメモ - task

Makeで言う.PHONYターゲットはtaskメソッドで定義します。 依存先のタイムスタンプに関係なく必ず実行する。 あとはfileと同じのようです。実装的にはtaskがベースのようですが。タスク名はStringもしくはSymbolどちらでも良いようですが、公式マニュアルの…

Rakeメモ - file

Makeでいうルールの定義がfileですね。 file 'hoge' => ['hoge.c', 'hoge.h'] do |task| sh "gcc hoge.c -o hoge" end ファイル 'hoge' が 'hoge.c', 'hoge.h' に依存していることを表す。 'hoge'を生成するのに、ブロックの中のsh "..."を実行する。 引数ta…

Rake - Ruby Make

Makeはコンパイル用のツールと思われがちですが、コンパイル後のコマンドの実行まで自動で行ってくれる非常に便利なツールです。パラメータを変えて、大量にコマンドを実行、ファイル生成をするときなどは自前のスクリプトを使うよりも簡単かつ柔軟に書けて…

更新

気がつけば1年と2か月。何事もなかったように再開してみる。