MerbのRakeタスク間の依存関係が知りたかったので、調べてみました。
1 app <= [slices:merb-auth-sli ce-passwor d:freeze:a pp_with_ge m] 2 clobber_co verage <= [spec:clobb er, spec:cover age] 3 copy_asset s <= [slices:mer b-auth-sli ce-passwor d:install]create <= [db:reset] 4 db:migrate :up <= [db:migrate ] 5 drop <= [db:reset] 6 env <= [slices:lis t] 7 freeze:app <= [slices:mer b-auth-sli ce-passwor d:freeze] 8 freeze:vie ws <= [slices:mer b-auth-sli ce-passwor d:patch] 9 gem <= [slices:mer b-auth-sli ce-passwor d:freeze:a pp_with_ge m] 10 load <= [db:migrate :down, db:migrate :up] 11 merb_env <= [audit:acti ons, audit:cont rollers, audit:rout es, db:automig rate, db: 12 autoupgrad e, db:databas e_yaml, db:migrate :load, sessions:c lear, sessions:c reate] 13 migrate <= [db:reset, slices:mer b-auth-sli ce-passwor d:install] 14 preflight <= [slices:mer b-auth-sli ce-passwor d:install] 15 setup_dire ctories <= [slices:mer b-auth-sli ce-passwor d:install] 16 slices:lis t <= [slices] 17 spec <= [default] 18 spec:defau lt <= [slices:mer b-auth-sli ce-passwor d:spec, spec] 19 spec:expla in <= [slices:mer b-auth-sli ce-passwor d:spec] 20 stubs <= [slices:mer b-auth-sli ce-passwor d:patch]
右側が左側に依存してる感じです。 以下のようなコードをRakefileの末尾に記述して取得しました。
1 tree = {} 2 Rake::Task.tasks.each{|t| t.prerequisites.each{|r| (tree[r] ||= []) << t.name}} 3 tree.sort_by{|i,j|i}.each{|r,a| puts "#{r} <= [#{a.sort.join(', ')}]"}
posted by
genki
on Fri 30 Jan 2009
at 03:07