[英]Rails 3 error: no such file to load — initializer (LoadError)
[英]YAML.load never returns in Rails initializer
我正在嘗試在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
無論出於何種原因, YAML.load
調用都不會返回。 如果執行堆棧跟蹤,它似乎停留在syck.rb第135行上。有趣的是,在中斷之前我讓我的應用程序停留的時間越長,對第135行的調用就會越多。
/Users/mhuggins/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/syck.rb:135:in `read'
/Users/mhuggins/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/syck.rb:135:in `read'
/Users/mhuggins/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/syck.rb:135:in `load'
/Users/mhuggins/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/syck.rb:135:in `load'
/Users/mhuggins/Sites/dating/config/initializers/stripe.rb:2:in `<top (required)>'
...
我也嘗試過使用Psych來代替Syck,但是運氣不好。 (它最終也懸掛了。)
STRIPE_CONFIG = begin
require 'psych'
config = Psych.load(Rails.root.join('config', 'stripe.yml')) || {}
config = config[Rails.env] || {}
config.to_options
end
答案有點遲,但是我剛才偶然發現了類似的問題;)
您可以使用YAML::load_file
,它將filename作為參數。
gh,顯然我只需要顯式讀取文件。 我改變了這個:
YAML.load(Rails.root.join('config', 'stripe.yml'))
對此:
YAML.load(File.open(Rails.root.join('config', 'stripe.yml')))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.