railsを初めて動かす02【DBへ接続成功】
思っているだけで、成功するかどうかは、わからんちんどものっちめちん。
Webを漁ると、どうやらscaffoldというコマンド(?)を使うと、modelやcontrollerを勝手に作ってくれるらしいです。ただ、modelやcontrollerがなぜDB接続を自動的にやってくれるかどうかは不明なところですが、まあ、とにかくやってみましょうかね。
たぶんやるのは以下の項目です。
1.ほにゃらら_developmentという名前のDBをつくる
2.つくったDBに対するユーザの権限を与える(あの・・・mysqlだけかな、これが必要なのは?)
3.つくったDBにidという主キーを持つテーブルを、テーブル名複数形でつくる
4.script/generate scaffold テーブル名単数形 テーブル名単数形 というコマンドを打つ
5.あとは神に祈るのみ
という順番でできるのかなあ?
1.ほにゃらら_developmentという名前のDBをつくる
# mysql -u root
でrootとしてログインする。rootユーザに、パスワードを設定してしまった場合は、
# mysql -u root -p
が良いらしい。
config/database.ymlファイルに、myFirst_developmentというデータベース名で指定してあったので、それをそのまま使わせていただきます。
$mysql CREATE DATABASE myFirst_development;
2.つくったDBに対するユーザの権限を与える(あの・・・mysqlだけかな、これが必要なのは?)
$mysql grant all on myFirst_development.* to 'root'@'localhost';
3.つくったDBにidという主キーを持つテーブルを、テーブル名複数形でつくる
$mysql use myFirst_development;
DROP TABLE IF EXISTS books;
CREATE TABLE books(
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(400) NOT NULL DEFAULT '(no title)',
author VARCHAR(500) NOT NULL DEFAULT '(no author)',
primary key(id)
) ENGINE = InnoDB;
4.script/generate scaffold テーブル名単数形 テーブル名単数形 というコマンドを打つ
# script/generate scaffold book book
exists app/controllers/
exists app/helpers/
create app/views/book
exists app/views/layouts/
exists test/functional/
dependency model
create app/models/
create test/unit/
create test/fixtures/
create app/models/book.rb
create test/unit/book_test.rb
create test/fixtures/books.yml
No such file or directory - /tmp/mysql.sock
ぐはぁ、なんだ、最後のエラーは??
という疑問の答えはこちらに載っていました。
さすが先人は偉い。
config/database.ymlに、
socket: /var/lib/mysql/mysql.sock
という行を、host:.....の行の後に加えましたとさ。
railsはソケット通信をするのか。なるほど。などと分かった気になってみました。
さて、book関連のファイルを一回キレイにしてから、再び同じscaffoldコマンドに挑戦します。でも、script/destroyが、キレイにするためのクリーンアップ用のコマンドかどうかは定かではないですけど使っちゃう。なんとなくそうではないのかな?と思っています。
# script/destroy scaffold book book
# script/generate scaffold book book
exists app/controllers/
exists app/helpers/
create app/views/book
create app/views/layouts/
exists test/functional/
dependency model
create app/models/
create test/unit/
create test/fixtures/
create app/models/book.rb
create test/unit/book_test.rb
create test/fixtures/books.yml
create app/views/book/_form.rhtml
create app/views/book/list.rhtml
create app/views/book/show.rhtml
create app/views/book/new.rhtml
create app/views/book/edit.rhtml
create app/controllers/book_controller.rb
create test/functional/book_controller_test.rb
create app/helpers/book_helper.rb
create app/views/layouts/book.rhtml
create public/stylesheets/scaffold.css
そしてWEBrickちゃんを再起動させます。
# [ctrl]+c
# script/server
http://localhost:3000/book にアクセス!
あぁ・・・動いたわぁん。
ブラウザからbookテーブルにデータを新規追加したり変更したり削除したりできますね。
苦節2時間、いろいろありましたが、大きな一歩を踏み出せたような気がします。
今回は、DBのテーブル名と、主キーは、決まった規則があるっていうのを覚えておけば、いいかなぁ。あとソケット通信にも気をつけて!
【広告】