環境
$ rails -v Rails 4.1.1 $ ruby -v ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin14.0] $ echo $SHELL /bin/zsh
タスクを作成
my_taskを作成してみます。
rails g task my_task
# lib/task/my_task.rake namespace :my_task do desc "おれのタスク" task :normal => :environment do puts "引数はないです" end task :with_arg, [:hoge, :fuga] => :environment do |task, args| puts "一つ目は#{args[:hoge]}で二つ目は#{args[:fuga]}です" end end
引数指定して実行
さっそく実行してみると、引数ありの場合zshに怒られて実行できません。。
$ rake my_task:normal 引数はないです $ rake my_task:with_arg[one,two] zsh: no matches found: my_task:with_arg[one,two]
zshでは括弧[]
はエスケープするか、クォーテーションで囲むかの2通りの方法があります。
$ rake 'my_task:with_arg[one,two]' 一つ目はoneで二つ目はtwoです $ rake my_task:with_arg\[one,two\] 一つ目はoneで二つ目はtwoです
個人的にはクォーテーションのほうが好き。