How to pass roles to server method programmatically?

26 views
Skip to first unread message

Faissal Elamraoui

unread,
Dec 1, 2015, 12:34:48 PM12/1/15
to Capistrano
Hello everyone,

I have a list of IP addresses which i iterate over to declare Capistrano servers (outside any DSL context) and i'm wondering how can i pass roles as a parameter:

def cap_servers(roles=nil)
   my_servers
.each { |ip_addr|
       
server ip_addr, roles || %{:app}
   
}
end

am I doing it correctly?


Thanks,
Faissal

Lee Hambley

unread,
Dec 1, 2015, 12:46:53 PM12/1/15
to Capistrano

Did you check the implementation of server in the "DSL" file?

--
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/e076294c-c82c-44b9-af6e-cb7aa6213f88%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Lee Hambley

unread,
Dec 1, 2015, 1:11:33 PM12/1/15
to Capistrano
Check out https://github.com/capistrano/capistrano/blob/80459d88da3d39981cf85c5dc35447ad2b20b618/lib/capistrano/dsl/env.rb#L71 and https://github.com/capistrano/capistrano/blob/80459d88da3d39981cf85c5dc35447ad2b20b618/lib/capistrano/dsl/env.rb#L43 which should lead you to the conclusion that Capistrano.env.server(...) should work for accessing this method outside the DSL, but it's unsupported, and I never tried it!

Let me know if it works?

Faissal Elamraoui

unread,
Dec 2, 2015, 4:44:47 PM12/2/15
to Capistrano
Thanks Lee. Capistrano.env.server(name, properties) works fine!

def cap_servers(roles=nil)
   my_servers
.each { |ip_addr|
       
server ip_addr, { :roles => (roles || %w{app}) }
   
}
end


Br,
Faissal
Reply all
Reply to author
Forward
0 new messages