読者です 読者をやめる 読者になる 読者になる

プログラマでありたい

おっさんになっても、プログラマでありつづけたい

Railsをインストール後、アプリを作るまでの設定チュートリアル

Rails

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

ActiveSupport(6) - 単数形と複数形の変換


 後は、アプリを作るだけです。enjoy!!