ruby: 2008年4月アーカイブ

さて、rubyを触り始めて2日目ですが、これまでの軌跡としてはこんな感じ。
rubyをEclipseで使ってみる
rubyをEclipseで使ってみる2
rubyをEclipseで使ってみる3
rubyをEclipseで使ってみる4
ということで、サンプルに沿ってやってたら頓挫した、という感じ。
で、このままおいとくのも根性ない感じですが、まあ、ここで踏ん張ることが最適とも思えなかったので一度仕切りなおしてみることにしました。

別のサンプルを探してたらいい感じのところがありました。
Ruby On Rails チュートリアル&MORE
参考にさせていただきます。

早速新しくプロジェクトを作成してみる。
と、ここで始めてしったんですけど、プロジェクト作成時に
Create a WEBrick server
Create a Mongrel server
という選択肢があると思うんですけど、これrubyでできたWEBサーバだそうで。Apacheとかのセットアップしてないのにどうして動くんだろう?Radrailsに組み込まれてるのかなーとか、思ってましたがそーゆーことなんですね。え?知ってるって?

とにかく作ります。「Todolist」と。
次に・・・お、前回のサンプルと違います。次はDBを作成します。rakeで作るんじゃなくて手で作ります。

rubyをEclipseで使ってみる3でセットアップしたInstant railsが役に立ちそう。
コマンドプロンプトで以下のとおりにやってみる。

===========
C:\InstantRails-2.0\mysql\bin>mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 71 to server version: 5.0.27-community

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>
===========

入れた。
そのままDBとテーブルも作成

===========
mysql> CREATE DATABASE todolistdb;
Query OK, 1 row affected (0.13 sec)

mysql> USE todolistdb;
Database changed
mysql> CREATE TABLE todolists (
-> id SMALLINT (5) NOT NULL auto_increment,
-> subject VARCHAR (255),
-> content TEXT,
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (0.14 sec)
===========

お手本だと、ここでdatabase.ymlにrootのパスワードを記述するようになってるけど、とりあえずローセキュリティーの方向で。

で、次に・・・前回頓挫したscaffoldの作成です。
scaffold Todolist
でGo・・・今度はうまく生成されたっぽい。

サーバを再起動シロと書いてあるので再起動
Generatorsタブと同じならびになるServersタブを選んで(なければWindow>Show view>Other>Serversででる)再起動。
前回のプロジェクトは残したままなので今回はポート3001が割り当てられていた。
でブラウザでアクセス。。。うまくいかね。

あれーなんでだろう、と思って生成されたファイルの確認をしようとしたら、ない。
いろいろ探してたら、なんと前回のenqueteプロジェクトの方にできてた。よくよくGeneratorsタブの中を見てみると、左上のところに「Current Rails Project: enquete」ってなってた。うわ、そーゆーことかよ。
Generatorsタブの並びから少し外れたところにRと小さく添えられたフォルダアイコンっぽいプルダウンがあって、そこで変えられた。

再生成してもう一回トライ。
うまくいった!と思ったらエラーが変わってただけだった。
#42000Unknown database 'todolist_development'
うん、これはわかる。database.ymlを書き換えてもいいし、DBのほうを変えてもいいでしょう。今回は早いほうでdatabase.ymlを書き換えた。
サーバを再起動して再々トライ。

・・・出た!やったー!初rubyアプリでございます。
ってスゲー!ここまででコーディングこれっぽっちもしてない!
ちょっと物足りない気もするけど、まあ事始だから。

ここまでで、学んだことは

DBはmigrationするよか手で作ったほうがうまくいく。ということだろうか。。

というわけで、今日はここまで。

追記:(2008-05-19)
なお、このままだとどの画面でも動きはするけど、何もでてこない状態になってしまう。
scaffoldのときに

Todolist subject:string content:string

のようにやると、一覧で各要素のデータが表示されたりedit画面で編集領域がでてきたりと、よりそれっぽくなる。

とりあえず、全体感をつかむためにアプリを作ってみる。
といっても、右も左もわからないのでサンプルを探す。

http://www.itmedia.co.jp/enterprise/articles/0703/12/news018_2.html

ここがよさそうだ。ここを参考にしながらやってみることにした。

どうやらRadRailsを使ったアプリの構築順序は

DB作成→migrationファイル作成→scaffold作成→カスタマイズ
という順番になるっぽい。

それぞれのステップのだいたいの意味としては
だいたい以下の感じだと思っている。

DB作成:MySQL上のデータベースを作成すること
migrationファイル作成:テーブルの雛形ファイル作成
scaffold作成:アプリの土台(scaffold)をrailsで自動生成
カスタマイズ:土台をいじくって完成させる

とりあえずphpMyAdminでテスト用のデータベースを作成する。

DB作成はサンプルのとおりサクっとやって、次のステップのmigrationファイル作成に取り掛かる。と思ったら、Generatorsタブがない。
一瞬あせったけど、Window>Show View>Otherでrailsの下のGereratorsで出てきた。

で、次に「rake migrate」を実行するらしいけど、ここでアレっ?と思うことが。
サンプルのサイトにはこのステップをなぜかInstantRailsから起動するコマンドプロンプトやることになっている。いやーそんな中途半パなプラグインはねーだろ、と思って適当にいじったらやっぱりEclipse上からできた。
001_enquete.rbを右クリックすると、Run MigrationというのがコンテキストにでてくるのでそれでOK。サンプルどおりの結果が得られた。

実は、ここで一度ハマッた。原因はプロジェクト名をtestとしていた、かつ、プロジェクト作成時のDBの選択をMySQLとしていないせいだった。RadRails?では、プロジェクト作成時にDBの接続設定ファイル(config>database.yml)も作成されており、その設定もプロジェクト名が使われるため、サンプルと整合性がとれておらず、DBと接続できていなかったからだ。コンソール上のエラーログはけっこうざっくりとしかでてなかったので、原因追求にけっこう手間取ってしまった。

さて、次はscaffoldの生成だ。サンプルどおりGeneratorsタブでscaffoldにして、Enquete Admin::Enquetesって入力して(全然意味わかってないけど)GO押下。
・・・なんかスムーズに行ってない雰囲気のメッセージがでた。

wrong number of arguments(3 for 2)

サンプルのステップでは後はブラウザでアクセスすると、今生成した画面が見えるよ!となっているので試したがやはり見えない。

変わりにこんな表示が。
=====
Routing Error
No route matches "/admin/enquetes/" with {:method=>:get}
=====

うーん。どっかにstrutsでいうstruts-config的な役割のものがなくてはいけないのに、それがない、もしくは間違ってる風なメッセージに見える。rubyの基礎も調べず、いきなりこれからやったから、どう手をつけていいのかわからない。ちょっと疲れたので明日以降に持ち越し。


前回の続きで、Instant railsのセットアップですが、これは別に特にないです。 ダウンロードして、やっぱり2バイト文字とかスペースの入らないとこに解凍して終わりな感じです。

あ、ちなみにInstantRailsは、apacheとかMySQLとかの環境が一発でできる、XAMMPみたいなもんですね。

筆者の場合、やはりCドライブ直下に置きました。
ダウンロードサイトには、解凍トラブルが多いのか、「解凍時の問題について」的なページがありましたが、筆者はノートラブルだった。

InstantRails.exeを起動すると、「場所が移動されてるけど、そっちに合わせてOK?」という感じのダイアログがでてくるのでOKを押す。

そうすると、apacheとMySQLのステータスが表示されているウィンドウが立ち上がる。
apacheはすぐに起動したけど、MySQLがpending状態になって起動してるんだかしてないんだかわからない状態になったが、一旦killしたら、勝手に再起動して、普通に起動した。

http://localhost/mysql/にアクセスするとphpMyAdminが立ち上がって準備完了といったところ。

これで、大体の開発環境が整ったかなー。


前回より、rubyスタートキットは以下のとおり。
ruby 1.8.3
Eclipse3.3.2rad rails
Instant rails

まず、Eclipseをゲットする。既にJava開発で使っていたEclipseがあったけど、それぞれ使うプラグインとかは別だと思ったし、全部ごった煮にすると、その分Eclipseが重くなりそうだったので新たにダウンロードした。

筆者は、Eclipseという親フォルダをCドライブ直下に置くようにしている。その下に、用途ごとの名前を切ったEclipseフォルダをおいている。
理由は、パスに空白とか2バイト文字とかが入るのを防ぐのと、パス自体の長さがやたら長くのを防ぐため。
#なんかこれらの原因でトラぶったことがあってそうするようになった。気がする。

今回ゲットしたEclipseだとこんな感じ。
C:\Eclipse\eclipse3.3.2_ruby

日本語化はめんどくさいからしない。
追記:日本語化を希望される方は、こちらを見てみてください。(2008/04/28)

で、次は、ruby on railsを使った開発のサポートをしてくれるツールで、スタンドアロンで動くやつと、Eclipseのプラグインとして動くやつがある。今回はEclipse使う前提なのでプラグインで。

インストールはEclipseのアップデート機能を使う。

Elipseの
Help>Software Updates>Find and Install
で「Search for new feature・・・」を選択。
出てきた画面の右上にある「New Remote Site」をクリック。
出てきたダイアログのnameはテキトーに入れてURLに

http://update.aptana.com/update/studio/3.2/site.xml

を入れる。
後は規約とかに同意させられたり、関連するモジュールのインストールを聞かれたりするが、流れに沿ってOKOKしてれば終わる。

と思ったら、どうやら実はこの時点では、rad railsは入っていなくてrad railsを出しているaptanaの各ツールのインストーラがインストールされた、という段階のようだった。

Eclipseを再起動すると、Aptanaの画面がどーんとでてくる。3カラムに分かれた画面の真ん中のカラムに「plugins」コーナーがあって、そこの中ほどに、「Ruby on Rails」と書いてあるので、そこのinstallボタンを押すと、ようやくradrailsのインストールが完了する。

ここで、ruby本体が入っていないと、rubyのダウンロードページに誘導されるので、それにしたがってrubyもインストール。なんて親切なんだ。何種類かあったけど、ワンクリックインストーラがあったのでそれを使った。

で、両方が終わるとrubyを開発する環境が整っているはず。です。
EclipseのPackage Explorビュー上で、右クリック>New>Projectとすると、Project作成ウィザードが立ち上がるのでRails>Rails Projectを選択して次に進む。
Project名をとりあえず「test」として後は全部デフォルトで完了。

Package Explorビュー上にtestプロジェクトだけできたと思ったら、自動的にテンプレート的なのがどんどん生成されていく。

なんか動きがなくなったなー、と思ったら、
http://localhost:3000/にアクセスするとrad railsのようこそページ的なのが立ち上がって、セットアップ完了である。

Instant railsはまた次回以降で。

遅ればせながらrubyを使ってみようと思う。
筆者はもともとJAVAしか知らないWEB開発者だった。

が、JAVAはちょろっと何か作って公開する、というのには敷居が高いケースがシバシバある。手近にある環境にTomcatが入っているかといったら、入ってないほうが多いし、レンサバも然り。

だから最近LLな言語に興味津々で、かつ大概の環境にはじめっからあるPHPをちょこちょこといじってきたが、なんでかrubyはさわってこなかった。

言語でもフレームワークでも「ハイスピードな開発を実現できる!」的な触れ込みがよくあるけど、そういうのを聞くとひねくれモノの筆者は「どうせ制限つきなんだろ?」とか思ってしまうせいかもしれない。なんでも「良し悪し」なのは当たり前だということはわかってるけど。

しかし、使ってみないで「どーせrubyもPHPもかわんねーだろ?」というのもなんかおかしい気がするし、とりあえず使ってみよう、ということで、長くなったけど、これからrubyを使ってみます。

事前調査の結果、以下の環境が手軽そう。
Eclipse3.3.2rad rails
Instant rails

スーパーな人は、emacsとかviとかで書くみたいだけど筆者クラスだとEclipseのようなIDEは欠かせない。
以前、とあるWEB構築プロジェクトで一緒になったKさんは、Javaを秀丸で書いてたけど、それで事実品質もよかったけど、筆者は記憶力もいまいちなので、コード補完とか、メソッド参照とかないと生きていけないんです。


長くなってしまったのでセットアップ手順とかは別途にします。



このアーカイブについて

このページには、2008年4月以降に書かれたブログ記事のうちrubyカテゴリに属しているものが含まれています。

次のアーカイブはruby: 2008年5月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。