Globalっていうライブラリを使ってみた
例えば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っていうライブラリがあるらしい
てなわけで使ってみた
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
-
Gemfileは省略 ↩