2011-06-03 68 views
3

在ruby 1.9.2上運行的Rails應用程序的RHEL5框中,即使在登臺環境中login_type設置爲「ldap」,也會解析以下yaml。有沒有人有任何想法,爲什麼發生這種情況?redhat上的Yaml解析問題

defaults: &defaults 
    login_type: ldap 

staging: 
    <<: *defaults 
    login_type: developer 
+0

你如何訪問這些變量?你創建了一個staging.rb環境文件嗎? – 2011-06-03 15:00:23

+0

是的,我有一個staging.rb文件。我在Ubuntu和Mac OSX上沒有這個問題。 – 2011-06-03 15:30:30

回答

2

這可能與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的最新版本包括對這個問題的修復程序。

+0

非常感謝dmarkow。在boot.rb結尾添加行確實有效! – 2011-06-06 13:58:59