Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 具有多环境配置的Sinatra_Ruby_Sinatra_Environments - Fatal编程技术网

Ruby 具有多环境配置的Sinatra

Ruby 具有多环境配置的Sinatra,ruby,sinatra,environments,Ruby,Sinatra,Environments,在与Sinatra合作几周后,我决定在一个临时环境中部署我的应用程序。在回顾和环顾四周之后,我没有找到一种方法来为每个环境设置一个配置文件,因此,我没有这样做: 需要'sinatra/base' 需要“sinatra/自定义记录器” 类MyApp

在与Sinatra合作几周后,我决定在一个临时环境中部署我的应用程序。在回顾和环顾四周之后,我没有找到一种方法来为每个环境设置一个配置文件,因此,我没有这样做:

需要'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文件。