herokuコトハジメ

けっこう前のエントリ忘れをポスト。
heroku環境再構築時に自分のエントリを見ようと思って気付いた。
おかしいなぁ。ポストしたはずたっだんやけどなぁ。

1.herokuとgitのインストール

herokuをgem経由でインストール
$ gem install heroku
gitも入れてなかったのでインストール(なんとなくソースから入れてしまったがport経由でもよかったカモ?)
$ wget http://kernel.org/pub/software/scm/git/git-1.7.1.tar.gz
$ tar xvzf git-1.7.1.tar.gz
$ ./configure
$ make prefix=/usr/local/ all
$ sudo make prefix=/usr/local/ install


2.railsプロジェクト作成,herokuへのPush

プロジェクト作成してpush。sshの公開鍵作ってなくて途中で怒られるので作成。
$ rails tjazz
$ cd tjazz
$ git init
$ git add .
$ git commit -m "new app"
$ git status
$ sudo gem install heroku
$ heroku create
$ ssh -keygen
$ heroku create
$ git push heroku master
$ heroku open


3.過去のコード移行

過去のコードのカレントに入って以下コピー
$ cp -r app ../tjazz
$ cp -r cron/ ../tjazz
$ cp -r public ../tjazz
$ cp -r db ../tjazz

$ git add .
$ git push heroku master


4.アプリ名の変更

$ git remote rm heroku
$ git remote add heroku git@heroku.com:tjazz.git
$ git push heroku masterEverything up-to-date
$ heroku open
$ vi config/database.yml


5.Sqlite3のインストールとマイグレーション

今まではMySQLでやってたんだけど、herokuがSqliteしかサポートしてないので恐る恐るsqlite3に乗り換えてみる。sqliteとか使ったことないし恐々。

$ gem install sqlite3-ruby
$ rake db:migrate
$ git add .
$ git commit -m '3rd'
$ git push heroku master


6.DBのpush

ローカルのDBをプッシュしてみる
$ heroku db:push
→エラー、足らんといわれているパッケージをインストールする。
$ sudo gem install taps
$ heroku db:push
→OK、サイトを確認してみるとデータが投入されているのが確認できる


7.gemのインストール

プロジェクト直下に'.gems'ってファイルを作成。必要なパッケージを書いて、あとはpushするだけで勝手にインストールされるというラクチン仕様。
$ vi .gems
twitter --version 0.9.5
$ git add .gems
$ git commit -m 'gem twitter'
$ git push heroku

8.cron設定

事前にWebサイト上でcronオプションをonにしておく必要あり。
無料だと1回/1日しか動作させれない。
lib/tasks/cron.rakeというファイルを作成し、以下の感じでにスクリプトを書く。
task :cron => :environment do
[ここにスクリプト書く]
end

動作確認
$ heroku rake cron
実行状況確認
$ heroku logs:cron


99.(番外編)NetWalkerにも開発環境としてクローンを作っておく

NetWalkerで開発環境つくっておけば、いちいち重いMacBook持ち歩かなくて済むので、やっておこう、と。
ruby(1.8.7)とgem(1.3.1)はもともと入ってた。
(以下NetWalker上のログ)
$ gem install heroku

$ gem install rails

→正確に何入れたか忘れてしまったんだが、たぶん必要最低限なこのあたりぐらいだったはず。

$ git clone git@heroku.com:tjazz.git
→エラー


と、ここでエラーが出てて数日放置してあったんだが、kshimo69を家まで車で送ってあげる車中でお礼(?)ということで直してくれた。


・上記コマンドは単純に書き方が違ったorz
・gemのパスが通ってなかった
sshの公開鍵作ってなかった

自分は運転していた上に端末ログの古いのが消えてたんでヒストリから一部推測しつつ。
kshimo69、もし間違えてたら教えて。感謝感謝。

$ source ~/.bashrc gemインストール先のロケーション設定漏れ。なので、パスの設定。
$ git clone -o heroku git@heroku.com:tjazz.git
sshのキーがないと怒られるのでkeyを登録する。

$ heroku keys:add
→パッケージがないと怒られる。最初にheroku入れるときに--includedependenciesしなかったからパッケージが足らんかったのかな?
$ sudo apt-get install libopenssl-ruby
入れてからリベンジ。
$ heroku keys:add
$ git clone -o heroku git@heroku.com:tjazz.git

[参考サイト]
色々見たけど、本家サイトのDocが充実してるからごちゃごちゃググって混乱するよりは、そちらをじっくり読むのが正解っぽい。
http://d.hatena.ne.jp/download_takeshi/20081222/1229965175
http://kuranuki.sonicgarden.jp/2009/05/rubypaasherokurails.html
http://github.com/kshimo69/dotfiles/blob/master/dot_zshrc