如何在rails中全局使用class \ object?

时间:2013-11-28 23:22:52

标签: ruby-on-rails ruby class connection global-variables

似乎是一个简单的问题,但我似乎无法在SO上找到答案。

我正在尝试将Stripe实现到应用程序中。 Stripe是一个ruby类,它使用api_key方法来设置密钥。

在我的Rails 4应用程序中,我需要将密钥定义为Stripe.api_key = mykey,以便可以从所有控制器和模型访问Stripe吗?

例如,在数据库中创建帐户后,我希望before_create挂钩利用此Stripe类来创建相应的付款帐户。不止一次设置API密钥似乎是不对的。

我已经尝试将其设为$ stripe全球但我被警告不要使用它。

2 个答案:

答案 0 :(得分:1)

我在app下有一个文件夹类,其中我为每个类放了一个单独的文件,在你的情况下称为stripe.rb

这样您就可以在不执行任何其他要求的情况下使用该类

答案 1 :(得分:1)

我通常将这些类放在lib文件夹中。您需要确保您的文件名与snakecase中的类名相同。

首次使用Stripe常量时,执行rails constant_missing方法。它在您的一个自动加载路径中搜索名为stripe.rb的文件。如果文件不存在,则抛出常量缺失异常,否则返回此文件类中声明的内容(如果其名称与常量匹配)。

如果你想在服务器启动时对这个类执行一些代码,你需要将它放在config / initializers文件夹中(不是类本身,只是调用它的代码)。在加载了正确的环境之后,正在执行此文件夹中的所有文件(此处不需要命名约定)。