I need to load configuration from yaml file

Rubyって、標準ライブラリでyamlを扱えるらしい。というメモを書くだけの簡単なお仕事。なぜ必要だったかというと、Google APIの設定ファイルがyamlだったから、というお話。

Wrote Octopress popular posts plugin but it needs refactoring

OctopressのプラグインにはPopular Posts Pluginがあるけれど、このプラグインはGoogleのpage rankに基づいて人気具合が算出されるらしい。このブログのように、ページランク0の弱小ブログにとっては、意味がない。ということで、Google Analytics APIから取得できるPVを使って、人気具合を算出するプラグインを書いた。

GitHubに上げようと思ったけれど、設定値がべた書き過ぎて、とてもとてもgit push出来なすぎだった。設定値は~/.google-api.yamlにあるはずなので、まずはyamlファイルの取扱方法を知らなくてはいけない。

Load yaml file

知りたかったのは、このやり方。Stack Overflowの質問に書いてあった。

require 'yaml'
hoge_config = YAML.load_file('hoge.yml')

Load yaml string

他にも、yaml文字列からハッシュとか配列に変換したりできるそうで。以下は、プログラマーのための YAML 入門 (中級編)に記載のコードから。

## YAML ドキュメント
str = <<END
- name: Shiina
birth: 1998-01-01
age: 6
favorite:
- Thomas
- Pokemon
- name: Sumire
smoker: false
birth: 2000-02-02
age: 4
END
## オブジェクトに変換する
require 'yaml'
require 'pp'
yaml = YAML.load(str)
pp yaml
- name: Shiina
birth: 1998-01-01
age: 6
favorite:
- Thomas
- Pokemon
- name: Sumire
smoker: false
birth: 2000-02-02
age: 4
END
## オブジェクトに変換する
require 'yaml'
require 'pp'
yaml = YAML.load(str)
pp yaml
実行結果
[{"name"=>"Shiina",
"age"=>6,
"birth"=>#<Date: 4901629/2,0,2299161>,
"favorite"=>["Thomas", "Pokemon"]},
{"name"=>"Sumire",
"smoker"=>false,
"age"=>4,
"birth"=>#<Date: 4903153/2,0,2299161>}]

Reference