以下ほとんど愚痴なので、結論から書いとこう。手段の追求はあんまり生産的じゃないから、ほどほどで切り上げてもともとやりたかった目的を思い出せ! 本日の自分向けの教訓。
具体的にうちが良くないと思ったのは以下のようなプロセス。
- よーし、これをやるぞー!と意気込む
- 途中のインストールとか設定とかでハマる
- そこをまず解決しよう
- 解決できない
- さらに必死になって解決に取り組む
- 解決できない
- さらにディープに
- おーい、どこいっちゃうのー
今日のうちはまさにコレだった。あぁ、もしやこれが手段の目的化というやつか!だいたい、ハマってる問題ってのは妥協点があるもので、ここまでする必要がなかったりすることが多い。でもあきらめたくない。そうするとこんな感じになりがち。
問題がすぐには解決できそうもなかったりして、今はあきらめざるを得ないときもある。そうすると、あれ、もっと別のことするつもりだったのになー、何してたんだろう、って終わってから思ってしまう。これ、非常に悲しい。
手段を追求しすぎてしまったようなときに取るべき態度はいくつかありそうだ。一つは、もう何もかも捨てて問題に没頭。手段の目的化なんて言われても痛くない、というような態度を取ること。もう一つは、そこそこのところで切り上げて、本筋にもどる。そして、まぁ、頭冷やして、覚えてたらまた取り組めば良いんじゃない?そんな態度をとる。
あぁ、でもあきらめたく無いんだよなぁ。妥協するほうがうまくいきそうなのはわかってても。ここまできたらどうにか解決したい。あきらめたくない。え、あぁ、ある程度妥協しようという話だった。
結局、「ほどほど」っていうのをどこに置くのかが大事なのかもしれないな。
おまけ(本日ハマった問題について)
PlaggerのPublish::Gmailではメールを送信するためのSMTP鯖にGmailのものを使えるらしい。設定例はこちらの記事を参照。
で、GmailのSMTP鯖はTLS経由なので、この機能をつかうには別のモジュールが必要になる。それが、Net::SMTP::TLS。で、このモジュールの依存で入るIO::Socket::SSLがうちの環境*1でテストが通らない。
バグ報告を見ると、同様のエラーが発生しているようだ。ググってみても、まぁ、似たような感じで、決定的な解決策はみつからない。いろんなバージョンのOpenSSLのライブラリと組み合わせて*2インストールしてみたりするんだが、いっこうに改善せず。おなじエラーメッセージが繰り返される。
実は、force installするとPublish::Gmailに関しては動くんだよね。でもなぜテストが失敗するのが理解できない。
別の環境のUbuntuだと普通にインストールされたりする。やっぱMac OS Xだからかと思ってみたりするも、OS Xでインストールできてそうな事例もググると少し見つかる。
ソースコードに食いついてみても、どこに問題があるのやらさっぱり。依存関係が深い、OpenSSL理解していない、ソケットプログラミングわかんない。しかし、あきらめきれん。(数行上にもどる)
こんな感じで解決できなかったですよ。