中村真一郎氏のRuby on RailsによるWebアプリケーションスーパーサンプルを1日1~2時間(日によっては3時間)、21日かけて読みました。
全体的な感想は、次のとおりです。
この本はrails gで生成されるファイルで、修正することもないファイルの内容を掲載したりして、やたらとページを稼いでいる割には、なんでそういうコードを書くのかとか、テストコードはどういう考え方でこういう書き方をしますとかの説明があまりなかった。追記するファイルも、内容を全部掲載することが多く、追記する前後だけ掲載すればいいんじゃないと思った。データベース操作、テストの紹介も表面的で、広く浅くだ。本格的なサンプルアプリは、最後の章のブログシステムだけ。サンプル本とうたっているので、いろいろなアプリの実例が載っているかと期待していたので、期待外れだった。この本では、DataMapper、 MongoDB、Rspec、Cucumber、Herokuを取り上げているのが特徴だが、それぞれの説明は浅く中途半端な印象が否めない。それらの特徴を除けば、基礎Ruby on RailsでRuby on Railsで勉強した方が、基本的なことは身につきやすいと思う。なお、この本で扱っているRuby on Railsのバージョンは3.0.5で、現在の最新版は3.2.1だが、本を通読するには、本の環境 ruby 1.9.2、rails 3.0.5に合わせた方がいいだろう。それでも、一部使用するソフトウエアが本のバージョンと乖離していて、動作しないサンプルもあり、Ruby on Railsのバージョンを3.2に変えたり、ググって、解決する必要があった。これに関連してだが、本のサポートページがないかと調べたら、Ruby on RailsによるWebアプリケーション・スーパーサンプル改訂版サポートサイトが引っかかったんだが、本の正誤情報などなく、やたらと広告が貼ってあって苦笑した。(記事末尾、追記参照)
今日読んだ、5-5 Herokuにアプリケーションを公開するで、ハマったので記録しておく。Herokuはsqlite3はサポートしていないようで、postgresqlを使用しないとダメみたい。http://stackoverflow.com/questions/7963561/heroku-stack-cedar-cannot-run-git-push-heroku-master にしたがって、Gemfileで
group :production do gem 'pg' end group :development, :test do gem 'sqlite3' end
と記述し、
$ git add Gemfile $ git commit -m "Removed sqlite3 from Gemfile" $ git push heroku master
すると、pgをインストールしろと言われる。色々ググると、postgressqlをインストールして、pgをオプション付きでインストールしないとダメみたい。(http://d.hatena.ne.jp/piggery/20120521とか)
$ sudo apt-get instal postgresql $ gem install pg -- --with-pg-config=/usr/bin/pg_config
libpg-devがねーよと言われるんだが、Ubuntuにはそんなパッケージがない。さらにググると、http://askubuntu.com/questions/105514/rails-libpq-dev-nasty-dependenciesとかが引っかかり、
$ bundle install --without production
するといいらしい。だけど、
You are trying to install in deployment mode after changing
your Gemfile. Run `bundle install` elsewhere and add the
updated Gemfile.lock to version control.
と言われるので、
$ bundle install $ git add . $ git commit -m "modify lock file" $ git push heroku master
で、アプリをディプロイできた。色々いじくりまわしたので、書き忘れた操作があるかもしれないし、誤記もあるかもしれない。
追記 Sep 13, 2012 夜。記事をアップした日の夜、Ruby on RailsによるWebアプリケーション・スーパーサンプル改訂版サポートサイトにアクセスしたら、 Rails3.1 (11) のリンクに、Rails 3.1対応の記事が載せられている。昼間見たときは、ここのサイト、広告リンクばかりに見えたんだけどね。見間違いだったのかなぁ。