【问题标题】:Where to store configuration for many similar sinatra apps在哪里存储许多类似 sinatra 应用程序的配置
【发布时间】:2012-10-29 21:14:40
【问题描述】:

我有大约 130 个 sinatra Web 应用程序在 apache-passenger 服务器集群上运行。所有这些应用程序都是从通用代码库中克隆出来的,然后修改为拥有自己的身份验证密钥。除了身份验证密钥之外,大多数应用程序没有修改。单独应用程序的优点是我可以非常快速地对特定应用程序进行更改,而不会冒其他应用程序停机的风险。

但是,这些身份验证密钥本质上是配置。将配置存储在代码库中既不方便又直观上是错误的。我探索过的替代选项包括将配置存储在数据库中并将其缓存在内存中、每个应用程序的 apache 环境变量和共享的 json 文件。

还有更好的选择吗?有什么我遗漏的问题吗?

【问题讨论】:

    标签: ruby sinatra setup-deployment


    【解决方案1】:

    听起来环境变量可能最适合您的目的,然后可以在您的应用中访问,如下所示:

    $ APPNAME_AUTH_KEY="saf3t33553" ruby -e "puts ENV['APPNAME_AUTH_KEY']"
    saf3t33553
    

    共享位置的 JSON 文件,甚至是普通的 ruby​​ 文件也可以解决问题。将配置存储在数据库中听起来有点过头了。

    如果您想更深入地挖掘,这是我已经写了很多的主题:

    编写可配置的应用程序 (part 1, part 2) (请参阅第 2 部分中的“使用 Shell 环境进行配置”部分)

    【讨论】:

    • 我同意将配置存储在数据库中是多余的,但优点是您可以在不重新启动应用程序的情况下更改配置。
    • 这很好,但使用配置文件也是如此。如果 OP 集群中的 sinatra 应用程序都共享一个数据库,那么文件与数据库可能有相​​似的优缺点,只是编辑数据库中的值比编辑文件需要更多的工作。
    • 对,这意味着将密钥存储在 apache 配置中,因为您可以在其中为运行在 apache/passenger 上的 sinatra 应用程序设置环境变量。
    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2011-09-17
    • 2010-10-21
    • 2012-03-13
    相关资源
    最近更新 更多