【问题标题】:Is there a Rack or Sinatra based environment configuration utility?是否有基于 Rack 或 Sinatra 的环境配置实用程序?
【发布时间】:2010-12-20 03:23:17
【问题描述】:

在 Sinatra / Rack 世界中是否有任何类似于 Rails 配置加载方案的东西,它根据 Rails.env 加载 config\enviroments\*.rb 文件之一

我知道我可以很容易地开发一个,我只是想知道是否已经有了一些东西。

【问题讨论】:

    标签: ruby deployment development-environment sinatra rack


    【解决方案1】:

    如果您遵循 Rails 约定,将每个环境的文件放在 config/environments/environment_name.rb 中,您可以在 Sinatra 应用程序中放置类似的内容,或者在 config.ru 文件中放置 Rack:

    Dir.glob(File.dirname(__FILE__) + "/config/environments/#{settings.environment}.rb", &method(:require))
    

    通过一些小的修改,您可以使其加载其他文件位置/组合。 Sinatra 的配置块也同样有效。

    【讨论】:

    • 谢谢,这几乎就是我最终做的事情.. 除了如果 env 文件不存在我就让它失败:require "config/#{settings.environment}"
    【解决方案2】:

    事实证明,Sinatra 提供了一些东西,提供了类似但有限的功能。

    查看代码: https://github.com/sinatra/sinatra/blob/master/lib/sinatra/base.rb#L1120

    这样你就可以这样做了:

    class MyApp < Sinatra::Base
      configure :development, :test do
        #only executes this code when environment is equal to one of the passed arguments
        # I'm pretty sure Sinatra sets this based on ENV['RACK_ENV']
      end
    end
    

    【讨论】:

      【解决方案3】:

      有一个叫做 Sinatra::ConfigFile,现在位于 Sinatra::Contrib http://www.sinatrarb.com/contrib/config_file.html

      里面有很多有用的东西。

      【讨论】:

        【解决方案4】:

        我从monkrb.com改编了我的(反正在RoR中也是yaml)

        YAML.load_file(path_of "config/settings.yml")[RACK_ENV]
        

        例如 http://github.com/codepants/yasumi/blob/master/config/settings.yml

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-03-30
          • 2018-10-25
          • 1970-01-01
          • 2011-08-15
          • 2014-05-24
          • 2011-09-11
          • 1970-01-01
          • 2017-07-03
          相关资源
          最近更新 更多