Awesome HTH! Sent from my Nexus 4. On 14 Jan 2014 17:14, "Michael" <[email protected]> wrote:
> https://github.com/srbartlett/elbow/pull/3 > > Thanks Lee. That was the kick I needed. > > On Monday, January 13, 2014 2:46:37 PM UTC-6, Lee Hambley wrote: >> >> I can't see the value of the elastic_load_balancer function, if all it >> does it call server. >> >> You haven't included your module into the main scope, you have included >> it into Capistrano::Configuration, where it should, if anywhere be in >> Capistrano::DSL. >> >> To programatically define servers, just call `server()` from anywhere >> which has Capistrano::DSL included. >> >> (I think that's right, anyway, I have't ever actually tried, but the >> top-level stuff like release_path and on() and friends all come from the >> DSL module being included in to the main scope) >> >> Lee Hambley >> -- >> http://lee.hambley.name/ >> +49 (0) 170 298 5667 >> >> >> On 13 January 2014 18:31, Michael <[email protected]> wrote: >> >>> Versions: >>> >>> - Ruby >>> - 2.0.0 >>> - Capistrano >>> - 3.0.1 >>> >>> Does any documentation exist for writing capistrano 3 gems for >>> programmatically adding servers during deployment? >>> >>> I can only find Capistrano 2 gems for doing such tasks. ( >>> https://github.com/srbartlett/elbow , https://github.com/ >>> tverbiscer/capistrano-asgroup ) >>> >>> I'm currently testing this: (The below is a useless example, but >>> should try to add '127.0.0.1' to the list of servers...) >>> >>> root@domU-example:/var/lib/gems/2.0.0/gems/capistrano- >>> autoscale-0.0.1/lib/capistrano# cat autoscale.rb >>> require 'aws-sdk' >>> require 'net/dns' >>> >>> #### The below is old Cap2 syntax... What is the new equivalent? #### >>> #Capistrano::Configuration.instance(:must_exist).load do >>> ### end old syntax (I think) #### >>> >>> module Capistrano >>> class Configuration >>> module ELB >>> def elastic_load_balancer(name, *args) >>> >>> hostname = "127.0.0.1" >>> server(hostname, *args) >>> end >>> >>> end >>> >>> include ELB >>> end >>> end >>> >>> This just fails with this: >>> >>> root@domU-example:~/webapp# cap production deploy --trace >>> ** Invoke production (first_time) >>> ** Execute production >>> ** Invoke load:defaults (first_time) >>> ** Execute load:defaults >>> cap aborted! >>> undefined method `elastic_load_balancer' for main:Object >>> config/deploy/production.rb:14:in `<top (required)>' >>> /var/lib/gems/2.0.0/gems/capistrano-3.0.1/lib/capistrano/setup.rb:13:in >>> `load' >>> /var/lib/gems/2.0.0/gems/capistrano-3.0.1/lib/capistrano/setup.rb:13:in >>> `block (2 levels) in <top (required)>' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:236:in `call' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:236:in `block in >>> execute' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:231:in `each' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:231:in `execute' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:175:in `block in >>> invoke_with_call_chain' >>> /usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:168:in >>> `invoke_with_call_chain' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/task.rb:161:in `invoke' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:149:in >>> `invoke_task' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:106:in >>> `block (2 levels) in top_level' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:106:in >>> `each' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:106:in >>> `block in top_level' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:115:in >>> `run_with_threads' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:100:in >>> `top_level' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:78:in >>> `block in run' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:165:in >>> `standard_exception_handling' >>> /var/lib/gems/2.0.0/gems/rake-10.1.1/lib/rake/application.rb:75:in `run' >>> /var/lib/gems/2.0.0/gems/capistrano-3.0.1/lib/ >>> capistrano/application.rb:12:in `run' >>> /var/lib/gems/2.0.0/gems/capistrano-3.0.1/bin/cap:3:in `<top >>> (required)>' >>> /usr/local/bin/cap:23:in `load' >>> /usr/local/bin/cap:23:in `<main>' >>> Tasks: TOP => production >>> >>> Files: >>> >>> - Capfile >>> >>> root@domU-example:~/webapp# cat Capfile | grep -v "^#" >>> require 'capistrano/setup' >>> >>> require 'capistrano/deploy' >>> >>> require 'capistrano/bundler' >>> require 'capistrano/rails/assets' >>> require 'capistrano/rails/migrations' >>> >>> Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r } >>> >>> - deploy.rb >>> >>> root@dom-example:~/webapp# cat config/deploy.rb | grep -v "^#" | grep >>> -v "^$" >>> set :application, 'blog' >>> set :ssh_options, {:forward_agent => false, keys: >>> ['/home/deploy/.ssh/private_key'], :paranoid => false} >>> set :deploy_via, :remote_cache >>> set :use_sudo, true >>> set :deploy_to, '/webapp' >>> set :scm, :git >>> set :scm_user, :git >>> namespace :deploy do >>> desc 'Restart application' >>> task :restart do >>> on roles(:app), in: :sequence, wait: 5 do >>> # Your restart mechanism here, for example: >>> if test("[ ! -d " + release_path.join("tmp").to_s + " ]") >>> execute "mkdir ", release_path.join("tmp") >>> end >>> execute :touch, release_path.join('tmp/restart.txt') >>> end >>> end >>> after :restart, :clear_cache do >>> on roles(:web), in: :groups, limit: 3, wait: 10 do >>> # Here we can do anything such as: >>> # within release_path do >>> # execute :rake, 'cache:clear' >>> # end >>> end >>> end >>> after :finishing, 'deploy:cleanup' >>> end >>> >>> - Stage files (production.rb, staging.rb) >>> >>> root@domU-example:~/webapp/config/deploy/# cat production.rb | grep -v >>> "^#" >>> require 'capistrano/autoscale' >>> set :rails_env, "production" >>> >>> set :stage, :production >>> set :user, 'deploy' >>> >>> elastic_load_balancer "example-elb.example.com", :web >>> >>> >>> >>> Any pointers in the right direction would be greatly appreciated. I've >>> no issues reading as much documentation as you send me, but I haven't found >>> this one yet.... >>> >>> -- Michael >>> >>> -- >>> 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 [email protected]. >>> To view this discussion on the web, visit https://groups.google.com/d/ >>> msgid/capistrano/68f5e1b6-7b3b-4e97-a856-02e9614f341e%40googlegroups.com >>> . >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- > 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 [email protected]. > To view this discussion on the web, visit > https://groups.google.com/d/msgid/capistrano/826eadad-829c-465d-937a-0186df5c7bbc%40googlegroups.com > . > For more options, visit https://groups.google.com/groups/opt_out. > -- 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 [email protected]. To view this discussion on the web, visit https://groups.google.com/d/msgid/capistrano/CAN_%2BVLWjP275i61_WhEJCbdwycuUk6%2BZ93XU9%3D2ht4PgJ5azfw%40mail.gmail.com. For more options, visit https://groups.google.com/groups/opt_out.
