Herokuへアプリをpush。若干はまった

なにやらrailsでつくってみようとか考えて、Herokuへpush。

Herokuへ登録

とりあえず、Web Dyno: 1、Shared DB: 5MB、という組み合わせ。つまり無料範囲内。

railsアプリ作成

git管理にする
gemでherokuが必要

というくらいがherokuを使わない時との、差になるか。
通常gitを使ってるのなら、herokuが必要というレベル。

プロジェクトを作成

rails new app_name -JT

GemfileをUpdate
開発環境は簡単にしておきたいので、SQLite3

gem 'rails', '3.0.9'
gem 'jquery-rails'

group :development, :test do
  gem 'heroku'
  gem 'rails3-generators'
  gem 'sqlite3'
  gem "rspec-rails", ">= 2.0.0.beta.13"
  gem "factory_girl_rails"
end

group :production do
  gem 'pg'
  gem 'therubyracer-heroku'
end

gem 'sqlite3-ruby', :require => 'sqlite3'

で、bundle install
pgとかはherokuで使いたいだけのなので、productionは対象外にしておく

bundle install --without production

jquery

rails g jquery:install

factory_girlを使うための設定をconfig/application.rbに
https://github.com/indirect/rails3-generators
scaffoldとかでgenerateしたときのfixtureがfactory_girlになる

config.generators do |g|
  g.fixture_replacement :factory_girl
end

ということでとりあえずgenerateしてみる

rails generate scaffold user name:string mailaddress:string password:string
bundle exec rake db:migrate

herokuへ

とりあえずcreate

heroku create

アプリ名が勝手に入るので、renameする

heroku rename new_app_name

remote は以下のコマンドで確認

git remote show heroku

この名前がドメインの一部になる

http://[new_app_name].heroku.com/

herokuへpush
bundleも自動でしてくれる

git push heroku master

で、migrate

heroku rake db:migrate 

ができない!!
こんな感じ。

sugilog% heroku rake db:migrate
(in /app)
rake aborted!
uninitialized constant Rake::DSL
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2482:in `const_missing'

Rake::DSLをincludeする、っていうのもトライしてみたけどうまくいかず。
http://k10i-rails.blogspot.com/2011/06/heroku.html

結局production用のrakeを0.8.7にすることでおちつかせる。(Gemfile)

group :production do
  gem 'rake', '~> 0.8.7'
end


とはいえ、また新しいことを初めて見た。
何かの簡単でもいいからサービスを作ることにつなげてみよう。