『RailsとiPhoneではじめるアプリケーション開発』を進める時の注意点・ハマったこと Chapter 06まで

前回のエントリーに続いて、『RailsiPhoneではじめるアプリケーション開発
』を進めてみようと思います。

RailsとiPhoneではじめるアプリケーション開発

RailsとiPhoneではじめるアプリケーション開発

Chapter 01 -> 03
『RailsとiPhoneではじめるアプリケーション開発』を進める時の注意点・ハマったこと Chapter 03まで - diceK66のブログ

重要事項

エラーが起きたらコンソールをじっくり読みましょう

特に自分が作成or編集したファイルがログに出てきたら、必ず正しくソースが書けているか等をチェックしましょう

Chapter 04 特に何も起きずにクリア!

特に何も問題は起こらずにクリアできました!
何かうれしいw 既に飼いならされてるw

Chapter 05 とりあえず流し読み

プロトタイピングについての説明ですが、内容としてはよくある内容かと思いますので、さらっと読めばOKかと思います。

ちなみに『モックアップと呼ばれるソフトを利用して』とありますが、「モックアップ」という名前のモックアップソフトってあったっけ?
個人的には紙にUIデザインを書いて試すペーパープロトタイピングか、Cacoo https://cacoo.com/lang/ja/を使う事が多いでしょうか。

p.125〜126 Railsのバージョンに気をつけて!

p.126で何事もなかったように、

$ rails new travel photo --database=mysql

とプロジェクトを作ろうとしますが、実はさらっとp.125に『「gem install rails」でRailsをインストールします。』書いてあります。
ただ、そのまま「gem install rails」をすると新しいバージョンのRailsがインストールされてしまうため、以下のようにこの本の推奨バージョンでRailsをインストールした方がよいでしょう。

$ gem install rails --version=3.2.13

もしも最新バージョンをインストールしちゃった! という場合には、おそらくもう一つgemsetを作ってインストールし直して、今後はそのgemsetを使って進めるのが簡単だと思います。

$ rvm gemset create travelphoto2
$ rvm gemset use travelphoto2
$ gem install rails --version=3.2.13

$ rvm --create --versions.conf use ??

おそらくプロジェクトのディレクトリに入ったら自動的にgemsetが切り替わるようにしたいのだと思いますが、このコマンドを叩いてもうまくいかないと思います。
私の知っているやり方をご紹介します。

  1. プロジェクトのルートディレクトリに「.rvmrc」ファイルを作成
  2. ファイル内に以下のように記述
rvm 1.9.3-p194
rvm gemset use travelphoto

これで次回以降、このプロジェクトディレクトリに入ると、自動的にtravelphotoというgemsetが使われるようになります。
初回だけ、以下のように聞かれますが、yを入力してください。

********************************************************************************************************************
* NOTICE                                                                                                           *
********************************************************************************************************************
* RVM has encountered a new or modified .rvmrc file in the current directory, this is a shell script and           *
* therefore may contain any shell commands.                                                                        *
*                                                                                                                  *
* Examine the contents of this file carefully to be sure the contents are safe before trusting it!                 *
* Do you wish to trust '/Users/eliass/rails/travelphoto/.rvmrc'?                                                   *
* Choose v[iew] below to view the contents                                                                         *
********************************************************************************************************************
y[es], n[o], v[iew], c[ancel]> y

p.129 rake db:setup がaborted

データベースを作成しようとすると、以下のようなログをはいて、abortedになりました。

rake aborted!
Psych::SyntaxError: (<unknown>): could not find expected ':' while scanning a simple key at line 18 column 3
/Users/eliass/.rvm/gems/ruby-1.9.3-p545@travelphoto/gems/safe_yaml-0.9.7/lib/safe_yaml.rb:144:in `load_with_options'
/Users/eliass/.rvm/gems/ruby-1.9.3-p545@travelphoto/gems/railties-3.2.13/lib/rails/application/configuration.rb:115:in `database_configuration'
/Users/eliass/.rvm/gems/ruby-1.9.3-p545@travelphoto/gems/activerecord-3.2.13/lib/active_record/railties/databases.rake:25:in `block (2 levels) in <top (required)>'
Tasks: TOP => db:setup => db:schema:load_if_ruby => db:create => db:load_config
(See full trace by running task with --trace)

rails error, couldn't parse YAML - Stack Overflow
ここによると、とりあえず、以下の2行のコードをconfig/boot.rbに入れれば動くとの事。
私の場合は、boot.rbの「require 'rubygems'」の下に追記して解消しました。
(ちゃんと直すにはどうすればよいかもリンク先にはありますので、興味がある方はご参照ください)

//config.rb
require 'rubygems'
require 'yaml'
YAML::ENGINE.yamler = 'syck'

p.137 :token_authenticatableが無い!

Devise 3.1: Now with more secure defaults | Plataformatec Blog
この記事によると:token_authenticatableは削除されたとの事。
なので、現時点ではこの設定はできないと思います。
後々使う事になったら、対処方法を考える事にしますが、一旦:token_authenticatableについては無視する事にします。

所感

この先は特に大きなトラブル無く進める事ができました。
(とは言え、詳細 -- 栗田 由菜「RailsとiPhoneではじめるアプリケーション開発」Impress - みんなで正誤表にはお世話になりっぱなしでしたが・・・)
この本ちゃんと最後まで進められた人っているんだろうか・・・。