『心を整える。』

心を整える。 勝利をたぐり寄せるための56の習慣

心を整える。 勝利をたぐり寄せるための56の習慣

読んだ本を日記にして行こうと思う。じゃないと年間何冊読んでいるのか
忘れてしまう。。基本、移動時間等のスキマ時間で読んでいます。

サッカー日本代表の長谷部さんが書いた本。
なぜか1時間前行動をしているところが、やたらと印象に残った。
当たり前のことをきちんと愛情込めてやるという感じかな。
久しぶりにこっち系の本読んだので新鮮だった。

『Ruby On Rails Tutorial』Screencasts lesson1

Herokuへのdeployの手順を忘れるので、順番をメモ。

・まずは、マシンを変えた時等、初期設定として下記のコマンドを実行。
heroku keys:add

 ※これを実行しないと、
  Permission denied (publickey)
  のエラーが出ることがある。

・アプリを作ったら、下記を実行。
heroku create

・Herokuへmasterをpush
git push heroku master

・deploy後、自動で生成されるアプリ名を変更
heroku rename XXXX ※XXXXは任意の名称

Herokuへdeployしたアプリケーションの名前を変更するには

Herokuへdeployしたアプリケーションの名前を変更するには
HerokuのMy Appsページにて画面から変更可能であるが、変更後、
必ず以下のリンクにあるように、リモートリポジトリの名称も変更すること。
忘れないように覚え書き。

$ git remote rm heroku
$ git remote add heroku git@heroku.com:newname.git

http://devcenter.heroku.com/articles/renaming-apps#manually_updating_a_git_remote
※『Manually Updating a Git Remote』の箇所
※newnameの箇所は、変更後のアプリ名を入力

Rubyの素晴らしさ〜配列

Rubyの素晴らしさは、配列にあり!?
オフィシャルのサンプルにもありますが、本当に美しいと思う。

>> a = [[2,1],[1,2],[0,3]]
=> [[2, 1], [1, 2], [0, 3]]
>> p a
[[2, 1], [1, 2], [0, 3]]
=> nil
>> b = [[5,1],[4,2],[3,3]]
=> [[5, 1], [4, 2], [3, 3]]
>> p b
[[5, 1], [4, 2], [3, 3]]
=> nil
>> ab = a + b
=> [[2, 1], [1, 2], [0, 3], [5, 1], [4, 2], [3, 3]]
>> ab.sort!
=> [[0, 3], [1, 2], [2, 1], [3, 3], [4, 2], [5, 1]]

素晴らしい!

scaffold実行時の 『wrong number of arguments (1 for 2)』エラーについて

先ほどご紹介した『Head First Rails ―頭とからだで覚えるRailsの基本』の12頁で
scaffoldの説明があるのですが、その頁にサンプルとしてある
下記のコマンドを実行しても、何度も『wrong number of arguments (1 for 2)』エラーが出続けていて
困っていました。直前の『create app/views/tickets/index.html.erb』までは上手く行っている
ようでしたので、その辺りの情報も探ってみたのですが、中々情報が無く、一日置いてみることにしました。

ruby script/generate scaffold ticket name:string seat_id_seq:string address:text price_paid: decimal email_address:string

で、一日空けて再度実行したコマンドをよーく見てみると、、
『price_paid: decimal 』の項目名と型の間に、半角スペースが入ってました。。
正しくは『price_paid:decimal 』ですね。
よって、

ruby script/generate scaffold ticket name:string seat_id_seq:string address:text price_paid:decimal email_address:string

と打ち直したところ、無事に動きました。。ちょっと仕事の疲れもあったのかもしれません。
凡ミスですが、若干はまりそうだったので、同じようなエラーが出た方はご注意下さい。

『Head First Rails 頭とからだで覚えるRailsの基本』

Head First Rails ―頭とからだで覚えるRailsの基本

Head First Rails ―頭とからだで覚えるRailsの基本

Railsの勉強用に購入。この本は名著だと思います。
オライリーの本は難しいという印象をお持ちの人が多いようですが、
この本は試してみる価値があります。
私のような初心者には完璧な内容かと。
一般的に知られている『RailsによるアジャイルWebアプリケーション開発』も
試してみたのですが、こっちの方が分かり易いので、切り替えました。
Railsをこれからやってみようと思う方へ、ぜひ!
※Rails3には未対応かと思いますので、そこはご注意を。

私的な開発環境は以下の通り。
Ruby 1.8.7
Rails 2.3.11
SQLite 3.6.12
Mac OS 10.6.8

Railsでrake db:migrate実行時の「uninitialized constant MysqlCompat::MysqlRes」エラーについて

この件、解決するのに正直時間が掛かったので、皆さんのためになればと。

まずは、下記のイギリス人のブログが参考になりました。
http://www.pixellatedvisions.com/2011/03/13/fixing-mysql-and-rubygem-errors-on-a-new-rails-2-3-8-install

ざっくり翻訳すると、まずは、

file `which ruby`
file `which mysql`

を実行し、rubyとmysqlが64bit版でインストールされていることを確認します。

次にRailsで使用するmysqlのライブラリをgemでインストールします。

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

これで解決すると紹介しているページが多いですが、私は駄目でした。。

そこで、先ほど紹介したブログの最後にある

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib

を実行し、再度、rake db:migrateを実行したところエラーの内容に変化がありました。↓

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

どうもソケットの内容が怪しいようです。
Railsのプロジェクトフォルダにある/config/database.yml
を参照して見て下さい。

socket: /var/lib/mysql/mysql.sock

のような記述がないでしょうか。あれば、コメント化することでrake db:migrateを実行しても
エラーが出なくなるはずです。

なお、私の場合、mysql.sockは、/private/tmp/内に存在しておりました。
よって、上記database.ymlを

socket: /private/tmp/mysql.sock

と書き直してみたところ、同様にエラーが出なくなりました。

但し、この対応だと、一度ターミナルとの接続を切るとDYLD_LIBRARY_PATHの値もクリアされますので、

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

当然ですが、上記エラーが再発します。

そこで、私の場合は、~/.bash_loginへ下記の追加を行いました。
これで常時エラーが出なくなるはずです。
また、DYLD_LIBRARY_PATHに関しては、値をセットするとシステム全般への
影響があるようなので、DYLD_FALLBACK_LIBRARY_PATHへ値をセットしております。

export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/mysql/lib

なお、バージョンは以下の通り。
Ruby 1.8.7、Rails 2.3.11、MySQL 5.5.15
このバージョンが開発環境としていいんだか悪いんだか判断つきません。。