「Ruby on Rails」というWebアプリケーション開発ソフトが人気と言うので、ほんのちょっとやってみました。
これはそのときの手記です。
![]() はじめに この本を買って、ちょっとやってみただけです。 概要だけ掴んでみたかったので、(まだ)本の内容の、ほんの障りしかやってません。 ![]() 必要なソフト @Ruby ARubyGems…Ruby用のパッケージ管理システム RedHat系のパッケージ管理“RPM”がPythonで作られているのと同じように、これはRuby用の パッケージ管理ツールなのだろう、との理解をしています。 BRuby on Rails Cデータベースソフト…何でもいけるようなのですが、本の中では「PostgreSQL」を使っていたので、「PostgreSQL」 を使用しました。 ・・・OSは「Debian」を使用しました。(この本もそうだったので。) ![]() メモ 細かな手順は記しません。(本に書いてあるので。) (本を読まないと絶対に出来ないよう、以下はかなり端折って書いております。) ただ、注意点として。 本には su postgres createuser rails とコマンド打つように書いてあるんですけど、私は useradd rails も、一応やっておきました。 あと、DBのキャラクタをUTF-8で作るように書いてあったので、本の通りやってみました。 (「Debian」のOS自体は、EUC-JPなのですが。) ・・・ココんとこは、個人的に「EUC」にすべきだったと思ってます。(何かと面倒なので。) DBの作成は、createdb というUNIXコマンドで行います。 (っていうか、「Postgres」よく知らないんですけど…。) で、 rails scheduler --databese=postgresql というコマンドを打つんですね。(railsの引数がスキーマ名になるのかと言うと、そうでは無いらしい。) 私は最初、てっきり「scheduler(スケジューラ)」というテンプレートが「rails」に予め登録されていて、 そいつをこのコマンドで構築しているだけ、と思ってました。 (本にその辺のことがよく書かれてなかったから。 私の読解が悪かったのか??) どうやら、そういう訳ではなさそうです。 こちらのサイトを見て、そう思いました。 この分だと映画の感想サイトとかでも、簡単にWebDBで作れそうですね。 rails movie --databese=postgresql とかやって・・・。 (尤も自宅サーバにすればの話ですが。) DBへの接続設定は、config/database.yml で行います。(書き換えが必要。) あと、テーブルの作成は db/migrate/001_create_schedules.rb ファイルをviなりで開き、そこに書き込む形。 SQL文ではなく、Rubyからテーブルを作成しているみたい。 (勿論、手動で作成してもどちらでも良いようです。 上のリンクサイトでは、自分で作ってましたんで。) 上記ファイルを書き換えてから rake db:migrate コマンドを実行すると、テーブルが作成されています。 でも私の場合、db/migrate/001_create_schedules.rb の記述内容をスペルミスしたまま実行してしまい、カラ ムの名称が異なっておりました。 ですので、すぐさま drop table してやったのですが、その後(カラム名のスペルを修正の後)再度上記コマンド を再実行しても、全然テーブルが作成されません。 結局 db/migrate/001_create_schedules.rb を db/migrate/002_create_schedules.rb に名前を変えてから、同コマンドを実行してやると、テーブルが作成されました。(^^) (どっかでフラグが立っているようですね。) …この手の本は手順こそきちんと書いてあるのですが、「あっ、間違えた。」というときにどうやって“基(もとい)” にするのか?」という、そこら辺については極めて不親切です。 (まっ、そんなことまで書いていたら、ページが幾らあっても足りないんで。) ![]() (Windows機からPuttyでDebianにログインしたイメージ) この本には、psqlについての説明は、ほとんど載っていません。 “対象読者=データベースの分かる人”と書かれています…。 ちなみに、psql -U [Postgresのログインユーザ名] [DB名] で、ログインするようです。 (psqlというのは、「PostgreSQL」へのコンソールです。) ![]() (Windows機からPuttyでDebianにログインしたイメージ) 何度もdescribe打ってみたのですが、反応が無い。 なんと「PostgreSQL」には、describe文が無いんですね…。 ちょっと気になるんですけど、select文が時々はねられます。 コマンドミスした訳でもなく、ただ矢印キーで前回と全く同じコマンドを呼び出している だけなのですが…。 はねられたらり、はたまたきちんと結果が返ったり…。 (「PostgreSQL」って、こんなものなのでしょうか? 「MySQL」の方が良さげな気がします…。) それはそうと、ここまで出来たら、 ruby script/generate scafold Schedule コマンドで、Webアプリが作られます。 ↓ ![]() ↑コレがそうです。 スケジュール(予定表)の登録画面が出来上がっています。 ![]() タイトルが日本語になるように、本の記述に従ってやってみました。 でもこれ。 このOS上で作業したので、EUCなんですけど。(笑) ブラウザのエンコードを「EUC」にしないと、日本語表示になりません。 エンコードを「EUC」にしてデータ入力し、そのまま登録しようと「Create」ボタンを押したら、エラーになって しまいました。 仕方なく、(文字化けを顧みず)「UTF-8」に画面を切り替えて「Create」ボタンを押すと、今度は登録出来 ました。 ![]() ↑Windows機のインターネット・エクスプローラから、Web画面(リスト表示)を開いたイメージ。 先ほどの“仙台出張”が、登録されています。 本には「UTF-8で」と書かれていましたが、OSのデフォルトが「EUC」なんですよね。 EUCでvi立ち上げて、“日付”とか“タイトル”とか、日本語で入力したら、そりゃあEUCになってしまいますよね。 やっぱり本の内容に逆らって、「EUC」を選択しておくべきでした・・・。 でもまあ、 mv _form.rhtml _form.rhtml.euc ;nkf -w _form.rhtml.euc > _form.rhtml で、解決です。(^^) (UTF-8に変換してやったところ、上記の問題は解決しました。) ![]() さて。 今度は本の通りにはやらずに、先ほどのサイトを見て興味を抱いていたので、ここでテーブルに列を 追加してみました。 具体的に申しますと、「shoku」という列を追加してみました。 (注)ちなみに、上の画面でレコードが1件に減っているのは、私が @ delete文 を発行し全レコードを削除の後、 A アプリから「金沢出張」のデータを登録した為です。 ruby /home/rails/scheduler/script/server で、Webが起動します。 ![]() うーん…。 「Shoku」列が出来ていました。 ちなみに“shoku”と名付けたのは、旅先で見つけた「旨い店」(食)といった意味合いです。 ![]() でも、新規登録画面の方には、「shoku」列が反映されていませんでした。 そこで、 ruby /home/rails/scheduler/script/generate scafold Schedule と、再度サイトを構築しなおします。 ![]() ↑再構築後。 すると、「shoku」列が追加されていました。 でも、せっかくタイトルを日本語に変えたのに、(今の再構築コマンドで前のやつが消えてしまい、)元 に戻ってしまいました。(笑) ・・・まあ、また作ればいいんで。 原理さえ分かれば、とりあえずよしとします。 ![]() ![]() ![]() |