【发布时间】:2010-12-20 03:23:17
【问题描述】:
在 Sinatra / Rack 世界中是否有任何类似于 Rails 配置加载方案的东西,它根据 Rails.env 加载 config\enviroments\*.rb 文件之一
我知道我可以很容易地开发一个,我只是想知道是否已经有了一些东西。
【问题讨论】:
标签: ruby deployment development-environment sinatra rack
在 Sinatra / Rack 世界中是否有任何类似于 Rails 配置加载方案的东西,它根据 Rails.env 加载 config\enviroments\*.rb 文件之一
我知道我可以很容易地开发一个,我只是想知道是否已经有了一些东西。
【问题讨论】:
标签: ruby deployment development-environment sinatra rack
如果您遵循 Rails 约定,将每个环境的文件放在 config/environments/environment_name.rb 中,您可以在 Sinatra 应用程序中放置类似的内容,或者在 config.ru 文件中放置 Rack:
Dir.glob(File.dirname(__FILE__) + "/config/environments/#{settings.environment}.rb", &method(:require))
通过一些小的修改,您可以使其加载其他文件位置/组合。 Sinatra 的配置块也同样有效。
【讨论】:
require "config/#{settings.environment}"
事实证明,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
【讨论】:
有一个叫做 Sinatra::ConfigFile,现在位于 Sinatra::Contrib http://www.sinatrarb.com/contrib/config_file.html
里面有很多有用的东西。
【讨论】:
我从monkrb.com改编了我的(反正在RoR中也是yaml)
YAML.load_file(path_of "config/settings.yml")[RACK_ENV]
例如 http://github.com/codepants/yasumi/blob/master/config/settings.yml
【讨论】: