Rails 以外で Settingslogic を使う
最近は Rails で環境毎に変更する必要がある独自設定の管理に Settingslogic を使っています。
binarylogic/settingslogic
https://github.com/binarylogic/settingslogic
使い方はこの辺が分かりやすいです。
Rails - settingslogicで定数を管理する - Qiita [キータ]
http://qiita.com/torshinor/items/9d81c80dafcc4c73f026
で、Rails と関係ない Ruby のバッチプログラムを書く時にも Settingslogic が使えたら便利だな、と思ったので調べてみました。
環境は Ruby 2.0.0p247 です。
インストール
取りあえずお試しなので bundler は使わず普通に gem でインストールしました。
% gem install settingslogic --no-rdoc --no-ri
使ってみる
まずはディレクトリを作成します。
% mkdir -p ~/src/ruby/2.0/settingslogic/config % cd ~/src/ruby/2.0/settingslogic
設定管理用のクラスを作成します。
環境切り替え用の環境変数の名前は取りあえず「BATCH_ENV」としておきました。
- settings.rb
require 'settingslogic' class Settings < Settingslogic source File.expand_path("../config/application.yml", __FILE__) namespace ENV['BATCH_ENV'] end
次に config ディレクトリ以下に application.yml ファイルを作成します。
- config/application.yml
defaults: &defaults max_price: 9999 development: <<: *defaults min_price: 1 production: <<: *defaults max_price: 100000 min_price: 100
このファイルが設定ファイルになります。
取りあえずここでは環境に関係ないデフォルト値を定義する defaults 以外に、development と production 環境を定義しました。
いよいよバッチ本体です。
目的は取りあえず Settingslogic が使えるか試す事なので、ここでは以下のように設定値を出力するだけの内容にしました。
- example_batch.rb
require File.expand_path("../settings.rb", __FILE__) puts Settings.max_price puts Settings.min_price
実行してみます。
まずは development 環境を指定。
% BATCH_ENV=development ruby example_batch.rb 9999 1
問題なく値を取得できているみたいです。
それでは環境を production に切り替えてみます。
% BATCH_ENV=production ruby example_batch.rb 100000 100
今度は production 環境として定義した値が取得できました。
問題なく使えるようですね。
これでバッチプログラム開発時も手軽に環境毎の設定を持たせる事が出来そうです。