web: 2008年1月アーカイブ

今回は、アプリを作ってみるよ!
前回、めんどくさそうなので、と言ったのは、masuidrive on rails » Blog Archive » PHPユーザの為のRuby/Rails入門 の「Railsチュートリアル」に従って試してみたけどエラーが出て動かなかった><

Todoアプリをチュートリアルどおりに動かしたんです。MySQLもしっかり設定した。
scaffoldやってみると、「wrong number of arguments (1 for 2)」と出て、引数の数がおかしいとか。
実際に動かしてみると、

Routing Error
No route matches "/todo/" with {:method=>:get}

むう。

無知な僕は、色々調べて、ルーティングがおかしそうだなと思い、試してみた。
ルーティングというのは、mod_rewriteみたいな、URLの書き換え機能だそうで、config/routes.rbで定義されてます。色々いじって、別のサイトに載ってるサンプルで試してルーティングの変え方とかわかったんだけど、Todoは動かなかった。

またもや色々調べて、やっと分かった。Railsのバージョンが違うからですな。
最新版のRails2.0.2ではデフォルトのDBがMySQLからSQLite3へ変わっていた。こいつが原因だ!
http://journal.mycom.co.jp/news/2007/12/18/025/index.html

こっからはうまくいった方法。

まず、前回作ったtestアプリケーションは(rails test)一旦忘れて、todoプロジェクトを作成。
その際に、DBをMySQLを指定します。以下のコマンドをコマンドプロンプトで。

>cd c:\RoR_project
>rails -d mysql todo
  create
  create app/controllers
  create app/helpers
  create app/models
  (中略)
  create log/server.log
  create log/production.log
  create log/development.log
  create log/test.log

アプリケーションが作成されて、ディレクトリがいっぱいできます。
次は、データベースの設定です。config/database.ymlを設定します。
中身はこんな感じ。(コメント除く)

development:
 adapter: mysql
 encoding: utf8
 database: todo_development
 username: root
 password:
 host: localhost
test:
 adapter: mysql
 encoding: utf8
 database: todo_test
 username: root
 password:
 host: localhost
production:
 adapter: mysql
 encoding: utf8
 database: todo_production
 username: root
 password:
 host: localhost

Railsでは開発環境・テスト環境・本番環境がそれぞれ用意されているらしい。上のdevelopment、test、productionですね。詳しいことはまだ勉強が必要だけどものすごい便利そう!すごいよ仕事でも使おうよ!って思った。

ここは、passwordを設定してる場合は書いておけばok。インストールしたばかりなら編集なしでok。ほんとはrootは危ない。

次はrakeコマンド。データベースを自動で構築してくれます。

>cd todo
>rake db:create:all
(in C:/RoR_project/todo)

phpMyAdmin(http://localhost/mysql/)でmySQLを確認すると、todo_development、todo_production、todo_testができてるはず。

最後に一気にTODOを構築するコマンドです。

>ruby script/generate scaffold Todo title:string body:text done:boolean due:datetime
  exists app/models/
  exists app/controllers/
  exists app/helpers/
  create app/views/todos
  exists app/views/layouts/
  exists test/functional/
  exists test/unit/
  create app/views/todos/index.html.erb
  create app/views/todos/show.html.erb
  create app/views/todos/new.html.erb
  create app/views/todos/edit.html.erb
  create app/views/layouts/todos.html.erb
  create public/stylesheets/scaffold.css
 dependency model
  exists app/models/
  exists test/unit/
  exists test/fixtures/
  create app/models/todo.rb
  create test/unit/todo_test.rb
  create test/fixtures/todos.yml
  create db/migrate
  create db/migrate/001_create_todos.rb
  create app/controllers/todos_controller.rb
  create test/functional/todos_controller_test.rb
  create app/helpers/todos_helper.rb
   route map.resources :todos

scaffoldというのがCRUD(Create - 生成、Read - 表示、Update - 更新、Destroy - 削除)を自動生成してくれます。今回はTodoというモデルを自動で構築してくれました。ここでマイグレーションファイル(db/migrate/001_create_todos.rb)も生成されるので、こいつをDBにmigrateすると、テーブルとレコードができあがります。

>rake db:migrate
(in C:/RoR_project/todo)
== 1 CreateTodos: migrating ===================================================
-- create_table(:todos)
  -> 0.0620s
== 1 CreateTodos: migrated (0.0620s) ==========================================

最後にWEBサーバを起動して、アプリケーションを実行してみます。

>ruby script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-01-22 01:49:31] INFO WEBrick 1.3.1
[2008-01-22 01:49:31] INFO ruby 1.8.6 (2007-09-24) [i386-mswin32]
[2008-01-22 01:49:31] INFO WEBrick::HTTPServer#start: pid=4628 port=3000

http://localhost:3000/todos/にアクセスしてみると、TODOができてます!
レコードの生成、表示、更新、削除がちゃんとできた!
ちょっとつまづいたけど、簡単にアプリができちゃった。動かない原因調べるのに2時間かかったけど><

Railsの初歩の初歩と仕組みの大枠が理解できたので、今度は本を買ってこつこつやってみるよ。
とりあえずこれ買った。

基礎Ruby on Rails (IMPRESS KISO SERIES)
黒田 努 佐藤 和人

4844324780
インプレスジャパン 2007-10
売り上げランキング : 6837
おすすめ平均 star

1ヶ月くらいでなんか公開できるものを作りたいなあ。

初心にかえって、プログラミングを勉強してみることにしたよ。

最近すごく気になってたRuby on Railsを始めてみます。
とりあえず、はてぶでRuby on Railsタグの人気エントリを探して、勉強するサイトの見当をつける。

見つけたのはここ。
masuidrive on rails » Blog Archive » PHPユーザの為のRuby/Rails入門

PHPは仕事でも触ったことあるので、得意っちゃ得意ということで、高橋メソッドなRubyの資料を読んでお勉強。高橋メソッドってやっぱいいね。モチベーションを下げさせない力があるよ。

Rubyの第一印象。
・全部オブジェクトとか超嬉しい><
・痒いところに手が届いてて嬉しい。最新の言語の利点ってそういうもんなのかな。
・自由度高くて、VBぽくね?綺麗で安全なコードを書くための自分ルールを作るために色々調べないといかんかも。
・オープンクラスとかすげー。でもできること多すぎてふわふわ感。
・イテレータとか、ちょっと新しい書き方の癖つけないといけないな。
・これ使ってから仕事でCとか書きたくなくなっちゃったり(´・ω・`)

Ruby編を読み終え、次は実際にインストールとか必要ぽいので、できそうなところを探してみます。
環境はWindowsですよ。今度はここを参照しました。
Ruby on Rails/インストール for windows

まずは、このPC買ったばかりでMySQLが必要なので、面倒なのでXAMPPで一気に色々インストールしちゃいます。
http://www.apachefriends.org/jp/xampp-windows.html
僕が入れたのは、xampp-win32-1.6.5-installer.exeです。
簡単だね。ApacheもMySQLもインストールできた。PHPならこれで始められるよ。

RubyはOne Click Installerというので、一発で入っちゃうみたいなのでそこからインストールしますよ。
http://rubyforge.org/projects/rubyinstaller/
僕が入れたのは、ruby186-26.exeです。

インストールしたら、Railsをインストール。
コマンドラインで以下を実行とのことです。

gem install rails -y

んーできた。次はC:\RoR_projectというフォルダを作って以下を実行。

cd c:\RoR_project
rails test
ruby test/script/server

で、http://localhost:3000/にアクセス。これで初期画面が見られるみたい。
んー、インストールはなんて簡単なんだろう。

アプリ動かすのは説明が若干ややこしそうなのでもうちょい試してから次回書くよ!

プロフィール

nyontan/nyon2
経営とかプログラミングとかフィリピンとか。基本的にふざけてるけど、たまに超まじめ。
うんこうんこー。

最近読んだ本

早起き生活