ちょこっと試したいことがあって、Railsでサンプルアプリを作ろうとしました。
コードの書き方は覚えているのですけど、そこに行くまでの設定の仕方がさっぱり思い出せませんでした。
覚えたことを備忘録代わりに残しておきます。
以下の環境でのメモです。
ruby 1.8.6
gem 1.3.1
Rails 2.3.2
mysql 5.0.77
ベースの作成。railsコマンドでサクッと出来ます。
今回は仮にCartというアプリを作るとします。
$ rails Cart create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments create config/initializers create config/locales create db create doc create lib create lib/tasks create log create public/images create public/javascripts create public/stylesheets create script/performance create test/fixtures create test/functional create test/integration create test/performance create test/unit create vendor create vendor/plugins create tmp/sessions create tmp/sockets create tmp/cache create tmp/pids create Rakefile create README create app/controllers/application_controller.rb create app/helpers/application_helper.rb create config/database.yml create config/routes.rb create config/locales/en.yml create config/initializers/backtrace_silencers.rb create config/initializers/inflections.rb create config/initializers/mime_types.rb create config/initializers/new_rails_defaults.rb create config/initializers/session_store.rb create config/environment.rb create config/boot.rb create config/environments/production.rb create config/environments/development.rb create config/environments/test.rb create script/about create script/console create script/dbconsole create script/destroy create script/generate create script/runner create script/server create script/plugin create script/performance/benchmarker create script/performance/profiler create test/test_helper.rb create test/performance/browsing_test.rb create public/404.html create public/422.html create public/500.html create public/index.html create public/favicon.ico create public/robots.txt create public/images/rails.png create public/javascripts/prototype.js create public/javascripts/effects.js create public/javascripts/dragdrop.js create public/javascripts/controls.js create public/javascripts/application.js create doc/README_FOR_APP create log/server.log create log/production.log create log/development.log create log/test.log
使用するデータベースも作成しておきます。
都合、開発用/テスト用/本番用に分けておきます。
テーブル名、ユーザ名、パスワードはご随意に。
$mysql -u root create database rails_development character set utf8; create database rails_test character set utf8; create database rails character set utf8; grant all on rails_development.* to 'rails'@'localhost' identified by 'pass'; grant all on rails_test.* to 'rails'@'localhost' identified by 'pass'; grant all on rails.* to 'rails'@'localhost' identified by 'pass';
railsのDB接続の設定を行います。
config/database.ymlの編集を行います。
development: adapter: mysql database: rails_development host: localhost username: rails password: pass pool: 5 timeout: 5000 socket: /var/lib/mysql/mysql.sock test: adapter: mysql database: rails_test host: localhost username: rails password: pass pool: 5 timeout: 5000 socket: /var/lib/mysql/mysql.sock production: adapter: mysql database: rails host: localhost username: rails password: pass pool: 5 timeout: 5000 socket: /var/lib/mysql/mysql.sock
モデルとコントローラを作成します。
Scaffoldという手もありますけど、後々の修正を考えると最小限のものを作成するこちらの方が良いのではないでしょうか。
$ ruby script/generate model Cart exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/cart.rb create test/unit/cart_test.rb create test/fixtures/carts.yml create db/migrate create db/migrate/20090404160511_create_carts.rb $ ruby script/generate controller cart exists app/controllers/ exists app/helpers/ create app/views/cart exists test/functional/ create test/unit/helpers/ create app/controllers/cart_controller.rb create test/functional/cart_controller_test.rb create app/helpers/cart_helper.rb create test/unit/helpers/cart_helper_test.rb
こんなものが出来ます。
$ ls app/ controllers helpers models views $ ls app/controllers/ application_controller.rb cart_controller.rb $ ls app/models/ cart.rb $ ls app/views/ cart layouts
適当にcontrollerにクラスと対応するviewを作成します。
$vi model/cart_controller.rb class CartController < ApplicationController def index end end $vi view/cart/index.rhtml hoge
サーバの起動です。
http://localhost:3000/list にアクセス出来れば成功です。
$ ruby script/server => Booting Mongrel => Rails 2.3.2 application starting on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server
ついでに補足です。
Railsのお約束で、テーブル名は複数形でつける必要があります。
単純にsを付けるだけなら楽なんですが、複雑な変化をする場合は悩んでしまいます。
そんな時は、ActiveSupportのString#pluralizeで確認出来ます。(単数形にしたい場合は、String#singularizeメソッド。)
$ irb >> require 'active_support' => true >> p 'cat'.pluralize "cats" => nil >> p 'list'.pluralize "lists" => nil >> p 'man'.pluralize "men" => nil >> p 'people'.pluralize "peoples" => nil >> p 'person'.pluralize "people" => nil >> p 'entry'.pluralize "entries" => nil
後は、アプリを作るだけです。enjoy!!