Ruby on rails 3 YAML.load永远不会在Rails初始值设定项中返回

Ruby on rails 3 YAML.load永远不会在Rails初始值设定项中返回,ruby-on-rails-3,yaml,initializer,syck,psych,Ruby On Rails 3,Yaml,Initializer,Syck,Psych,我试图在Rails 3.1应用程序初始化期间加载yaml配置文件,对yaml.load的调用永远不会返回。这是我的初始值设定项文件: STRIPE_CONFIG = begin config = YAML.load(Rails.root.join('config', 'stripe.yml')) || {} config = config[Rails.env] || {} config.to_options end 这是我的stripe.yml文件: default: &d

我试图在Rails 3.1应用程序初始化期间加载yaml配置文件,对yaml.load的调用永远不会返回。这是我的初始值设定项文件:

STRIPE_CONFIG = begin
  config = YAML.load(Rails.root.join('config', 'stripe.yml')) || {}
  config = config[Rails.env] || {}
  config.to_options
end
这是我的stripe.yml文件:

default: &default
  api_key:    test
  public_key: test

development:
  <<: *default

test:
  <<: *default

production:
  api_key:    prod
  public_key: prod
我也尝试过显式地使用Psych而不是Syck,但运气不好。(它最后也挂了起来。)


呃,显然我只需要显式地读取文件。我改变了这一点:

YAML.load(Rails.root.join('config', 'stripe.yml'))
为此:

YAML.load(File.open(Rails.root.join('config', 'stripe.yml')))

答案会有点晚,但我刚才偶然发现了类似的问题;)

您可以使用
YAML::load_file
,它需要文件名作为参数

YAML.load(Rails.root.join('config', 'stripe.yml'))
YAML.load(File.open(Rails.root.join('config', 'stripe.yml')))