在ruby 1.9.2上運行的Rails應用程序的RHEL5框中,即使在登臺環境中login_type設置爲「ldap」,也會解析以下yaml。有沒有人有任何想法,爲什麼發生這種情況?redhat上的Yaml解析問題
defaults: &defaults
login_type: ldap
staging:
<<: *defaults
login_type: developer
在ruby 1.9.2上運行的Rails應用程序的RHEL5框中,即使在登臺環境中login_type設置爲「ldap」,也會解析以下yaml。有沒有人有任何想法,爲什麼發生這種情況?redhat上的Yaml解析問題
defaults: &defaults
login_type: ldap
staging:
<<: *defaults
login_type: developer
這可能與this Bundler/Ruby/Psych issue做的事情 - 它已經被固定,但不是在Ruby的當前版本。
你沒有看到OS X(也可能是Ubuntu)問題的原因是,除非在編譯/安裝Ruby之前手動安裝libyaml,否則不會安裝Psych;它回落到Syck,它工作正常。 (嘗試這樣做在OS X上require 'psych'
,它會失敗,而這將在RHEL5正常工作)
現在,您可以強制YAML解析器使用SYCK代替精極度緊張的把這個在您的boot.rb
結束(但請注意 - 紅寶石的未來版本將不再包括SYCK):
YAML::ENGINE.yamler = 'syck'
或最好,你應該只使用非DRY YAML文件(沒有默認值),暫且。
UPDATE
說出來今天(1.9.2-P290)的Ruby的最新版本包括對這個問題的修復程序。
非常感謝dmarkow。在boot.rb結尾添加行確實有效! – 2011-06-06 13:58:59
你如何訪問這些變量?你創建了一個staging.rb環境文件嗎? – 2011-06-03 15:00:23
是的,我有一個staging.rb文件。我在Ubuntu和Mac OSX上沒有這個問題。 – 2011-06-03 15:30:30