使用ruby2.1.2进行未初始化的常量Yaml(NameError)

时间:2014-11-11 06:56:41

标签: ruby amazon-web-services yaml

我是红宝石的新手。 我想使用简单的yml设置文件 这是我的代码

LaunchEC2s.rb

#!/usr/bin/ruby
require 'rubygems'
require 'aws-sdk'
require 'yaml'
AWS_CON = Yaml.load_file("AWSsettings.yml") unless defined? AWS_CON

def launchEC2(count)
key_pair = ec2.key_pairs[AWS_CON['key_pair']]
    image_id
ec2 = AWS::EC2.new.regions[AWS_CON['region']]
instances = ec2.instances.create(
    :image_id => AWS_CON['image_id'],
    :instance_type => AWS_CON['instance_type'],
    :count => count,
    :security_groups => AWS_CON['security_groups'],
    :key_pair => key_pair)
end
launchEC2(2)

我的yml文件看起来像

# AWS yml file
key_pair: xxx
region: us-west-2
image_id: ami-b5a7ea85
instance_type: t2.micro
security_groups: xxx

当我运行它时,我

./LaunchEC2s.rb:6:in `<main>': uninitialized constant Yaml (NameError)

对不起,这个问题很愚蠢,但我无法弄清楚 我做错了什么?

2 个答案:

答案 0 :(得分:3)

我很确定你想YAML.load_file("AWSsettings.yml")而不是Yaml.load_file("AWSsettings.yml")(差异就是所有上限)。

答案 1 :(得分:1)

试试这个: 在config /

中创建一个yml文件

说config / ec2_keys.yml

development: 
 region: us-west-2
 image_id: ami-b5a7ea85
 instance_type: t2.micro
 security_groups: xxx

现在你想要为它们初始化一次。为此创建这一行文件: 配置/初始化/ load_ec2.rb

EC2 = YAML.load(ERB.new(File.read("#{Rails.root.to_s}/config/ec2_keys.yml")).result)[Rails.env]

现在在任何需要的地方使用常量:

EC2["region"]
#=> "us-west-2"
EC2["image_id"]
#=> "ami-b5a7ea85"