【Rails】WindowsからMacへプロジェクト移動

お久しぶりです。ひよっ子海山です。最近エントリを上げるようなネタの欠如といいますか、忙しかった(?)といいますか、いろいろで更新回数が減っております…(´・ω・`)

今回はここ数日の合間のおはなしです。自分用メモです。

WindowsでつくっていたRailsのプロジェクトをそのまま移動したら、エラーで動きませんでした…。
まず、

DBの文字コードとか

rake db:createをしようとしたときに、

Couldn’t create database for {“reconnect”=>false, “encoding”=>”utf8″, “username”=>***, “adapter”=>”mysql”, “database”=>”TestApp_development”, “host”=>”localhost”, “pool”=>5, “password”=>***, “socket”=>”/opt/local/var/run/mysql5/mysqld.sock”}, charset: utf8, collation: utf8_general_ci (if you set the charset manually, make sure you have a matching collation)

こんな感じで怒られました。
mysqlにログイン後、

status

文字コードの確認をします。

Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8

このように、すべてutf8ならいいのですが、違う場合は設定します。
参考はこちらhttp://d.hatena.ne.jp/sky-walker/20090106/1231255210
設定し終わったあと、一度再起動して、もう一度mysqlにログイン→statusで確認します

mysql関連

sudo gem install mysqlをしたつもりが以下のエラーですすみませんでした。

rake aborted!
uninitialized constant MysqlCompat::MysqlRes

(See full trace by running task with --trace)

そんな時、
まず、sudo gem uninstall mysqlで削除
その後、sudo gem install mysqlをしてください。
ちなみに、

rake aborted!
Access denied for user 'root'@'localhost' (using password: NO)

(See full trace by running task with --trace)

これはパスワードの設定し忘れなだけなので、config/database.ymlのpassword:部分を書きこんでください

もう一度、rake db:create をしたあとに、rake db:migrateが出来れば成功です。

もし、うまくいかなかった場合

もう一度、sudo gem uninstall mysqlをしてください。
この後は、Macのバージョン?等によってコマンドを変えます。
私の場合はこれです。
Snow Leopard

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

上記の事を、参考サイトを見ながらやっていたのですが…
config/database.ymlの一番上を見ると、これらのコマンドについて書いてありました…^^;
Mac OS X

sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql

Mac OS X Leopard

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

Windows

gem install mysql

参考サイトでは、もう少し細かくコマンドについて書かれているので、参考にしてみるといいかと思います(小さく9と書いてある項目)。

Rakefileが消失

Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)

というエラーがでました。
プロジェクト名/Rakefileが消失していました…。
(以前、作成していたプロジェクトの半分ぐらいのファイルだけ消えるという変な事態があったのですがその時のものだと思います)

これはRakefileというファイルをつくって、以下の内容をコピペです。
適当なrailsのプロジェクトを作成して、そこからコピーでもいいですね。

プロジェクト名/Rakefile

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require(File.join(File.dirname(__FILE__), 'config', 'boot'))

require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'

require 'tasks/rails'