3.5ヶ月ぶりにRuたんが帰ってきた!!
毎年、夏場は恒例なんです。。。
つくったもの
「すぐTL取得制限に引っかかるからTwitter API 1.1はクソ」というサービスです。
「すぐTL取得制限に引っかかるからTwitter API 1.1はクソ」は、
Twitterクライアントを使っているときにTL取得制限に引っかかって、
「あー、すぐTL取得制限に引っかかるからTwitter API 1.1はクソだなぁ」と思った際に
1ボタンで「すぐTL取得制限に引っかかるからTwitter API 1.1はクソ」とツイートできるサービスです。
実際はログイン→ツイートなので2ボタンです。TwitterのOAuthぼボタンもあるので3ボタンです。
とってもクソサービスですね。誰得。僕が使います。
つらみ
サービス自体は見ればわかる通りksサービスなので簡単に作れました。
いつもだったら自分のサーバにポイっと投げてthinあたりで動かしてしまうのですが、
どうせだったらHerokuにデプロイしてみようかなと思いました。
ほら、Herokuにデプロイしました(キリッってかっこいいじゃん。
Heroku自体、サイトが厨二心くすぐるダークサイドな感じだし。
しかしそれがつらみどっとこむだった。
ここは流れで
つくったアプリのディレクトリでコマンド叩く。
$ heroku apps:create アプリ名 Creating アプリ名... done, stack is cedar http://アプリ名.herokuapp.com/ | git@heroku.com:アプリ名.git
と、サイトのURLとgitのリポジトリが作成されるので、
つくったアプリをリポジトリにpushすればHerokuでのデプロイは完了です。
なにこれチョー簡単じゃん!!!
とおもった。
問題点1:データベース
SQLite3使ってたんだけどHerokuではダメだった。
Herokuの標準データベースはPostgreらしい。
でも僕、Postgre使ったこと無いよ……こわい><
ので、無料のアドオンでMySQLを使う。
$ heroku addons:add cleardb:ignite $ heroku config === sugutl Config Vars CLEARDB_DATABASE_URL: mysql://〜〜〜〜〜〜
このmysql://〜〜〜〜に接続するように設定すればいいらしい。
ちょー余裕じゃん!!
動かなかった。
問題点2:Sequel
Sequelのモデルクラス内でテーブルが定義されてなかったら、
カラムを作成するようにしてたんだけど、テーブルが作れなくてなんか死んでる。
もしかしたら定義の仕方がよくないのかもしれない。
マイグレーションにすればかっこいい感じで問題解決できそうなので、
Sequelのマイグレーションファイルを作る。
といっても自分で書くのは面倒すぎるので今のローカルのデータベースから生成。
$ bundle exec sequel -d "sqlite://db/sugu.sqlite3" > migrate/001_create_table.rb
できた。これをHerokuで実行する。
$ bundle exec sequel -m migrate "mysql://〜〜〜〜" -E
コケないで通った!! 頑張ったよ!
頑張れてなかった
問題点3:gem 'mysql'
ログを見るとTimestampなカラムにデータを入れるときに
parseメソッドが「こんなのパースできないよー」とエラー吐いて落ちてる。
カラムの定義がおかしいのかとか、Modelが間違ってるのかとか、
変なデータを投入させてるんじゃないかとか悩んだけど、意味不明。。。
試しにローカルでMySQL立ててつないでみたら同じエラーが出たので、
どうもSQLite3とMySQLでなんか違う感なの? いや、でもそんなところで引っかかるはずは……
そしていろいろ調べていたら、どうもMySQLを扱うgemは
mysqlではなくmysql2を使ったほうがいいっぽい?
そしてgemをmysql2に変えてみたら動いた。なんだったんだ。。。。ここまで苦戦するならPostgresのままでよかった感ある。
結果として
開発よりデプロイのほうが大変だった。
まぁ慣れない環境だからってのはあるんですが。。。
でも、使い慣れてしまえばHerokuさんすごいなー。
全部自分のサーバで動かしてるとリソースがガリガリ食われてしまうので
なんかクソサービスを作って動かすのに抵抗あるんですよね。
この他人にゴミを押し付けてる感じがサイコーですね!111
いつかまともなもの動かしてあげよう。
いや、でもまともなものなら自分のサーバで(ry