[自在]RailsでTwitterのOmniAuth認証がうまくいかなかった原因を解明

「パーフェクト Ruby on Rails」を独習していて、途中で詰まっていた。

3章のp176で、Twitterの認証画面に遷移するはずなのだが、どうしてもそうならない。
「401 unauthorized」というエラー画面が表示されて、先に進めない。

こういうときはググってみると大抵解決するのだが、、、
「おう、そうか、Twitterアプリの登録でコールバックを指定しておかないとエラーになるのか。。。」
しかし、コールバックも登録済なんだけどなぁ。。。

「OminiAuth」と「Twitter」と「Rails」で同じようなエラーを探すが解決しない。

う〜ん。

パーフェクト Ruby on Rails
パーフェクト Ruby on Rails

posted with amazlet at 14.06.15
すがわら まさのり 前島 真一 近藤 宇智朗 橋立 友宏
技術評論社
売り上げランキング: 775

しかし、写経ばかりで内容をよく理解できていないことが最大の問題だな。
と思い直して、パーフェクトシリーズの「パーフェクトRuby」も買ってくる。
「すがわら」さんが言っていたのだが、そもそも「パーフェクトRuby」を書いているときに、書き切れなかった分を「パーフェクトRuby on Rails」で出版することになったと。
「たのしいRuby」ぐらいは昔に読んだことがあるのだが、Rubyをきっちり学んだ覚えはないなと反省しつつ、「パーフェクトRuby」をめくると、やはりためになる情報満載です。
これはやっぱり熟読する価値あるなぁと思いながら、読んでいたら、
「おぉ!これがエラーの原因だったかぁ!」
と気づいた。

原因はYAMLの書き方を知らなかったことだった。
「コード行頭のインデントは、プログラマーがコードを読みやすくするためのもの」
という思い込みが合って、YAMLなのにインデントを適当に書いていたのが問題だったのだ。YAMLのインデントはタブが使えず、半角スペース2文字でなければならなかったのだ。知らんかった。。。道理で。
具体的にはp173の”secret.yml”ファイルの書き方を間違えていたのだ。印刷上の見た目が同じなのだが、これではYAMLファイルとして機能していなかったのだ。

パーフェクトRuby (PERFECT SERIES 6)
Rubyサポーターズ すがわら まさのり 寺田 玄太郎 三村 益隆 近藤 宇智朗 橋立 友宏 関口 亮一
技術評論社
売り上げランキング: 10,972

というわけで、Twitter認証もうまく通り、「パーフェクトRuby on Rails」のチュートリアルを順調に進んでいるところ。
「パーフェクトRuby」と「パーフェクトRuby on Rails」は2冊で1冊と思った方がいいかもなと思った次第です。