3

我正在用 ruby​​ 构建一个 cli 工具,我需要从不同的来源获取配置:环境变量、点文件、参数或硬编码值。(有优先系统)

在 node.js 中,我会使用nconf.js来执行此操作。

ruby 中是否有一些配置 gem 可以做这样的事情?

4

1 回答 1

0

实际答案是这样的:

更新时间: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 覆盖。

于 2021-02-25T02:53:28.607 回答