Good call chad, I didn't know about that one (I should be ashamed!) -- Lee Hambley
Twitter: @leehambley Blog: http://lee.hambley.name/ Working with Rails: http://is.gd/1s5W1 2009/8/16 Chad Arimura <[email protected]> > > > Also - another useful strategy for anyone who can decipher and relate > to my use case described above was the 'on :start' callback explained > in this post: > > http://www.mail-archive.com/[email protected]/msg01396.html > > > > > > On Aug 16, 10:51 am, Chad Arimura <[email protected]> wrote: > > Yes! That's all I needed was a nudge towards the fetch documentation. > > > > I used a fetch(:key,nil) to return nil if it's not set. > > > > Thanks again Lee. > > > > Chad > > > > On Aug 15, 3:33 pm, Lee Hambley <[email protected]> wrote: > > > > > > > > > Chad, > > > In that case, you do best to set a variable, you might want to check > the > > > wiki (http://capify.org) for set and see how else it can be used, > fetch > > > /etc? > > > > > I forget the syntax off hand, but consider this: > > > > > task :get_keys do > > > set :key, lambda { Capistrano::UI.ask("Please enter a key:") } > unless > > > fetch(:key) > > > end > > > > > before :get_keys > > > > > ..... maybe something like that would work for you? > > > > > -- Lee Hambley > > > > > Twitter: @leehambley > > > Blog:http://lee.hambley.name/ > > > Working with Rails:http://is.gd/1s5W1 > > > > > 2009/8/15 Chad Arimura <[email protected]> > > > > > > How about this example: > > > > > > task :run_my_tasks do > > > > my_task_1 > > > > my_task_2 > > > > end > > > > > > task :getkey do > > > > set :key, prompt user for key > > > > end > > > > > > on :before, "getkeys" > > > > > > In the above example, I want to prompt the user if they execute > either > > > > task_1 or task_2 or run_my_tasks, however, if they execute > > > > run_my_tasks it prompts them twice because of the on :before. > > > > > > Is there any way to *remember* that getkey was already ran once and > > > > skip it for my_task_2 only if that's run through run_my_tasks? > > > > > > Sorry I haven't been clear... I'm almost finished with our scripts! > > > > > > I'll be happy to post some of the final recipes to the community. > > > > > > Thanks again, > > > > Chad > > > > > > On Aug 15, 2:48 pm, Lee Hambley <[email protected]> wrote: > > > > > Chad, > > > > > You must specify before `what` : > > > > > > > before 'deploy', 'mytasks:getkey' > > > > > > > Does that work? > > > > > > > -- Lee Hambley > > > > > > > Twitter: @leehambley > > > > > Blog:http://lee.hambley.name/ > > > > > Working with Rails:http://is.gd/1s5W1 > > > > > > > 2009/8/15 Chad Arimura <[email protected]> > > > > > > > > Maybe I should try and describe what I'm trying to achieve: > > > > > > > > For all cap commands (eg. cap deploy, cap myns:launch_instance, > etc) I > > > > > > want to first prompt the user for a key, and then have access to > that > > > > > > key in all subsequent tasks that are called from the cap command. > > > > > > However, I only want to prompt for the key once, not before each > task > > > > > > (which is happening if I use an on :before method) > > > > > > > > Does that make sense? > > > > > > > > On Aug 15, 1:04 pm, Lee Hambley <[email protected]> wrote: > > > > > > > Chad, > > > > > > > "only once" = only on one server, or only once, ever? > > > > > > > > > If the former, you can do a few magic things, ask back on the > list > > > > and > > > > > > > someone (maybe me) will help -- if you mean once, ever you > should > > > > attach > > > > > > it > > > > > > > to deploy:cold maybe? > > > > > > > > > -- Lee Hambley > > > > > > > > > Twitter: @leehambley > > > > > > > Blog:http://lee.hambley.name/ > > > > > > > Working with Rails:http://is.gd/1s5W1 > > > > > > > > > 2009/8/15 Chad Arimura <[email protected]> > > > > > > > > > > Hi All, > > > > > > > > > > I'd like to call an on :before task only once before a > deployment > > > > > > > > script. Is there an easy way to tell it to only run once? > Or > > > > > > > > possibly set a variable and then skip over the task if the > variable > > > > is > > > > > > > > set? > > > > > > > > > > This didn't work: > > > > > > > > > > on :before, "mytasks:run_only_once" > > > > > > > > > > task :run_only_once do > > > > > > > > if already_ran.nil? > > > > > > > > ..stuff.. > > > > > > > > else > > > > > > > > already_ran = "notnil" > > > > > > > > end > > > > > > > > end > > > > > > > > > > Thanks for any help! > > > > > > > > > > Chad > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Capistrano" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.co.uk/group/capistrano?hl=en -~----------~----~----~----~------~----~------~--~---
