Rails:常量不初始化

时间:2012-10-06 01:15:21

标签: ruby-on-rails

我正在尝试使用不同的条带键(信用卡支付处理系统),具体取决于我是在测试/开发还是生产/根据我在StackOverflow上看到的建议,我做了以下内容:

在我的/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"

但是,当我进入控制台(rails控制台)时,我输入

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 

1 个答案:

答案 0 :(得分:2)

STRIPE_PUBLIC_KEY是yaml配置文件中的一个键,您实际上从未将其初始化为常量。如果您输入p STRIPE_CONFIG['STRIPE_PUBLIC_KEY'],则应获得所需的结果。

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