ruby on rails 初歩の初歩でひっかかったこと
Rubyを始めたい方向けまとめ(2011年秋版)を読んで
rubyonrails勉強会にいってみた。
先生は@senggonghazaさん。
今日は第3回目だったのだが結構ひっかかったのでメモしておく。
事前準備
・ruby 1.92・rails3
・mysql
をそれぞれインストールしておくこと
railsアプリの作成
rails new rails_test -d mysql
現在のディレクトリ直下にRailsAppというディレクトリができる。
何もつけないと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を表示するまでをしたいのですが
勉強会では(私がついていけなかったので)よくわかりませんでした!
先生に聞いておきます!