2015-05-14 64 views
0

您好我想有一些全局變量Rails應用程序的全局定義

例如用於鬆弛,通知我婉,用來初始化一次,重複使用它。

什麼是類似的東西,最好的做法是什麼?

回答

3

使用$符號到您的變量中,併成爲全球性的。如下所示:

$slack-notifier 

另外它應該在config/initializers文件夾中初始化。爲此,您可以在任何文件中創建下的config/intializers像配置/ intializers/xyz.rb

如果你不想在整個應用程序改變這種情況。然後你可以創建一個常量。

按照慣例,你應該建立在intializers文件夾這個常數。

config/intializers/initialize.rb 

而它裏面的內容應該是大寫字。

# config/intializers/initialize.rb 

ANY_CONSTANT = 'xyz' 

您可以使用此ANY_CONSTANT任何地方在應用程序中。

+0

嗯是不是有辦法把它定義在application.rb中或environment.rb中 – Felix

+1

您可以在'配置/ intializers'任何文件創建像'config/intializers/xyz.rb'你也可以使用proc lambda等進行條件賦值。 –

+0

你也可以在'application.rb'中聲明全局變量和常量,就像在'config.after_initialize'塊內一樣。 –

0

從Ruby on Rails的4.2你有config/secrets.yml文件,您可以在其中存儲您的設置開始。

你這樣指定它們:

your_app: &your_app 
    app_id: 123 

,並獲得值如下:

Rails.application.secrets[:your_app]['app_id'] 

另一種選擇是有ENV變量。看看this gem

與您共創dotenv一個在應用程序的根目錄下名爲.env文件和存儲您的全局設置有如下:

APP_ID=123 

爲了得到它的應用程序中,你會做

ENV['APP_ID'] 

添加此文件到.gitignore。這是存儲應用設置的最安全的方式。

1

在/config/initializers/global.rb

$slack-notifier