Ruby - 設定(conf,ini etc)ファイル読み込み!
Updated:
Unix 系でも Windows 系でも設定ファイルに以下のような形式のテキストファイルを使用している事が多々あります。 confファイルとか、iniファイルとか、またはそれ以外の拡張子だったりします。 いずれにせよ、テキストファイルです。
[hoge]
foo = /abc/def/ghijklmn
bar = 127.0.0.1
baz = hogehoge
Ruby でこのようなファイルを読み込む場合、以前の自分なら1行ずつ読み込んで、コツコツと解析しながら処理していました。 しかし、このようなファイルを読み込む為の Gem パッケージが公開されているので最近はそれを使用しています。
使用方法
検証確認した Ruby は 1.9.3-p194 です。
1. 設定ファイル作成
以下に注意して設定ファイルを作成します。
- セクション名は “[” と “]” で囲む。
- 各プロパティは1行に「名前」+ “=” +「値」の形式で記述する。
- ”;” や “#” はコメントである。
作成場所は “/home/hoge/work/” ディレクトリで、ファイル名は “test.conf” としています。
# Setting for hoge
[hoge]
foo = /abc/def/ghijklmn
bar = 127.0.0.1
baz = hogehoge
; Setting for fuga
[fuga]
foo = /mnl/kji/hgfedcba
bar = 255.255.255.0
2. Gem パッケージ inifile の検索
試しに、これからインストールする Gem パッケージ inifile が存在するか確認してみました。
$ gem search -r inifile
*** REMOTE GEMS ***
inifile (1.1.0)
zfinifile (1.0.0)
ありました。
3. Gem パッケージ inifile のインストール
Gem パッケージ inifile をインストールします。
$ gem install inifile
Fetching: inifile-1.1.0.gem (100%)
Successfully installed inifile-1.1.0
1 gem installed
Installing ri documentation for inifile-1.1.0...
Installing RDoc documentation for inifile-1.1.0...
4. Gem パッケージ inifile のインストール確認
Gem パッケージ inifile をインストールできているか確認します。
$ gem list inifile
*** LOCAL GEMS ***
inifile (1.1.0)
インストールできています。
5. 動作確認用 Ruby スクリプト作成
動作確認用スクリプトを作成します。 オブジェクト指向にしてみました。 作成場所は “/home/hoge/work/” ディレクトリで、ファイル名は “test_ini.rb” としています。
require 'inifile'
class TestIni
def initialize
@ini = IniFile.load("/home/hoge/work/test.conf")
end
def display( section, name )
val = @ini[section][name]
puts "[#{section}] #{name} = #{val}"
end
end
ini = TestIni.new
ini.display( 'hoge', 'foo' )
ini.display( 'hoge', 'bar' )
ini.display( 'hoge', 'baz' )
ini.display( 'fuga', 'foo' )
ini.display( 'fuga', 'bar' )
ini.display( 'fuga', 'baz' ) # 存在しない値のチェック用
6. 動作確認用 Ruby スクリプト実行
作成した Ruby スクリプトを実行してみます。
$ ruby test_inifile.rb
[hoge] foo = /abc/def/ghijklmn
[hoge] bar = 127.0.0.1
[hoge] baz = hogehoge
[fuga] foo = /mnl/kji/hgfedcba
[fuga] bar = 255.255.255.0
[fuga] baz =
正常に取得できました。 存在しない値もエラーにならず空文字で返ってきました。 空白行が存在しても問題ありませんでした。 コメント行も正常に認識しているようです。
これは、非常に便利な Gem パッケージで当方はよく使用しています。 (主にデータベース接続情報を記載したりしています)
以上。
Comments