I found an example (http://www.betweentherails.com/rake/) of passing
arguments to a rake task in the new (0.8.n) version of rake. From this
example, I created the following test:
namespace :foo do
desc 'lol'
task :bar, :num do |t, args|
puts "num = #{args.num}"
end
end
I took a look at the task list:
$ rake --tasks
(in /path/to/my/dir)
rake foo:bar[num] # lol
All looks well ... until I try to run it:
$ rake foo:bar[123]
rake: No match
Hmm .. let's try without the argument:
$ rake foo:bar
(in /path/to/my/dir)
num =
o.O
on 2008-02-25 21:42
on 2008-02-25 21:45
On Feb 25, 2:39 pm, Reacher <brandon.g.jo...@gmail.com> wrote: > > > Hmm .. let's try without the argument: > > $ rake foo:bar > (in /path/to/my/dir) > num = > > o.O I figured it out $ rake foo:bar\[123\] (in /path/to/my/dir) num = 123 BTW, csh is evil
on 2008-02-25 21:50
On Tue, Feb 26, 2008 at 05:39:57AM +0900, Reacher wrote: > All looks well ... until I try to run it: > > $ rake foo:bar[123] > rake: No match Try this instead: $ rake 'foo:bar[123]' The shell is interpreting the []'s as globbing metacharacters. You have to quote them so the shell passes them to ruby as-is.
on 2008-02-25 22:08
Jos Backus wrote: > On Tue, Feb 26, 2008 at 05:39:57AM +0900, Reacher wrote: >> All looks well ... until I try to run it: >> >> $ rake foo:bar[123] >> rake: No match > > Try this instead: > > $ rake 'foo:bar[123]' Yuck. FWIW, you can also embed arguments in the task name, which makes the command line cleaner. This is yucky in its own special way. $ cat rakefile foo_task_pat = /^foo(\w+)$/ make_foo_dep_name = proc do |taskname| "foo/#{taskname[foo_task_pat, 1]}" end rule foo_task_pat => make_foo_dep_name do |t| puts "handling rule for #{t.name.inspect}" end directory "foo" file "foo/bar" => "foo" do system "touch foo/bar" end $ rm -rf foo $ rake foobar (in /home/vjoel/ruby/misc/rake/args) handling rule for "foobar" $ ls foo bar
on 2008-02-25 22:24
On Tue, Feb 26, 2008 at 06:07:38AM +0900, Joel VanderWerf wrote: > Jos Backus wrote: >> $ rake 'foo:bar[123]' > > Yuck. Hey, using []'s in rake wasn't my idea...
on 2008-02-25 22:45
On Feb 25, 2008, at 3:44 PM, Reacher wrote: > I figured it out > > $ rake foo:bar\[123\] > (in /path/to/my/dir) > num = 123 > > BTW, csh is evil Of course csh is evil! That's nothing new. http://ooblick.com/text/CshProgrammingConsideredHarmful.html This works just fine with bash: rab://tmp $ cat Rakefile namespace :foo do desc 'lol' task :bar, :num do |t, args| puts "num = #{args.num}" end end rab://tmp $ rake foo:bar[123] (in /private/tmp) num = 123 -Rob Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com
on 2008-02-25 23:05
On Feb 25, 3:44 pm, Rob Biedenharn <R...@AgileConsultingLLC.com> wrote: > Of course csh is evil! That's nothing new.http://ooblick.com/text/CshProgrammingConsideredHarmful.html > rab://tmp $ rake foo:bar[123] > (in /private/tmp) > num = 123 > > -Rob > > Rob Biedenharn http://agileconsultingllc.com > R...@AgileConsultingLLC.com When I got my first real job programming, I had no experience with *NIX .. at all. The shell we worked in was tcsh. Currently, everyone in our office uses ksh, but I've been slow to conform, since I'm used to tcsh and it's few but handy niceties. I think the results of this thread may be the poke needed to move to bash.
on 2009-12-09 17:08
Reacher wrote: > Currently, everyone > in our office uses ksh, but I've been slow to conform, since I'm used > to tcsh and it's few but handy niceties. I think the results of this > thread may be the poke needed to move to bash. Skip bash and go to straight to zsh. You won't regret it.
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.