2013-05-08 75 views
0

我接手工作的Rails 3應用程序從離岸供應商未初始化常數和軌道控制檯在這條線出現故障:的Rails在初始化

Settings.defaults[:processing_fee] = '0.99' 

在文件配置/初始化/ settings.rb

我把這個文件與git blame中的內容進行了比較,它與之匹配。我已經刪除了這個文件的內容,並且它運行,所以它不喜歡這一行。閱讀所以我已經創建了文件名並且保持單數。在另一個SO post之後,我在config/application_settings.rb中創建了另一個文件。在控制檯中找不到常數。它移動到/初始化產生軌控制檯

/Users/sam/apps/tickat/config/initializers/application_settings.rb:1:in `<top (required)>': uninitialized constant SETTINGS (NameError) 

從這個內容:

SETTINGS[:processing_fee] = '0.99' 

看來,一些關於我的環境是不接受我的常量在這裏。我首先注意到這推向Heroku,並可以在控制檯的開發中複製這個錯誤。我問周圍,我卡住了。我敢肯定,這是我瘋狂的東西,山姆

+1

您可以嘗試在該行之前添加'SETTINGS || = {}'。你的錯誤是告訴你,你正試圖在一個還不存在的散列上設置一個鍵/值對。如果尚未初始化,那麼'|| ='運算符會將SETTINGS設置爲空的散列。 – niiru 2013-05-08 15:41:47

+0

是的,什麼是設置?一類?哈希?這可能是有人忘記在你的倉庫中提交一個文件,在這種情況下,你需要逆向工程設置。我會讓它成爲一個空類並添加類方法.settings。 – poseid 2013-05-08 15:56:51

回答

1

這可能是有人忘了提交一個文件在你的應用程序的回購。

如果是這種情況,並且無法從作者處獲取文件,則需要對「設置」進行逆向工程。我想使它成爲一個空的模塊:

module Settings 

    def self.defaults 
    @defaults ||= {} 
    end 

end 

,看看你能走多遠,你會得到更多的錯誤之前...

編輯:您可以在控制檯中看到這個哈希值是如何initalized:

irb(main):008:0> Settings.defaults 
=> {} 
irb(main):010:0> Settings.defaults[:a] = 1 
=> 1 
irb(main):011:0> Settings.defaults 
=> {:a=>1} 
+0

沒有錯誤,但沒有添加常量。我會添加:processing_fee ='0.99'作爲該空數組的成員嗎?不確定。 – sam452 2013-05-08 16:08:24

+0

這裏的技巧是你讓初始化程序設置默認值。它取決於你想要什麼,以及默認值來自哪裏,但到目前爲止,它看起來像你的應用程序期望在Settings.defaults的散列 – poseid 2013-05-08 16:11:46

+0

額外的步驟密封交易,thx – sam452 2013-05-08 17:38:48