开发者

Is there a Rack or Sinatra based environment configuration utility?

Is there anything in the Sinatra / Rack world similar to Rails configuration loading scheme that loads one of the config\enviroments\*.rb files depending on Rails.env

I know I could develop 开发者_开发知识库one pretty easily, i was just wondering if there was something already in place.


If you're following the Rails convention of putting a file for each environment in config/environments/environment_name.rb, you can put something like this in your Sinatra app, or for Rack in your config.ru file:

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

With some minor modifications you could make it load other file locations/combinations. Sinatra's configure blocks work just as well, too.


It turns out that there is something from Sinatra, that provides a similar, though limited, functionality.

See the code: https://github.com/sinatra/sinatra/blob/master/lib/sinatra/base.rb#L1120

So that you can do this:

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


There is one called Sinatra::ConfigFile, which now lives in Sinatra::Contrib http://www.sinatrarb.com/contrib/config_file.html

There's lots of useful stuff in there.


I adapted mine from monkrb.com (it's also yaml in RoR anyways)

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

e.g. http://github.com/codepants/yasumi/blob/master/config/settings.yml

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜