2012-09-20 20 views
5

Đây là lần đầu tiên tôi sử dụng cao su hoặc triển khai cho Amazon EC2. Tôi đang theo dõi điều này Railscast. Tôi đã googled trên và không ai khác dường như có vấn đề này. Dưới đây là giao diện điều khiển đăng nhập của tôi khi tôi chạy cap rubber:create_staging:Cố gắng triển khai ứng dụng jRoR bằng cao su và nhận NoMethodError: phương thức chưa xác định `authorize_port_range 'cho 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 

Trả lời

0

Tôi đoán là nó tìm kiếm một phạm vi và trong stack trace bạn đang đưa ra phạm vi là từ một cổng vào cổng tương tự và ruby, đặc biệt là JRuby có thể giải thích phạm vi cổng không chính xác.

bạn có thể thử chạy trong các phiên bản của JRuby trên IRB

(22..22).to_a và xem những gì bạn nhận được. trong mri bạn sẽ nhận được [22] nhưng trong jruby có thể có một lỗi thực hiện.

mã dưới thực hiện tại thời điểm thất bại tôi nghĩ là ở đây: https://github.com/rubber/rubber/blob/v2.1.0/lib/rubber/cloud/fog.rb#L182

EDIT

sau khi tìm kiếm một vài phút nữa, nhưng rõ ràng rằng cao su vượt qua đối số cho viên ngọc sương mù và tôi m khá chắc chắn rằng mặc dù phạm vi có thể giải quyết, cách mà sương mù đang sử dụng nó, mong đợi một phạm vi. Bạn có thể thử một cái gì đó giống như một phạm vi từ 21 đến 23 hoặc 22-23 và xem nếu điều đó giúp bạn vượt qua lỗi. Ngoài ra, như một lưu ý, phiên bản cao su bạn đang sử dụng là khá xa phía sau phiên bản tổng thể. Tôi không có bất kỳ tài liệu tham khảo để xác định điều này là mong muốn hay không, nhưng bạn nên nhận thức được nó. chúc may mắn.

0

một workaround rằng làm việc cho tôi là để đi đến rubber.yml

và đặt tất cả các tùy chọn liên quan đến nhóm bảo mật từ 'true' để 'false' Không chắc về hiệu quả của việc này ở tất cả các nhưng dường như nó đã vượt qua.

Các vấn đề liên quan