2012-09-20 13 views
5

Esta es la primera vez que uso rubber o despliegue en Amazon EC2. Estoy siguiendo este Railscast. He buscado en Google y nadie más parece tener este problema. Aquí está mi registro de la consola cuando corro cap rubber:create_staging:Intentando implementar una aplicación jRoR utilizando rubber y obteniendo NoMethodError: método indefinido `authorize_port_range 'for nil: NilClass

[email protected]:~/develops/grouper$ cap rubber:create_staging 
    triggering load callbacks 
    * executing `rubber:init' 
    * executing `rubber:create_staging' 
Hostname to use for staging instance [production]: 
Roles to use for staging instance [apache,app,collectd,common,db:primary=true,elasticsearch,examples,graphite_server,graphite_web,graylog_elasticsearch,graylog_mongodb,graylog_server,graylog_web,haproxy,mongodb,monit,passenger,postgresql,postgresql_master,web,web_tools]: 
    * executing `rubber:create' 
Excon nonblock is not supported by your OpenSSL::SSL::SSLSocket 
Excon nonblock is not supported by your OpenSSL::SSL::SSLSocket 
    * Creating new security group: grouper_production_default 
    * Creating new rule: {"source_group_name"=>"grouper_production_default", "source_group_account"=>"<account id redacted>"} 
[DEPRECATION] authorize_group_and_owner is deprecated, use authorize_port_range with :group option instead 
    * Creating new rule: {"protocol"=>"tcp", "from_port"=>"22", "to_port"=>"22", "source_ips"=>["0.0.0.0/0"]} 
NoMethodError: undefined method `authorize_port_range' for nil:NilClass 
    add_security_group_rule at /home/user529789/.rvm/gems/[email protected]/gems/rubber-2.1.0/lib/rubber/cloud/fog.rb:182 
        send at org/jruby/RubyKernel.java:2088 
      method_missing at /home/user529789/.rvm/gems/[email protected]/gems/rubber-2.1.0/lib/rubber/thread_safe_proxy.rb:13 
    sync_security_groups at /home/user529789/.rvm/gems/[email protected]/gems/rubber-2.1.0/lib/rubber/recipes/rubber/security_groups.rb:221 
        each at org/jruby/RubyArray.java:1615 
    sync_security_groups at /home/user529789/.rvm/gems/[email protected]/gems/rubber-2.1.0/lib/rubber/recipes/rubber/security_groups.rb:220 
        each at org/jruby/RubyArray.java:1615 
    sync_security_groups at /home/user529789/.rvm/gems/[email protected]/gems/rubber-2.1.0/lib/rubber/recipes/rubber/security_groups.rb:214 
        each at org/jruby/RubyArray.java:1615 
    sync_security_groups at /home/user529789/.rvm/gems/[email protected]/gems/rubber-2.1.0/lib/rubber/recipes/rubber/security_groups.rb:208 
    setup_security_groups at /home/user529789/.rvm/gems/[email protected]/gems/rubber-2.1.0/lib/rubber/recipes/rubber/security_groups.rb:51 
      create_instance at /home/user529789/.rvm/gems/[email protected]/gems/rubber-2.1.0/lib/rubber/recipes/rubber/instances.rb:255 
      create_instance at /home/user529789/.rvm/gems/[email protected]/gems/rubber-2.1.0/lib/rubber/recipes/rubber/instances.rb:254 
     create_instances at /home/user529789/.rvm/gems/[email protected]/gems/rubber-2.1.0/lib/rubber/recipes/rubber/instances.rb:217 
        call at org/jruby/RubyProc.java:270 
        call at org/jruby/RubyProc.java:224 

Respuesta

0

Mi conjetura es que su búsqueda de un rango y en el seguimiento de la pila le están dando el rango es de un puerto a un mismo puerto y el rubí, especialmente jruby puede haber construyendo el rango de puertos incorrectamente.

es posible que intente ejecutar en su versión de jruby el IRB

(22..22).to_a y ver lo que hay. en mri obtendría [22] pero en jruby podría haber un error de implementación.

el código en ejecución en el momento del fallo Creo que es aquí: https://github.com/rubber/rubber/blob/v2.1.0/lib/rubber/cloud/fog.rb#L182

EDITAR

después de mirar durante unos minutos más, es claro que el caucho pasa los argumentos de la gema niebla y yo' Estoy bastante seguro de que, aunque el rango se pueda resolver, la forma en que la niebla lo está utilizando espera un rango. Puede intentar algo así como un rango de 21 a 23 o de 22 a 23 y ver si eso le permite pasar el error. Además, como nota, la versión de goma que está utilizando está muy por detrás de la versión maestra. No tengo ninguna referencia para especificar si esto es deseado o no, pero debe tenerlo en cuenta. buena suerte.

0

una solución que funcionó para mí es ir a rubber.yml

y configurar todas las opciones relacionadas con el grupo de seguridad de 'verdadero' a 'falso' No está seguro del efecto de esto en absoluto pero parece pasar.

Cuestiones relacionadas