【Ruby】Sinatraで作ったアプリをHerokuで公開しました
今の人気ワードをWikipediaの記事を表示させる、名付けてToday’s Pedia。
http://todayspedia.herokuapp.com
CSS全然書いてないから真っ白ですけどね。
○フレームワークの選定
Railsもいずれしっかり扱えるようになりたいのですけど、お作法が多すぎてなかなか覚えることができず。。。
DBを使わない簡単なアプリであれば、Sinatraのほうが楽だと思ってこちらを選びました。
○デプロイ先の選定
デプロイ先はAWSのElasticBeanstalkも候補だったのですが、フリーで使える方ということでHerokuにしました。
ただ、HerokuにRubyのアプリをデプロイする場合、色々と制限というかハマりポイントが結構あるので、
いちいちそれに時間取られるくらいだったらAWSでも良かったかなと今は思っています。
・DBがMySQL限定
・StackCedarってなんだっけ
・condig.ruが必要
○使ったAPI
WebAPIを使ってアプリを作ってみたかったので、
・SimpleAPIのWikipediaAPI
・trackwordの人気検索ワードAPI
を組み合わせ。そんな複雑なことはやってません。
○ハマったところなど
ハマったのはXMLで取得したデータの扱い方でした。
大体、APIはXMLでデータを返すので、それをHash.from_xmlで受けてるんですが、Hashに入ってるデータの構造がよくわからず苦労しました。
結局、ハッシュの中にArrayがValueになっているハッシュがネストしてるって構造だったのですけど。
思い返せばなんだ単純じゃないかって感じなんですが、作ってる当時は何が起こってるかさっぱりわからず、
至るとことでputsして値を確認してたりしました・・・。
なんでこんなんでハマってるのかなーと自己嫌悪に陥ること数時間・・・orz
○その他
各メソッドの動作確認のために、簡単ですがSpecを書くようにしてみました(今まで全然書いてなかった)。
Webデベロッパな方々にとっては当然なのでしょうけど。
いちいちアプリを起動して動作させるのではなく、機能ごとにSpecで動作検証していくのは時間的にもAPIのリリース元様に対しても優しいですね。
今回はまだNullチェックとかハッシュのキーの存在チェックくらいしかSpecで書けなかったので、上に書いたような実際にXMLを取得した時に構造がわからなくてハマる、なんてことになりましたけど。
公開はしたものの、ちょくちょくサーバーエラーが出ます。
原因は・・・まだわかってません、スミマセンm(_ _)m
SimpleAPI側が空のデータを返すこともあるみたいなので、もし「API returns nil」と表示された場合はリロードしてみるとうまく表示されるかもしれませんよ(投げやり)
では。