我正在用 ruby 构建一个 cli 工具,我需要从不同的来源获取配置:环境变量、点文件、参数或硬编码值。(有优先系统)
在 node.js 中,我会使用nconf.js来执行此操作。
ruby 中是否有一些配置 gem 可以做这样的事情?
我正在用 ruby 构建一个 cli 工具,我需要从不同的来源获取配置:环境变量、点文件、参数或硬编码值。(有优先系统)
在 node.js 中,我会使用nconf.js来执行此操作。
ruby 中是否有一些配置 gem 可以做这样的事情?
实际答案是这样的:
更新时间:2020-02-26
https://github.com/infochimps-labs/configliere
引用作者的话:
愿与五家同坐。从(由您选择)进行设置:
- 来自常量的预定义默认值
- 简单的配置文件
- 环境变量
- 命令行选项和 git 风格的命令运行器
- Ruby 块(在所有其他选项都到位时调用)
简单地说。就像 nconf 一样。
require 'configliere'
Settings.use :commandline
Settings({
:dest_time => '11-05-1955',
:fluxcapacitor => {
:speed => 88,
},
:delorean => {
:power_source => 'plutonium',
:roads_needed => true,
},
:username => 'marty',
:password => '',
})
#set a value to possibly also come from env
Settings.define :dest_time, :env_var => 'DEST_TIME'
Settings.read "#{__dir__}/config.yml"
Settings.read "#{Dir.pwd()}/config.yml"
Settings.resolve!
旧答案:
https://github.com/rubyconfig/config#working-with-environment-variables
它不执行 argv,但它允许您对各种 yaml 文件进行分层,然后像 nconf 一样使用 ENV 覆盖。