例えばRailsとかだったりだと以下のようにconfig/database.ymlとかがあったりする

default: &default
  adapter: sqlite3
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
  database: storage/development.sqlite3

RAILS_ENVの値によって使うデータベースとかを切り替えたりとかそういうのはActiveRecordとかで勝手にやってくれると思うんだが、こういうような設定ファイルみたいなのを非Rails環境でも使えないかと調べたらGlobalっていうライブラリがあるらしい

てなわけで使ってみた

1

config/settings.yml

default:
  name: "A"

dev:
  name: "DEV"

main.rb

require "bundler/setup"
Bundler.require

Global.configure do |config|
  config.backend :filesystem, path: "config", environment: ENV["ENV"] || "dev"
end

pp Global.settings

# OUTPUT
# {"name"=>"DEV"}

というように==Global.[pathで指定したディレクトリにある拡張子を抜いたファイル名]でアクセスできるようになる。またenvironment値によってRailsのようにデータベース接続情報を切り替えたりするようなこともできる。上記だとENVを指定しなければがdevなのでsettings.ymlのdev項目が使用されることになるので出力は上記の通りになる

というようにこういう設定をenvironment値によって切り替えるみたいな仕組みちょっと使いたいなって思う時には使えるのかもね

https://github.com/railsware/global


  1. Gemfileは省略