ruby on rails 初歩の初歩でひっかかったこと

Rubyを始めたい方向けまとめ(2011年秋版)を読んで
rubyonrails勉強会にいってみた。

先生は@senggonghazaさん。

今日は第3回目だったのだが結構ひっかかったのでメモしておく。

事前準備

・ruby 1.92
・rails3
mysql
をそれぞれインストールしておくこと


railsアプリの作成

rails new rails_test -d mysql

現在のディレクトリ直下にRailsAppというディレクトリができる。

  • d mysql はデータベースにmysqlを指定ということ。

何もつけないとsqlite指定になる。

Gemfileにrakeのバージョンを指定

先ほど作成したRailsApp直下にGemfileというファイルがある。
その中のgem 'mysql2'の下あたりにgem 'rake','0.8.7'を追記する。

gem 'mysql2'
gem 'rake','0.8.7'

その後にbundle update。

bundle update

これでrakeは0.8.7を使うことを指定した。

じゃあrailsを起動してみる

rails s

・・・。
こんなエラーが出る。

Library not loaded: libmysqlclient.18.dylib (LoadError)

http://d.hatena.ne.jp/maeyan/20110913/1315845677に良記事が!

ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

言われるままに実行。
めでたく rails s にてmysqlを利用してサーバーが起動。

モデルの作成

rails generate model book

うまくいったぽい。

rake db:migrate

このコマンドを実行することでデータベースへデータを反映できる。

rake db:migrate

結果。明らかにエラー。

rake db:migrate
(in /svn/rails_test)
rake aborted!
no such file to load -- bundler/setup
<internal:lib/rubygems/custom_require>:29:in `require'
<internal:lib/rubygems/custom_require>:29:in `require'
/svn/rails_test/config/boot.rb:6:in `<top (required)>'
<internal:lib/rubygems/custom_require>:29:in `require'
<internal:lib/rubygems/custom_require>:29:in `require'
/svn/rails_test/config/application.rb:1:in `<top (required)>'
<internal:lib/rubygems/custom_require>:29:in `require'
<internal:lib/rubygems/custom_require>:29:in `require'
/svn/rails_test/Rakefile:5:in `<top (required)>'
/usr/local/lib/ruby/1.9.1/rake.rb:2373:in `load'
/usr/local/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/usr/local/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/local/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/local/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/local/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/local/bin/rake:31:in `<main>'

rake aborted! no such file to load -- bundler/setupの辺りが怪しいのでググる

こんな素敵なサイトが見つかった。
http://www.oiax.jp/books/hajimeru_rails_3.html

なになに。

gem update rake でRakeを更新すると問題が解消されたそうです(Mac OS X/Linuxでは、要sudo)

だそうです。

gem update rake

変わらない。

さっきのサイトの下にもうひとつ素晴らしい情報が。

Rake を 0.8.7 にダウングレードするには、まず Gemfile に次の行を追加します。

gem 'rake', '~> 0.8.7'
そして、ターミナルで以下のコマンドを実行します。

> bundle update
> gem uninstall rake --version=0.9.0

自分の環境にインストールされているrakeのバージョンを確認して

gem list -d rake

rake (0.9.2.2)

0.9.2.2ってことだと思うので

gem uninstall rake --version=0.9.2.2

これで念願のこれ実行。

rake db:migrate

今度もうまくいかんかった・・・。
今度のlogはこれ。

rake aborted!
Unknown database 'rails_test_development'

もう!これはおそらく開発用のデーターベースがないぞと言っているんだな。

sudo mysqladmin create rails_test_development

再三のrake db:migrate実行。

rake db:migrate
==  CreateBooks: migrating ====================================================
-- create_table(:books)
   -> 0.0138s
==  CreateBooks: migrated (0.0139s) ===========================================

今度はうまくいった気がする。やっほい。

しかしmysqlで見てみると何もできていない。ように見える。

mysql>show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+


あれ?さっきこんなコマンド打たなかったっけ〜もうギブアップ!
rails_test_developmentというテーブルができてもいいはずなのに!

sudo mysqladmin create rails_test_development

結局わからないことリスト

・sudo mysqladmin create rails_test_development 実行したrails_test_developmentデータベースはどこにあるのか

・modelは作ったけどほかはどう作ればいいのか

ruby-debug19のインストールもつまづく

・routeも書く必要ありそう?

・とにかくhttp://localhost:3000/booksで表示するためにどうすればいいの!


この後は・・・

modelで作ったbooksを表示するまでをしたいのですが
勉強会では(私がついていけなかったので)よくわかりませんでした!
先生に聞いておきます!