My "mixed results" was completely a misunderstanding on my part.  I didn't 
realize you needed to re-enable a task that's invoked in a loop, otherwise 
it's just called once.  Thanks for your help, I've figured out what I was 
doing wrong.

Eric

On Friday, March 18, 2016 at 9:04:34 AM UTC-5, Lee Hambley wrote:
>
> I thought I could invoke a task from the on() block and have it execute a 
>> task/function, but I had mixed results when I did that.  I also wasn't sure 
>> of that was really how that was intended to be used.
>
>
> For whatever it's worth you can write your code in classes, and then just 
> pass the SSHKit context into them:
>
>
>    - 
>    https://github.com/capistrano/capistrano/blob/master/lib/capistrano/git.rb
>    - 
>    
> https://github.com/capistrano/capistrano/blob/master/lib/capistrano/tasks/git.rake#L3
>  
>    (note passing `self`)
>    
>
> This would allow you to do some testing, however....
>
> The on() block is the unit of synchronisation, one on() block will wait 
>> for all servers to complete before it returns.
>
>  -- SSHKit README.md 
>> <https://github.com/capistrano/sshkit/blob/master/README.md#synchronisation>
>
>
> If you can send me some pseudo code of what you wanted to work, I'd be 
> more than glad to try and go a bit deeper, it's also worth pointing out 
> that there's a pretty decent split between the task structure 
> (`namespace`/`task` from Rake, which makes up the Capistrano DSL) and the 
> underlying *do something on a server* code (SSHKit) ... the latter should 
> be threadsafe as the parallel() helpers in SSHKit make liberal use of 
> threads...
>
> What I'm trying to say is:
>
>    - You can:
>       - Write your own classes (and, test them!)
>       - Avoid our synchronisation primitives and use threads if ours 
>       don't work
>    
> I hope that helps, but I must admit that a handful of lines of pseudo code 
> from your end would raise my confidence factor in making suggestions 10x.
>
> Cheers, Lee
>
>
> Lee Hambley
> http://lee.hambley.name/
> +49 (0) 170 298 5667
>
> On 18 March 2016 at 04:48, Eric Rutherford <eruth...@gmail.com 
> <javascript:>> wrote:
>
>> Hello Lee
>> No problem at all on the length of time for the response (I actually 
>> considered it to be pretty quick) and I appreciate your time on the 
>> matter.  
>>
>> I think the problem may be that the tasks I'm trying to group together 
>> are ones that are executed on the host and others that are executed by the 
>> capistrano run.  For example I've built a capistrano plugin for 
>> de-registering and registering our nodes with our AWS ELBs.  I'd like to 
>> call that deregistration task on the same node that I'm restarting the 
>> service for, then call the registration task after the restart before 
>> de-registration/restart task on the next node.
>>
>> I thought I could invoke a task from the on() block and have it execute a 
>> task/function, but I had mixed results when I did that.  I also wasn't sure 
>> of that was really how that was intended to be used.
>>
>> Any hints or a kick in the right direction would be greatly appreciated.
>>
>> Eric
>>
>> On Thursday, March 17, 2016 at 1:46:00 AM UTC-5, Lee Hambley wrote:
>>>
>>> HI Eric,
>>>
>>> Certainly if you're looking for restricting, or choosing your preferred 
>>> kind of parallelism/concurrency for your own tasks you are in the right 
>>> place with the `on(in: ....)` functions (
>>> https://github.com/capistrano/sshkit/blob/master/README.md#parallel)
>>>
>>> For Capistrano and it's plugins you are at the mercy of the maintainers 
>>> (yours truly) or the plugin authors to have exposed the concurrency 
>>> settings.
>>>
>>> If there's any more I can help with (long question, short answer!) I'm 
>>> more than happy, just drop me a note, you shouldn't have to wait 20h in the 
>>> moderation queue whilst I ignore your email next time ;-)
>>>
>>> Lee Hambley
>>> http://lee.hambley.name/
>>> +49 (0) 170 298 5667
>>>
>>> On 16 March 2016 at 19:24, Eric Rutherford <eruth...@gmail.com> wrote:
>>>
>>>> Versions:
>>>>
>>>>    - Ruby 2.0.0
>>>>    - Capistrano 3.4.0
>>>>
>>>> I'm trying to work out a solution to limit the number of servers that a 
>>>> group of tasks (remove from load balancer, push code, restart service, add 
>>>> back to load balancer for example) can run on at a time.  I've been 
>>>> digging 
>>>> through past conversations and documentation, but I've failed to find a 
>>>> solution with capistrano 3.x so far.  I've found some examples from v2.x, 
>>>> but most of the work in that example relied on features that are no longer 
>>>> in existence.  I've been working through creating a custom deploy task 
>>>> that 
>>>> specifies "in: :sequence" and calls outside tasks, but I'm not sure if I'm 
>>>> on the right track and figured that I might ask for some pointers (or a 
>>>> push in the right direction) before I head too far in the wrong direction.
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Capistrano" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to capistrano+...@googlegroups.com.
>>>> To view this discussion on the web, visit 
>>>> https://groups.google.com/d/msgid/capistrano/cf49591c-0be0-44d6-b1b3-c44bf2027a91%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/capistrano/cf49591c-0be0-44d6-b1b3-c44bf2027a91%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Capistrano" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to capistrano+...@googlegroups.com <javascript:>.
>> To view this discussion on the web, visit 
>> https://groups.google.com/d/msgid/capistrano/d71a508b-e9f5-44f8-a5e0-510b28f6a517%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/capistrano/d71a508b-e9f5-44f8-a5e0-510b28f6a517%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Capistrano" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to capistrano+unsubscr...@googlegroups.com.
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/capistrano/a2d82095-1cc8-4aff-9069-ab2156d22042%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to