В Ruby модули с одинаковыми именами из разных драгоценных камней не заменяют друг друга.Если один гем реализует
module AWS
class Foo
end
end
, а другой реализует
module AWS
class Bar
end
end
, и вам требуются оба, вы получите модуль AWS, который содержит как класс Foo, так и класс Bar (если второй не делает что-то действительно хитрое, например, явно не определив что-либо уже присутствующее в модуле, прежде чем определять свои собственные вещи, что очень маловероятно).Пока второй драгоценный камень не переопределяет какие-либо методы в первом драгоценном камне (или пытается использовать модуль в качестве класса или наоборот), они оба должны работать нормально.Я думаю, что вы, возможно, ищете неправильное решение.
Редактировать: И на самом деле, что происходит со мной (в среде, где присутствуют только эти драгоценные камни (aws-sdk 1.2.3 и amazon-ec2 0.9.17)) и точный код, который вы перечислили выше), это именно то, что:
.rvm/gems/ree-1.8.7-2011.03@ec2/gems/amazon-ec2-0.9.17/lib/AWS/EC2.rb:2: EC2 is not a module (TypeError)
Может ли быть, что где-то проглочена ошибка и что модуль AWS :: Cloudwatch не был определен, просто потому, что инициализациядрагоценный камень идет наперекосяк?