Refinementsを使うと他から参照できないrakeタスクの中だけで使えるメソッドを定義できる。
Rakefile
top_level = self
using Module.new {
refine(top_level.singleton_class) do
def hi
puts :hi
end
end
}
desc 'はい'
task :hi do
hi
end
% rake hi
hi
その他のアプローチ
rake task でメソッド定義 by @kuboon on @Qiita
ruby - 特定のRakeタスク内でのみ使うメソッドの定義方法 - スタック・オーバーフロー
ふつうに定義したときの失敗1
hi
メソッドがトップレベルに定義されてしまう。
Rakefile
def hi
puts :hi
end
desc 'はい'
task :hi do
hi
end
ふつうに定義したときの失敗2
hi
メソッドがトップレベルに定義されてしまう。
Rakefile
desc 'はい'
task :hi do
def hi
puts :hi
end
hi
end
ふつうに定義したときの失敗3
hi
メソッドがトップレベルに定義されてしまう。
Rakefile
m = Module.new do
def hi
puts :hi
end
end
desc 'はい'
task :hi do
include m
hi
end