Ruby on rails 在开源rails应用程序中创建全局设置文件

Ruby on rails 在开源rails应用程序中创建全局设置文件,ruby-on-rails,Ruby On Rails,我正在尝试创建一个rails应用程序并将其安装在github上,但在将个人设置与我签入git的内容区分开来时遇到了一些问题。就像您通常签入database.yml.example并让人们创建自己的database.yml一样,我想用一堆其他文件(尽管都是rb文件)来实现这一点,比如secret_token和production.rb,但我不想让安装过程涉及将15个示例文件复制到实际使用的文件中 我最后做的是在我的config dir中创建一个settings.yml.example文件,并将其他

我正在尝试创建一个rails应用程序并将其安装在github上,但在将个人设置与我签入git的内容区分开来时遇到了一些问题。就像您通常签入database.yml.example并让人们创建自己的database.yml一样,我想用一堆其他文件(尽管都是rb文件)来实现这一点,比如secret_token和production.rb,但我不想让安装过程涉及将15个示例文件复制到实际使用的文件中

我最后做的是在我的config dir中创建一个settings.yml.example文件,并将其他文件中的所有设置放在其中。然后,设置过程只有两个副本(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(namererror)

我的问题是,这是一个很好的方式来完成我想要完成的事情吗?如果是这样,是否有更好的地方放置加载设置文件的代码?似乎我可以在每次单独调用之前加载它,然后在加载之后添加“除非定义了设置”,但如果要在任何地方都这样做,那会很烦人

注意:对于任何好奇的人来说,我必须复制的文件是

  • 秘密令牌.rb
  • production.rb(用于config.action\u mailer.default\u url\u选项)
  • designe.rb(用于config.pepper)
  • 当我开始使用更多的库时,我期望将来会有更多的库(这仍然是新的)

    • 这一点在评论中得到了回答,因此我将在这里复制托马斯的回答,以使其更加清楚


      和(卡里尔瓦夫和水豚的创造者)都是这方面的伟大宝石。我个人在figaro的config/application.yml文件中使用了figaro,该文件被排除在版本控制之外,几个月以来在开源项目中取得了巨大成功。

      这在一篇评论中得到了回答,因此我将在这里复制Thomas的回答,以使其更加清晰


      和(卡里尔瓦夫和水豚的创造者)都是这方面的伟大宝石。我个人使用figaro的config/application.yml文件,该文件被排除在版本控制之外,几个月以来在开源项目上取得了巨大的成功。

      和(由carrierwave和capybara的创建者)都是实现这一目的的宝贵资源。我个人将figaro与它的
      config/application.yml
      文件一起使用,该文件被排除在版本控制之外,几个月来在开源项目上取得了巨大成功。我使用了figaro,它按照我想要的方式工作。非常感谢。和(卡里尔瓦夫和水豚的创造者)都是这方面的瑰宝。我个人将figaro与它的
      config/application.yml
      文件一起使用,该文件被排除在版本控制之外,几个月来在开源项目上取得了巨大成功。我使用了figaro,它按照我想要的方式工作。非常感谢。