rakeでタスクを書こうとすると、引数を受け取りたい場合があります。用意されている方法は、大きく分けて2種類。しかし、どちらも正直イマイチだなと。 環境変数を使う
rakeにはtaskやfile以外に、ruleという定義が使えます。簡単に言うとmakeのサフィックスルールで、こういうファイルだったら、こういうファイルにしますよ、という正しくルールを定義するためのものです。以下簡単に使い方。 rule '.o' => '.c' do |t| sh "gcc -o #{t.name} #{t.source}" end 上記は「".o"で終わるタスク名(ファイル名じゃない!)が与えられ、そのタスク名の".o"を".c"に置き換えたものをソースファイルとし、そのソースファイルが存在するならタスクを実行する」という意味になります。実際に実行してみた方が分かりやすいですね。 $ ls src hello.c $ rake --rules src/hello.o # --rulesオプションをつけると実際どうやってruleが解決されているか分かる Attempti
Railsアプリを開発する際に、レガシーなDBを扱う場合を考えます。 この場合のアプリケーションはDBのスキーマ情報を定義しないため、RSpecを導入してrake specを実行した場合、 schema.rbが空であるため、db系のrakeタスクが動かずに、エラーとなります。 これを回避するために、db系のrakeタスクをアプリケーションで上書きして、 何もしないタスクに置き換えることができます。 アプリケーション定義Rakeタスクファイルとして、 {Rails.root}/lib/tasks/db.rake を作成し、次のように実装します。 module Rake::TaskManager def remove_task(task_name) @tasks.delete(task_name.to_s) end end Rake.application.remove_task "db:cr
Update at bottom By default Rake Tasks append behavior every time they are defined. The following example shows that both definitions are executed. require 'rubygems' require 'rake' task :the_task do p "one" end task :the_task do p "two" end Rake::Task[:the_task].invoke # >> "one" # >> "two" I like this behavior, but sometimes you want to overwrite a task instead of appending to what's already the
RubyによるビルドツールRakeの覚え書き。興に乗ったので詳しく書いてみた。 2014/02/20 Rakeの作者、Jim Weirich氏が亡くなられました。安らかに… Rakeとは? インストール 単純なRakefile タスク ファイルタスク ルール ディレクトリ作成 タスクの説明 ファイルリスト クリーニング パッケージ作成 タスクの動的生成 テストタスク 複数のRakefileの連携 名前空間 参考URL Rakeとは? Rakeは、MakeをRubyで実装したものを超越したビルドツールである。 世間では、ビルドツールというとMakeやApache Antが有名で、よく使われている。 Rakeは、これらのいいとこ取りをした上で、特有のフィーチャーを追加した新しいビルドツールであり、複雑なビルドを柔軟に書きこなすことができる。その秘密は内部DSLという仕組みにあり、このおかげでビ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く