2012-06-10 109 views

回答

3

如果涉及密码,我建议您将数据存储在外部文件中,以避免将敏感数据提交到存储库。 然后,可以通过读取在该文件中的初始值设定,加载数据到存储器例如:

配置/ my_secrets.yml:

development: 
    password: abcdefgh 
test: 
    password: abcdefgh 

配置/初始化/ load_my_config.rb:

MY_CONFIG = YAML.load_file("#{Rails.root.to_s}/config/my_secrets.yml")[Rails.env] 

现在,您可以通过访问MY_CONFIG['password']在任何环境中访问您的password。 生产密码可以单独保存在服务器上(并在另一个安全位置)。

对于非敏感数据,我只是将数据直接放在初始化程序中。 (对于应用程序)

+0

yml文件是公开可读的,但是,不是吗? – thatdankent

+0

'未初始化的常量HomeController :: MY_CONFIG' – Alexandre

+0

yml文件放置在服务器上,但它应该只对rails用户可读。 – Nicholas

3

密码应该与由认证/授权宝石通过给定的请求,应用程序的代码红宝石来处理诸如设计,大减价,authLogic等

要可用变量可以存储在全局变量中。类级固定值可以存储在常量中。在控制器继承自application_controller的rails中,您可以在那里定义类级别常量。检查Ruby语言以获取这些变量类型变量的确切继承规则。

实际上,最好的做法是不要这样做,或者尽可能避免它,许多优秀的程序员会避免像鼠疫这样的问题。这意味着你的代码块没有被封装 - 这些动作现在依赖于外部值,并且通过使许多项依赖于可能在范围之外改变的一件事物而增加了耦合。

+0

这是一个很棒的评论,迈克尔。对于将认证密钥存储在代码块外定义的常量上的想法感到好奇。这是一个可接受的项目来存储在别处吗? – thatdankent