2015-05-14 44 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 
相关问题