Heroku を使い倒す(バックアップ編)

» 1時間でツイッターサービスを作ろう! | KRAY Inc

のおかげもあり、Heroku がブレイクしそうだ。

つくる社でも Libron とその姉妹サービスの Libreq を Hreoku で動かしています。個人でも エンドレス・スピッツ などいくつかのサービスを Heroku に乗せており、ノウハウも少しずつ溜まってきたので、自分のメモがわりにも少しずつ紹介していこうと思います。

Heroku には Bundles という便利なバックアップの仕組みが用意されており、これを使えばソースコードとデータベースの中身をまとめて一個のファイルに固めておくことができます。

使い方は Heroku らしく非常に簡単。Add-ons から Bundle を選択し、自分のアプリで有効にしたあとは、

heroku bundles:capture --app myapp

で bundle をひとつ heroku 上に作成します。

heroku bundles:download --app myapp

を実行すれば、できた bundle をローカルマシンにダウンロードできます。

ただし、Bundle は無料プランでは2個以上作成できない(月$20の有料プランだと無制限)ので、次のバックアップをとるには、

heroku bundles:destroy <bundle名>

で heroku 上から削除してから、新しい bundle を作成、ダウンロードしなければなりません。

つまり、作成・ダウンロード・サーバーから削除、を繰り返せば無料プランでも充分使えるということです。

そこでこの一連のタスクをスクリプトにしようと思ったら、すでに rake タスクを作っている方がいました。

» Scripting Heroku Backups : b#

を参考に、アプリ名がハードコードされていた部分を修正したものがこちら↓

heroku 上のアプリ名が myapp とすると、ローカルでのアプリのフォルダ名もそれにあわせてあると思うので、

app_name =  RAILS_ROOT.split('/').last

で、アプリのパスからアプリ名を抽出しています。

これを各 rails アプリケーションの lib/tasks 以下に myapp.rake といったファイル名で保存、backups というフォルダを RAILS_ROOT 直下に作ったあと、

rake myapp:backup

を実行すれば、backups 以下にバックアップファイルをダウンロードできます。

backups 以下は git レポジトリ管理下に入れない方がいいと思うので、.gitignore に

backups/*

を追加。

あとはローカルマシンが Mac であれば cron に

30 0 * * * cd /Users/myname/rails/myapp && /usr/bin/rake myapp:backup

などとバックアップタスクを登録しておけば、自動でバックアップを取ることができて、快適な Heroku ライフを送ることができるようになります。

デザイナーのための Ruby on Rails + Windows 環境構築ガイド

久々に Windows 上に Ruby on Rails(Ruby 1.8.7 + Rails 2.3.8) の環境を構築したのでその手順をまとめておきます。

僕はプログラマーで環境は Mac ですが、Windows 環境でおもに View だけを編集できるミニマムな環境(DB は sqlite、開発用のツールは特に入れない)を作る場合の参考に、ということで「デザイナーのための」とうたっています。

だいぶ色あせてしまった Rails + Windows 環境構築の記憶で、Instant Rails 一発でOK、と最初は思っていたのですが、実際にやってみたら、ruby を始め gem や rails など軒並みバージョンが古く、結局いちいち入れ直すのが面倒で、手順がかえって面倒になり使えないという結論に達しました。

改めて調べなおしたら、ruby 始め rubygems など、現時点(2010/7/16)で割と最新の各種必要なツールをインストールしてくれる

» Rumix – Ruby Starter Package with Installer

という便利なパッケージがあったので、これをベースに構築していきます。

Rumix のインストール

Rumix のページに行き、ダウンロード > Rumix 1.00(通常版)とたどり、ファイルをダウンロード、解凍します。

解凍したフォルダの中の rumix_install.exe を実行してインストールします。

「外部ライブラリのインストール先」は「システムフォルダ」など選択肢の部分はすべてデフォルトのままでいいと思います。

gem のアップデート

スタート > プログラム > Rumix > NYACUS を開いて、

gem -v

で gem のバージョンを確認します。2010/7/16 時点で 1.3.5 だったので、

gem update --system

で最新版に更新します。

rails のインストール

NYACUS のプロンプト画面より

gem install rails --no-rdoc --no-ri

を実行します。rdoc と ri などのマニュアル類はインストールに時間がかかる上、不要だと思うので、–no-rdoc –no-ri というオプションを追加しています。

sqlite のインストール

DB は sqlite で充分だと思います。

» SQLite Download Page

の Precompiled Binaries for Windows 以下の sqlitedll-3_6_23_1.zip をダウンロード、解凍します。
解凍したフォルダ中の sqlite3.dll と sqlite3.def を c:\rumix\ruby\bin に移動します。

次に、プロンプト画面にて

gem install sqlite3-ruby

を実行し、sqlite との接続に必要な gem ライブラリをインストールします。

サンプルアプリを作成して Rails の動作確認

以上で、必要な環境を構築しました。実際に Rails のサンプルアプリを作成して動作確認をおこないます。
プロンプト画面より、以下を順次実行します。括弧内はコメントです。

cd (ホームディレクトリに移動)
mkdir rails
cd rails
rails test (test という Rails アプリを作成)
cd test
ruby script/generate scaffold Customer name:string (name というフィールドをひとつだけ持った Customer というモデルをベースにテンプレートの画面を作成)
rake db:migrate (DB にテーブルを作成)
ruby script/server (アプリケーションサーバーを起動)

ブラウザより、http://localhost:3000/customers にアクセスし、New customer で新しいレコードを追加したり、そのあと編集・削除などの操作ができれば成功です。

不備があればコメントなどでご指摘ください。

これからRailsを学ぼう or Railsで食っていこうというプログラマのための3冊

つくる社のウェブサービスは Ruby on Rails を使って開発しています。

その Ruby on Rails をこれから学ぼうというプログラマのために、図書館検索サイト「カーリル」のレシピ機能を使って、

» これからRailsを学ぼう or Railsで食っていこうというプログラマに贈る3冊

を作ってみました。

ちなみにつくる社のサービスLibronは、カーリルが提供している図書館APIを利用しています。全国4400の図書館の貸出状況を検索できたり、上記のレシピ機能などで自分にぴったりの本と出会える、本好きにはたまらないサービスです。

このページの先頭へ