小编Jon*_*Jon的帖子

加载两个名称相同的Ruby Modules/Gems

我正在尝试使用两个Gems来访问Amazon Web Services(AWS).一个是亚马逊'aws-sdk',另一个是'amazon-ec2'.我正在使用第二个,因为aws-sdk不包括亚马逊服务的cloudwatch部分.

问题是两者都加载到同一名称空间.

require 'aws-sdk'         # aws-sdk gem
require 'AWS'             # amazon-ec2 gem

config = {:access_key_id => 'abc', :secret_key => 'xyz'}

# start using the API with aws-sdk
ec2 = AWS::EC2.new(config)  

# start using the API for anazon-ec2
cw = AWS::Cloudwatch::Base.new(config) 
Run Code Online (Sandbox Code Playgroud)

现在,这可以理解地在最后一行引发错误,因为AWS模块指向第一个必需的库,在本例中为aws-sdk.

NameError: uninitialized constant AWS::Cloudwatch
Run Code Online (Sandbox Code Playgroud)

那么,我可以将其中一个加载到另一个命名空间中吗?就像是

require 'aws-sdk', 'AWS_SDK'
require 'AWS', 'AWS_EC2'

ec2 = AWS_SDK::EC2.new(config)  
cw = AWS_EC2::Cloudwatch::Base.new(config) 
Run Code Online (Sandbox Code Playgroud)

或者我可以在这里使用另一种技巧吗?

谢谢

ruby rubygems amazon-ec2 amazon-web-services

7
推荐指数
1
解决办法
2905
查看次数

使用Elm Json.Decode将vales从父记录移动到子记录

我正在编写一个elm json解码器,并希望将值从"父"记录移动到"子".

在这个例子中,我想将beta键/值移动到Bar类型中.

我传入的JSON

{ "alpha": 1,
  "beta: 2,
  "bar": {
    "gamma": 3 
  }
}
Run Code Online (Sandbox Code Playgroud)

我的类型

type alias Foo =
  { alpha : Int
  , bar : Bar 
  }

type alias Bar =
  { beta : Int 
  , gamma : Int 
  }
Run Code Online (Sandbox Code Playgroud)

我怎么能在解码器中做到这一点?我觉得我想把解码器传递betafooDecode.但这显然是不对的......

fooDecode =
    decode Foo
        |> required "alpha" Json.Decode.int
        |> required "bar" barDecode (Json.Decode.at "beta" Json.Decode.int)

barDecode betaDecoder =
    decode Bar
        |> betaDecoder
        |> required "gamma" Json.Decode.int
Run Code Online (Sandbox Code Playgroud)

注意:我的实际用例有一个子列表,但希望我能用这个指针来解决这个问题.我正在使用Decode.Pipeline,因为它是一个大型的JSON对象

elm

1
推荐指数
1
解决办法
49
查看次数

标签 统计

amazon-ec2 ×1

amazon-web-services ×1

elm ×1

ruby ×1

rubygems ×1