Ruby 具有多环境配置的Sinatra
在与Sinatra合作几周后,我决定在一个临时环境中部署我的应用程序。在回顾和环顾四周之后,我没有找到一种方法来为每个环境设置一个配置文件,因此,我没有这样做:Ruby 具有多环境配置的Sinatra,ruby,sinatra,environments,Ruby,Sinatra,Environments,在与Sinatra合作几周后,我决定在一个临时环境中部署我的应用程序。在回顾和环顾四周之后,我没有找到一种方法来为每个环境设置一个配置文件,因此,我没有这样做: 需要'sinatra/base' 需要“sinatra/自定义记录器” 类MyApp
需要'sinatra/base'
需要“sinatra/自定义记录器”
类MyApp
我想要更干净的东西,比如:
需要'sinatra/base'
需要“环境配置”
类MyApp
在该类/模块中,每个环境可以有一个文件,也可以有一个具有所有不同配置的文件
那么,我的问题是,是否有一种方法可以使Sinatra应用程序的配置与端点的定义不在同一位置?
事先谢谢。试试sinatra/config,您可以将所有配置设置存储在一个文件中,并提供特定的环境配置
require "sinatra"
require "sinatra/contrib"
config_file '../config/config.yml'
get "/"
settings.bar
end
#config.yml
development:
foo: development
bar: bar
test:
foo: test
bar: bar
production:
foo: production
bar: bar
我终于想出了一个使用self.included类方法的解决方案:
#config.rb
需要“sinatra/自定义记录器”
模块配置
包括def自身(基本klass)
base_klass.extend(类方法)
基本帮助(Sinatra::CustomLogger)
基本类评估
配置:开发吗
logger=MyCustomLogger.new(
参数1,
参数2,
参数3,
paramx
)
设置:记录器,记录器
结束
配置:生产
#其他东西
结束
结束
结束
模块分类方法;结束
结束
然后
require_相对'config'
类MyApp
Sinatra的Sinatra\u contrib
包括config\u文件
扩展名,该扩展名允许您在一定程度上解耦此功能,尽管它不允许您执行条件要求
等操作。感谢您的回复。ConfigFile允许您将配置导出到yaml文件,但不在其中添加ruby代码。我将改变我的问题,以显示哪一个是我的问题。谢谢你的回答。然而,我正在寻找一个放置ruby代码的地方,就像Rails在development.rb文件中使用的那样,而不是只允许您使用键值配置的yaml文件。