こんにちは、Ruby芸人。

一人前のRuby芸人を目指してます。質問は随時受付中ですが、答えられるかはわかりません。ときどき、役に立つことが載ってるかも。

さくらのVPS
HDD100GB & メモリー1GBのVPSが月額980円で使える

Ruby on Railsインストールメモ on さくらのVPS
Ruby on Rails 3系の開発用デフォルトデータベースは、SQLite3になっています。

しかし、今までSQLite3で作られたデータベース上でSQL文を叩いたことがないので、やってみることにしました。

−管理人注−
以下のRailsコマンドは、Rails 3.2.3を使用しています。


booksテーブルを作成し、ブラウザからアクセスできる管理画面を作ります。

$ rails new geinin
$ cd geinin
$ rails generate scaffold Book title:string author:string price:decimal
$ thin start &



以上のようにコマンド入力して、http://localhost:3000/booksにアクセスします。

ところが、エラー発生。

(ブラウザに表示されたエラーメッセージ)
ActiveRecord::StatementInvalid in BooksController#index
Could not find table 'books'



どうやら、マイグレーションの適用とやらをやらなければならないみたいです。

$ rake db:migrate



これで、再びhttp://localhost:3000/booksにアクセすると、booksテーブルにデータを作っていけます。
とりあえず、3件のデータを作成しました。

実質、3個のコマンドだけで、テーブルの管理画面が作れるとは、なんと素晴らしい!:-)


さて、今日の目的は、sqlite3コマンドを使って、

SELECT * FROM books



というSQL文を実行し、テーブルの内容を表示することです。

どうやら、geinin/db/development.sqlite3というファイルが、データベースファイルのようです。

とりあえず、カレントディレクトリをgeinin/dbに変更し、

$ sqlite3


と打ち込む。

しかし、コマンドプロンプトがsqlite>に変わっただけで、何をやったらいいか分からない。
仕方がないので、ひとまず「exit;」でSQLite3の対話環境から脱出する。

ありゃ?「Error: near "exit": syntax error」なんて言ってきやがる。
CTRL+dで脱出できました。

--helpオプションを付けて、使い方を見ると、

$ sqlite3 --help
Usage: sqlite3 [OPTIONS] FILENAME [SQL]


FILENAMEのところに、データベースファイルを指定すれば良さそうだ。

もう一度、sqlite3コマンドを実行。

$ sqlite3 development.sqlite3
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>



SQL文を打ち込んでみる。

sqlite>select title,author,price from books;
こんにちは、Ruby芸人。|ペンギン玉|1980
炎のRuby芸人|ペンギン玉|3980
Rubyよ、永遠なれ|ペンギン玉|2480


|(バーティカルバー)で区切られて、入力したデータが表示されました。

これで、Railsアプリケーションからデータベースにちゃんとデータが作成されることが分かった。

どうせ本番環境では、MySQLを使うことになるので、SQLite3についてこれ以上踏み込むのはやめておこう。

いよいよ、『RailsによるアジャイルWebアプリケーション開発 第4版』の第7章に突入だ。



【広告】
さくらのVPS
お名前.comのVPS(KVMプラン。RAID10)
Ruby on Railsの古いバージョンではどうなっていたのかは分かりませんが、Rail 3.1では、データベースにテストデータを作ることができます(私は、Rails 3.2.3で実行しました)

【参考文献】
RailsによるアジャイルWebアプリケーション開発 第4版


$ rails new sample

でサンプルアプリケーションを作り、ディレクトリを構成します。

そして、sample/db/seeds.rbにデータ作成のスクリプトを書いて、

$ rake db:seed

とコマンドを打ち込めばデータ作成完了。


ところが、実際にやってみると、

invalid multibyte char (US-ASCII)

のエラーが大量発生。

原因は、文字列に2バイトコードを使用していることでした。

db/seed.rbもRubyスクリプトなので、2バイトコードを使用するときは、マジックコメントを書いてやらなければなりませんでした。

ファイルの先頭に、

#-*- coding:utf-8 -*-

を記述してから、

$ rake db:seed

を実行すると、正常終了し、テストデータもちゃんと作られました。


ところで、私はrakeコマンドが一体何なのかや、rake db:seedを実行したときの引数、db:seedの意味を全く理解していません。

しかし、今のところ、これらについて詳しく知ろうという気はありません。
そんなことをやるぐらいなら、どんどん『Railsによるアジャイル〜』を読み進めていく方が得策です。

使える時間は限られているので、知らなくてもプログラミングが進められるなら、必要以上に知ろうとしないことも大切です。



さくらのVPS
「Railsは、1%のコーディングと99%のインストールから成る」

という格言があるように(私が作りました)、開発環境を構築できれば、あとは解説書を読み進めるだけで、ステキなウェブサイトが完成します。

そう、あくまでも理想論ですが。

現在、私は『RailsによるアジャイルWebアプリケーション開発 第4版』で復習中ですが、あっという間に第6勝アプリケーションの作成まで読み進めることができました。

まあ、既に初版、第3版と読んでいるので、理解できて当たり前なんですけどね。

でも、Railsでアプリケーション構築のためにクラスを作ると、やはり、

「えっ!?たった、これだけでいいの?」

と思わずにはいられない。

JavaでServletやJPSを使ってアプリケーションを作ったときのXMLファイルはどこに行っちまったんだい?


今度こそ、ちゃんとRailsを理解して、幸せなコーディング生活を送りたいものだなあ(これ、何回目のお願いだ?)。


Railsアプリ開発にさくらのVPS


【関連記事】
Ruby on Railsインストールメモ on さくらのVPS

 | Copyright © こんにちは、Ruby芸人。 All rights reserved. |  Next

VPS / Template by 無料ブログ テンプレート カスタマイズ