dotCloudでRails3.2.9とpostgresqlを動かす

therubyracerがアレすぎですが、herokuよりはやりやすかった。sshできるのが大きいです。
gemfileにtwitter-bootstrapとかless-railsとか積んでると面倒かも。

自分のPCで

> pybrew use Python-2.7.3
> pip install dotcloud
> cd APP_ROOT
> dotcloud create [appname]
> vi dotcloud.yml
www:
  type: ruby
db:
  type: postgresql
> git add .
> git ci -m 'add yml'

dotcloudにアプリをアップ

> dotcloud push

dotcloudにデータベースを作成

> dotcloud run db
# createdb [dbname]
# exit

アップされたrailsアプリを動くように色々作業

> dotcloud run www
$ cd current
$ rm -rf vendor/bundle # 自分のPCではvendor/bundleにbundle installしているので削除
$ rm .bundle # 設定も削除
$ vim Gemfile
gem 'therubyracer', '0.11.0beta8', :platforms => :ruby # therubyracerが0.11.0beta8じゃないとbundle installが失敗する
$ bundle install

データベースの設定を記述

$ cat ../environment.yml
$ vi config/database.yml # productionを編集

具体的には、

<% 
require 'json'
env = JSON.parse(File.read('/home/dotcloud/environment.json'))
%>
production:
  adapter: postgresql
  encoding: unicode
  database: [dbname]
  pool: 5
  username: <%= env['DOTCLOUD_DB_SQL_LOGIN'] %>
  password: <%= env['DOTCLOUD_DB_SQL_PASSWORD'] %>
  host: <%= env['DOTCLOUD_DB_SQL_HOST'] %>
  port: <%= env['DOTCLOUD_DB_SQL_PORT'] %>

ここに書いてある
http://docs.dotcloud.com/0.9/guides/environment/

rake db:migrateの実行

$ rake db:migrate RAILS_ENV=production
$ exit

自分のPCに戻って、dotcloud open

これだとdotcloud pushしたときに設定が全部上書きされてしまうので、作業側のコードも編集しておき、rbenvあたりでgem管理しておけばいいかも。

広告