RubyでYAMLを扱う方法を知った
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>}]