2012-11-23 153 views
1

我需要在Rails項目中保留某種狀態。 某種全局變量或類似的東西,它在服務器啓動時具有初始值,並且可以在項目的任何地方訪問和修改。怎麼做?實現它的最好方法是什麼?Rails全局狀態變量

回答

1

config/initializers文件夾中創建一個文件並在那裏創建您的全局變量。

# config/initializers/my_var.rb 
$my_global_var = 'hello' 

但通常有「乾淨」的方式來做到這一點。全局變量不是線程安全的,現在這是一個很熱門的話題。

+0

同意塞爾吉奧,如果可能的話尋找替代解決方案。後來在項目中會導致難以調試的問題 – Ross

+0

是的,我試了一下。並且變量值在某些進程中不正確,因爲不是線程安全性。 那麼,我能做什麼?創建一個模型只存儲一個變量? – user1573607

0

我認爲這裏最好的解決方案可能是settingslogic gem。你可以在yaml文件中定義設置,然後你可以在代碼的任何地方訪問它們。閱讀並設置它們。同樣,它可以讓你擁有不止一個'全局變量'。在我使用的大多數項目中,設置在運行時不會更改,但如果您需要這種行爲,則可以這樣做。

# config/application.yml 
defaults: &defaults 
    my_global_variable: 100 

development: 
    <<: *defaults 

production: 
    <<: *defaults 

#And then anywhere in the application you can do: 
Settings['my_global_variable'] = 200 
+0

它的工作原理,問題在於如上面有人所說,它不是線程安全的。 – user1573607