2012-10-06 41 views
0

我试图根据我在测试/开发或生产中使用不同的条带键(信用卡支付处理系统)/根据我在StackOverflow上看到的建议,我做了以下:Rails:常量不初始化

在我/config/initalizers/stripe.rb文件,我有以下几点:

STRIPE_CONFIG = begin 
    config = YAML.load(File.open(Rails.root.join('config', 'stripe.yml'))) 
    config = config[Rails.env] || {} 
    config.to_options 
end 

,在我/config/stripe.yml文件,我有以下几点:

default: &default 
    Stripe.api_key: "testapikeycode" 
    STRIPE_PUBLIC_KEY: "testpublickeycode" 

development: 
    <<: *default 

test: 
    <<: *default 

production: 
    Stripe.api_key: "productionapikeycode" 
    STRIPE_PUBLIC_KEY: "productionpublickeycode" 

然而,当我去到控制台(轨控制台),以及I型

puts STRIPE_PUBLIC_KEY 

我收到以下错误信息:

NameError: uninitialized constant STRIPE_PUBLIC_KEY 

任何想法?

替代方法

只使用stripe.rb,并在它下面的:

if Rails.env == 'production' 
    Stripe.api_key: "productionapikeycode" 
    STRIPE_PUBLIC_KEY: "productionpublickeycode" 
else 
    Stripe.api_key: "tesapikeycode" 
    STRIPE_PUBLIC_KEY: "testpublickeycode"  
end 

回答

2

STRIPE_PUBLIC_KEY是在你的YAML配置文件中的一个关键,你从来没有真正初始化为常数。如果您输入p STRIPE_CONFIG['STRIPE_PUBLIC_KEY'],您应该得到您想要的结果。

除此之外,我认为YAML.load应该是YAML.load_file

+0

YAML.load的作品。我最终没有使用这个,看到我原来的问题的意见 – EastsideDeveloper