【问题标题】:Ruby monkey patch AWS::S3::S3ObjectRuby 猴子补丁 AWS::S3::S3Object
【发布时间】:2015-09-26 21:39:12
【问题描述】:

我需要为我们的开发环境在 AWS SDK 版本 1 1.60 gem 中修改 AWS S3Object 类。我认为只需重新声明类并添加到它或覆盖一些东西,它就像任何其他猴子补丁一样简单,但它似乎不起作用。我尝试添加的任何方法都没有添加。像下面这样简单的东西是行不通的。

class S3Object
  def blah
    puts 'foo'
  end
end

connection = AWS::S3::new
connection.buckets['bucketname'].objects['object_name'].blah

这样我得到一个错误:

NoMethodError: undefined method `blah' for <AWS::S3::S3Object:amazon.server.com/bucketname>:AWS::S3::S3Object

我也尝试通过这样做来遵循 gem 的模块和类结构

module AWS
  class S3
    class S3Object
      def blah
        puts '***** blah blah blah *****'
      end
    end
  end
end

那也没用

从源代码的外观来看,对象集合应该包含一个 S3Object 的实例。无论出于何种原因,它都没有融入我的新方法中。我做错了什么?

【问题讨论】:

  • 您缺少 AWS::S3 内部的模块 S3 对象

标签: ruby-on-rails ruby


【解决方案1】:
module AWS
  module S3
   class S3Object
     def blah
       puts 'foo'
     end
   end
end

【讨论】:

  • 谢谢,其实我以为我已经尝试过了,但我想没有。它奏效了。
猜你喜欢
  • 1970-01-01
  • 2016-09-01
  • 2012-09-16
  • 2012-12-18
  • 2020-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-29
相关资源
最近更新 更多