我正在尝试创建一个rails应用程序并将其放在github上,但是我在将个人设置与我检入的内容分开时遇到了一些麻烦。就像你通常检查database.yml.example并让人们自己创建database.yml一样,我想用一堆其他文件(所有的rb文件)来做,比如secret_token和production.rb,但我不想让安装过程涉及将15个样本文件复制到实际使用的文件中。
我最终做的是在我的配置目录中创建一个settings.yml.example文件,并将其他文件中的所有设置放在那里。然后设置过程只有2个副本(database.yml和settings.yml)。然后我把它添加到environment.rb
的开头#allow files to read their private settings from settings.yml using SETTINGS
require 'yaml'
SETTINGS = YAML.load(IO.read(Rails.root.join("config", "settings.yml")))
当我需要文件中的某些内容时,我会说出像
这样的内容Foo::Application.config.secret_token = SETTINGS["secret_token"]
这个工作正常,直到我尝试运行rake测试,当它从Rails.root.join调用中给了我未初始化的常量Rails(NameError)
我的问题是,这是完成我想要完成的事情的好方法吗?如果是这样,是否有更好的地方放置加载设置文件的代码?看起来我可以在每个单独的调用之前加载它,并且只是在加载之后添加类似“除非定义了设置”之类的内容,但这对于必须在任何地方进行操作都很烦人
注意:对于任何好奇的人,我必须复制的文件是