Rakefile memo

忘れないように個人的なメモ
Rakefile で 呼び出しのタイミングで動的にtaskをでっち上げる方法。
正しくはtaskを作っているのではないので横取りかな。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace :eat do
namespace :chicken do
task :list do
rss = RSS::Parser.parse(feed)
rss.channel.items.each do |item|
printf "%s %f\n",item.title,item.cal
end
end
end
end

rule "" do |r|
# task #{namespace}:list が定義されていれば実行する
if Rake::Task.task_defined?("#{r.name}:list")
Rake::Task["#{r.name}:list"].execute
end
end

rake eat:chicken:list でも rake eat:chicken でもどっちでも動いて欲しいという意図。
namespace のブロック内でも :default 的なのを使いたかった。

名前のつけ方がおかしいのは事例を無理やり作ったから。(ということにしておきたい)

最初はなるほどと思ったけどこれは結局お蔵入り。
やりたかったことは引数でやるべき事案だった。