http://www.geekzshu.com/rails/1148
データベースはデフォルトのsqlite3でやります。
(Rails3+MySQL+cygwin(win7)はなんかうまくいかない)
rails new <app名> cd <app名> bundle install rails generate scaffold コントローラー名 カラム名:型 … (例:rails generate scaffold customer name:string email:string address:text) rake db:migrate(→rake db:createは必要なし:Rails2.xとの違い)
これでdb/に development.sqlite3という名のデータベースができる。
覗いてみると、
@db: $ sqlite development.sqlite3 sqlite3> .databases sqlite3> .tables
ちゃんと生成されているのが分かる。
で、サーバを起動して確認。
rails s
http://localhost:3000/customers/ にアクセス。
Hooray, well done!
そして念願のherokuへのデプロイを試します。
http://devcenter.heroku.com/articles/rails3
その前にgitの設定ですが、
ssh-keygenがないとcygwinに言われました。
単体のコマンドはないみたいなので、setup.exeからopensshを落とします。
これでうまくいきました。
$ git init $ git add . $ git commit -m "init"
heroku add:keysでssh公開鍵を設定するなど。
なんかsqlite3でエラーが出てる。
http://stackoverflow.com/questions/7868686/rails-3-1-sqlite3-error-on-push-to-heroku
どうやらPostgreSQLをローカルで使うのが良いらしい。
やり直し。
マニュアルを読み落としてました。
Gemfileを
- gem 'sqlite3' + gem 'pg'
に変更する。
つまり、sqlite3は使わないってことか?
それともローカルでsqlite3を使いつつ、gemにはPosgreSQLを指定してherokuと整合性を保つのだろうか。
まあいいとして、pushしてみる
$ git push heroku master
おk。アップロード完了。
で、マイグレーション。
$ heroku run rake db:migrate
なんかOperation not permitted的なエラーが出た。
herokuサイドによれば、次の呪文を唱えよとのこと。
http://stackoverflow.com/questions/7567040/issue-with-running-a-migration-on-heroku
$ heroku run bash --app <app名> $ heroku run rake db:migrate
うむ...まだエラーが出ている。
Command not found: tput cols, tput lines
調べると、windows環境(Cygwin)にtputコマンドが入っていないことが原因とのこと。
http://stackoverflow.com/questions/6229560/unable-to-run-on-heroku
tputはcygwinのncursesパッケージに入ってるらしい。
setup.exeからncursesを入れました。
それでもダメ。
ruby1.9に変えろとの声が。
http://stackoverflow.com/questions/8914040/mirage-rake-tasks-fail-when-mirage-is-not-runnning
なのでcygwinにrvmをインストールします。
http://d.hatena.ne.jp/portgus/20110416/1302919209
まずsetup.exeからgit,curl,readline,fileをインストールします。
すごく時間がかかりましたがなんとかruby1.9.2がインストールされました。
バージョンを確認すると、
ruby -v
1.8.7のままです。
rvm use 1.9.2 --default
で設定しようとしますが、rvm is not a commandとか言われました。
どうやら1.8.7はrvmでなくcygwinのsetup.exeから入れたのが
問題のようです。
躊躇なく1.8.7をsetup.exeからアンインストールします。
で、ruby -vすると1.9.2になってます。
ここで
heroku run rake db:migrate
すると、/usr/bin/ruby.exeに関するエラーがでますが、
現在/usr/bin/ruby.exeは存在しないので(cygwinから入れた1.8.7を消したから)
シンボリックリンクを張ります。(これで良いのかは不明)
$ ln -s /usr/local/rvm/bin/ruby /usr/bin/ruby.exe
結局rvmからのruby1.9.2がうまくherokuと連動しないので
rvmをアンインストール。
http://d.hatena.ne.jp/milk1000cc/20111002/1317545875
$ rvm seppuku
で、ソースからインストール。
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Ruby+Install+Guide%3A%3ACygwin+%28%A5%BD%A1%BC%A5%B9%A4%AB%A4%E9%29
$ ./configure --enable-shared $ make $ make install
この場合も/usr/bin/ruby.exeが入ってないので、シンボリックリンクを張りました。
ln -s /usr/local/bin/ruby /usr/bin/ruby.exe
何回もgem install herokuやってたらkeys:addするの忘れてた。
$ heroku keys:add ~/.ssh/id_rsa.pub
heroku runするとunable to remapのエラーがでるが、
これはrebaseallで解決できる。
ash.exeからrebaseallするときは一度cygwinを閉じてからやりましょう。http://d.hatena.ne.jp/basyura/20110706/p1
よくエラーを読むと、
Gemでrailsがないとか言っている(笑)
めんどくさいけど入れなおすか。rake,bundleをgem installで入れなおしました。
railsは
ERROR: While executing gem ... (NoMethodError) undefined method `call' for nil:NilClass
とかいうエラーがでています。
https://github.com/railsmachine/shadow_puppet/issues/10
gemspecは直したとRailsの中の人はおっしゃっています。
bundlerをインストールしたので bundle installしますが、
これによって「Gemfileに書いてあるgemをインストール」
ということが行われるようです。
http://aws.lefthandz.org/wordpress/2012/01/deploy-rails-3-1-x-to-heroku/
Rails installerを試します。
これだとうまくいきそう。
git push heroku masterするとPermission deniedがでました。
ssh公開鍵id_rsaのパーミッションが緩すぎるとのことです。
644から600に変更します。
なぜかコマンドプロンプトからだとできないので
新たに作りなおすことにします。
ssh-keygenはコマンドプロンプトに入ってないので
mysysgitをインストールします。
http://d.hatena.ne.jp/ruedap/20110404/mac_ssh_key_copy_error
http://aws.lefthandz.org/wordpress/2012/01/deploy-rails-3-1-x-to-heroku/
http://freezing-mist-9019.herokuapp.com/
<参考>
神動画。これを見れば説明はいらないかも。
http://el.jibun.atmarkit.co.jp/rails/2010/12/rubypaasheroku-.html
ツイッターをheroku上につくる
http://d.hatena.ne.jp/ruedap/20110209/ruby_heroku_twitter_bot