ちょこっと試したいことがあって、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!!