アカウント名:
パスワード:
Rubyのrakeを使っているけど、かっこよく書くには適当なライブラリをrequireしなきゃいけなかったり、疑問があってもどのドキュメントを読めばよいのかいまいちわからなかったりでmakeのほうがよいなぁと思ってしまいます。
たとえば今はGNU make風な
%.ps: %.F a2ps --prologue=color --portrait --columns=1 \ --margin=3 --borders=off\ -f 10.5 --pretty-print=for90-free -o $@ $<
ってのをどうrakeで書けばよいか調べがつきません。具体的には http://ulmul.rubyforge.org/svn/ulmul/trunk/Rakefile [rubyforge.org]のdesc "Create index.en.html"とdesc "Create index.ja.html"とを1つにまとめたいです。教えて下さい!
こういうことでしょうか? ruleというところがMakefileのパターンマッチに相当すると思います。task :default => :build
task :build => ['a.o', 'b.o', 'c.o']
rule '.o' => ['.c'] do |t| sh 'cc', '-c', '-o', t.name, t.sourceendくわしくはRakeのドキュメントやdoc.rubyrake.orgのドキュメントをご覧ください。なお、上記ruleは http://docs.rubyrake.org/user_guide/chapter03.html [rubyrake.org] で説明されています。
ありがとうございます。
紹介していただいた "rule" を使おうと Rakefile を眺めていたら、結局こんな解決策になりました。RakefileもRubyスクリプトなんですね。
BEFORE:
desc "Create index.en.html"file "index.en.html" => ["bin/ulmul2html5", "README-en", "ulmul2html5.css", "google-code-prettify/src/prettify.css", "google-code-prettify/src/prettify.js", "lib/ulmul.rb"] do |t| sh "ruby -I lib #{t.prerequisites[0]} -n 'Takeshi Nishimatsu' -s #{t.prerequisites[2]} -s #{t.prerequisites[3]} \ -j #{t.prerequisites[4]} -l en #{t.prerequisites[1]} | \ sed -e 's%</h1>%</h1><div class=\"navi\">[<a href=\"index.en.html\">English</a>/<a href=\"index.ja.html\">Japanese</a>]</div>%' > #{t.name}"end desc "Create index.ja.html"file "index.ja.html" => ["bin/ulmul2html5", "README-ja", "ulmul2html5.css", "google-code-prettify/src/prettify.css", "google-code-prettify/src/prettify.js", "lib/ulmul.rb"] do |t| sh "ruby -I lib #{t.prerequisites[0]} -n 'Takeshi Nishimatsu' -s #{t.prerequisites[2]} -s #{t.prerequisites[3]} \ -j #{t.prerequisites[4]} -l ja #{t.prerequisites[1]} | \ sed -e 's%</h1>%</h1><div class=\"navi\">[<a href=\"index.en.html\">English</a>/<a href=\"index.ja.html\">Japanese</a>]</div>%' > #{t.name}"end
AFTER:
["en", "ja"].each{|lang| desc "Create index.#{lang}.html" file "index.#{lang}.html" => ["bin/ulmul2html5", "README-#{lang}", "ulmul2html5.css", "google-code-prettify/src/prettify.css", "google-code-prettify/src/prettify.js", "lib/ulmul.rb"] do |t| sh "ruby -I lib #{t.prerequisites[0]} -n 'Takeshi Nishimatsu' -s #{t.prerequisites[2]} -s #{t.prerequisites[3]} \ -j #{t.prerequisites[4]} -l #{lang} #{t.prerequisites[1]} | \ sed -e 's%</h1>%</h1><div class=\"navi\">[<a href=\"index.en.html\">English</a>/<a href=\"index.ja.html\">Japanese</a>]</div>%' > #{t.name}" end}
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」
Rubyのrakeを使っているけど (スコア:1)
Rubyのrakeを使っているけど、かっこよく書くに
は適当なライブラリをrequireしなきゃいけなかっ
たり、疑問があってもどのドキュメントを読めば
よいのかいまいちわからなかったりでmakeのほう
がよいなぁと思ってしまいます。
たとえば今はGNU make風な
ってのをどうrakeで書けばよいか調べがつきません。
具体的には http://ulmul.rubyforge.org/svn/ulmul/trunk/Rakefile [rubyforge.org]
のdesc "Create index.en.html"とdesc "Create index.ja.html"と
を1つにまとめたいです。教えて下さい!
love && peace && free_software
t-nissie
Re:Rubyのrakeを使っているけど (スコア:3, 参考になる)
こういうことでしょうか? ruleというところがMakefileのパターンマッチに相当すると思います。
task :default => :build
task :build => ['a.o', 'b.o', 'c.o']
rule '.o' => ['.c'] do |t|
sh 'cc', '-c', '-o', t.name, t.source
end
くわしくはRakeのドキュメントやdoc.rubyrake.orgのドキュメントをご覧ください。なお、上記ruleは http://docs.rubyrake.org/user_guide/chapter03.html [rubyrake.org] で説明されています。
DON
Re:Rubyのrakeを使っているけど (スコア:1)
ありがとうございます。
紹介していただいた "rule" を使おうと Rakefile を眺めていたら、
結局こんな解決策になりました。RakefileもRubyスクリプトなんですね。
BEFORE:
AFTER:
love && peace && free_software
t-nissie
Re:Rubyのrakeを使っているけど (スコア:2)
Ruby DSLでググるとRakeの話が出てくるほどなので、典型的な例なのかもしれません。
DON