【问题标题】:Trying to deploy a jRoR app using rubber and getting NoMethodError: undefined method `authorize_port_range' for nil:NilClass尝试使用橡胶部署 jRoR 应用程序并获得 NoMethodError: undefined method `authorize_port_range' for nil:NilClass
【发布时间】:2012-09-13 02:30:33
【问题描述】:

这是我第一次使用橡胶或部署到 Amazon EC2。我正在关注这个Railscast。我用谷歌搜索了一遍,似乎没有其他人遇到这个问题。这是我运行 cap rubber:create_staging 时的控制台日志:

user529789@user529789-M15x:~/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/jruby-1.6.7.2@grouper/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/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/thread_safe_proxy.rb:13
     sync_security_groups at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/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/jruby-1.6.7.2@grouper/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/jruby-1.6.7.2@grouper/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/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/recipes/rubber/security_groups.rb:208
    setup_security_groups at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/recipes/rubber/security_groups.rb:51
          create_instance at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/recipes/rubber/instances.rb:255
          create_instance at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/gems/rubber-2.1.0/lib/rubber/recipes/rubber/instances.rb:254
         create_instances at /home/user529789/.rvm/gems/jruby-1.6.7.2@grouper/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

【问题讨论】:

    标签: amazon-ec2 jruby jrubyonrails fog


    【解决方案1】:

    对我有用的解决方法是去 橡胶.yml

    并将与安全组相关的所有选项从“true”设置为“false” 完全不确定这样做的效果,但似乎可以通过。

    【讨论】:

      【解决方案2】:

      我的猜测是它正在寻找一个范围,并且在堆栈跟踪中你给出的范围是从一个端口到同一个端口和 ruby​​,尤其是 jruby 可能会错误地解释端口范围。

      您可以尝试在您的 jruby on irb 版本中运行

      (22..22).to_a 看看你得到了什么。在 mri 中你会得到 [22] 但在 jruby 中可能存在实现错误。

      我认为失败时正在执行的代码在这里: https://github.com/rubber/rubber/blob/v2.1.0/lib/rubber/cloud/fog.rb#L182

      编辑

      再看了几分钟后,很明显橡胶将参数传递给了雾宝石,我很确定即使范围可以解决,雾使用它的方式也需要一个范围。您可以尝试从 21 到 23 或 22 到 23 的范围,看看是否可以让您克服错误。另外,请注意,您使用的橡胶版本远远落后于主版本。我没有任何参考来指定是否需要这样做,但您应该意识到这一点。祝你好运。

      【讨论】:

        猜你喜欢
        • 2020-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-19
        • 2016-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多