worldするRubyとNode.jsが使えるPaaSという触れ込みの「Duostack」をRubyのSinatraで使ってみた。worldするをベースにしていて、この記事の中に出てくるherokuコマンドのところをduostackコマンドに置き換えるだけでだいたい使えるようになってしまうくらいのレベル。今回の完成品はこちら。ちなみに、DuostackをNode.jsで使うチュートリアル記事はこちらが詳しくてわかりやすかった。聞きかじったDuostackの前知識Twitterやブログなどで、Duostackを使う以前から聞きかじっていた情報が以下。(Herokuは1.8.6/1.8.7/1.9.2が利用可能)Duostackでも使用できるRubyのバージョンは1.8.7と1.9.2で選択可能でした。今回のチュートリアル記事で、実際に試してみたら4つとも3つだけその通りだった。Rubyのバージョンは1.9.2も利用可能でした。初出時に間違った情報を載せてしまいました、ごめんなさい。前提としては以下の2つ。Duostackにサインアップ済みであることGitが利用できる環境であること今回利用するRuby環境とGem。試したのはMacでRVMを利用している。createコマンドでアプリを作成するところでエラーになってしまってその先に進めなかった。自分はCygwinを使ってないので、Cygwin環境での利用は試してない。ちなみに、HerokuではWindowsのmsysGitやコマンドプロンプトでも普通に利用できる。worldするまでの手順となる。BundlerとDuostackが必要なので、それらをインストールする。duostackDuostack用のフォルダ(gitリポジトリ)を作成Duostack用のフォルダを作って、gitリポジトリを作成する。Duostackを使う上でGitは必須になる。init次に、duostackコマンドを使ってDuostackアプリを作成する。最後のアプリ名は任意で、好きな名前を付けられる。アクセスできるようになる。duostack-hello-world初回は、Duostackサインアップ時に登録したメールアドレスとパスワードを聞かれるので入力する。入力したらエラーが出た。して、再度Duostackアプリの作成を試みる。remoteにduostackが自動で追加される。configured」と表示される。Duostackサイト上のアプリ管理画面にも生成したアプリ名が出現する。各種Rubyファイルを作成Duostack上にアプリのスペースを確保したので、そこにアップするSinatraアプリのコードを書く。最終的に、以下のようにプロジェクトフォルダ直下に4つのファイルを作成する。Gemfileまず、Gemfileファイルを作成する。Sinatraが必要なので、その指定を記述する。./vendor/bundlevendor/bundleフォルダにgemがインストールされて、Gemfile.lockが生成される。config.ru次に、Rack用のconfig.ruファイルを作成する。ここで全部requireするようにしておく。app.rbそしてアプリの本体となる、Sinatraの処理を記述するapp.rbファイルを作成する。worldと表示する処理だけを記述。.gitignore最後に、gitリポジトリに含めなくて良いファイルを指定する.gitignoreファイルを作っておく。中身は例えば以下のような感じ。このファイルは必須ではないので無くてもOK.DS_Store/.bundle/vendorBundler関連のファイルはgitリポジトリに含めなくて良いので、それを指定しておく。上記で作成したデプロイ予定のSinatraアプリを、まずはローカルでプレビューしてみる。ローカルでアプリを起動するには、Bundler経由でrackupコマンドを実行する。world!」と表示されれば準備オッケー。Ctrl+CでローカルプレビューのSinatraアプリを終了しておく。デプロイそれではDuostack上に作ったアプリのhttp://duohelloworld.duostack.net/に向けてデプロイする。今まで作ったファイルを全部、gitリポジトリにコミットする。pushでデプロイする。master初回はRSA鍵がらみでこのまま実行しておk?的なことを聞かれる。オッケーなのでyesと答えておく。(yes/no)?あとはデプロイが完了するのを待つだけ。DBで使うMySQL用gemをインストールしているのがみえるので、デフォルトのDBは噂通りMySQLっぽい。world!」と表示されているはず。これでSinatraアプリのDuostackへのデプロイが完了!ここまでのソースコードの状態をGitHubに置いたので参考までに。GitHub感想ほんとにおそろしいほどHerokuにソックリでビックリする。Herokuを使っている人なら、ほとんど学習コストも無くDuostackを利用できるのではないだろうか。worldしかしてないけど、Herokuと比較した場合、Herokuのほうが高機能・便利な印象を受けた。Duostackは新しくできたばっかりなので今後に期待。以前の記事で触れているAWS障害対策という意味でのHerokuの代替PaaSとしては、Duostackも裏側でAWSを利用しているので対策にならない。AWS以外の障害・バックアップ対策のHeroku代替としては、操作体系がクリソツなのでかなり有力だと思った。worldするhomeルエダップコム。