이전에 생성한 어플리케이션을 브라우져에서 확인해 보기위해 웹서버를 구동합니다. 어플리케이션 폴더에서 아래와 같이 실행합니다.

> script/server

레일즈의 웹서버는 일반적으로 3000 포트를 사용하기 때문에 "URL:3000/"과 같이 주소창에 입력하셔야 합니다. 브라우져에서 Rails의 기본페이지가 보이며, 아래와 같이 해야할 작업들이 나와 있습니다.

1. Use script/generate to create your models and controllers
To see all available options, run it without parameters.

2. Set up a default route and remove or rename this file
Routes are set up in config/routes.rb.

3. Create your database
Run rake db:migrate to create your database. If you're not using SQLite (the default), edit config/database.yml with your username and password.

위에서 지시하는대로 작업을 해보겠습니다.

1. Home 컨트롤러 생성
1) HomeController 를 생성
script내의 generate는 이름 그대로 레일즈에서 컨트롤러, 모델, 스케폴드등을 간편하게 생성할 수 있게 합니다. 시작 페이지를 만들기 위해 아래와 같이 index 뷰를 가진 home 컨트롤러를 생성합니다.

> script/generate controller Home index
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/home
      exists  test/functional/
      create  app/controllers/home_controller.rb
      create  test/functional/home_controller_test.rb
      create  app/helpers/home_helper.rb
      create  app/views/home/index.html.erb

실행이 되면 위와 같이 생성되는 디렉토리와 파일들을 확인할 수 있습니다. app/controllers 디렉토리에서 home_controller.rb가 아래와 같이 생성되어 있습니다.

class HomeController < ApplicationController
  def index
  end

end

2) index.html 삭제
public 디렉토리 아래의 index.html을 삭제합니다. index.html이 존재하면 아래에서 작업할 routes.rb에서의 설정이 무효화됩니다.

> rm public/index.html


2. routes.rb 설정
config 디렉토리 아래의 routes.rb 파일을 오픈합니다. 주석으로 처리된 부분을 제외하면 아래와 같습니다. map.root를 home 컨트롤러로 설정하도록 푸른색으로 된 부분을 추가합니다.

ActionController::Routing::Routes.draw do |map|
  map.root :controller => "home"
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end

이제 웹 루트('/') 요청을 받게 되면 /home/index로 연결됩니다.

3. 데이터 베이스 설정

1) 데이터베이스, 계정 생성
mysql에서 개발, 테스트, 배포에 필요한 데이터베이스와 계정을 생성합니다.

mysql> create database www_development;
mysql> create database www_test;
mysql> create database www;
mysql> grant all privileges on www_development.* to www_user@'localhost'  identified by '1111';
mysql> grant all privileges on www_test.* to www_user@'localhost'  identified by '1111';
mysql> grant all privileges on www.* to www_user@'localhost'  identified by '1111';

2) database.yml 수정
이제 config 폴더 밑의 database.yml을 오픈하여 위에서 생성한 정보로 변경합니다.

development:
  adapter: mysql
  encoding: utf8
  database: www_development
  username: www_user
  password: 1111
  socket: /tmp/mysql.sock

test:
  adapter: mysql
  encoding: utf8
  database: www_test
  username: www_user
  password: 1111
  socket: /tmp/mysql.sock

production:
  adapter: mysql
  encoding: utf8
  database: www
  username: www_user
  password: 1111
  socket: /tmp/mysql.sock

위의 파일에서 주석으로 되어 있는 부분을 보면 테스트를 위한 데이터베이스는 테스트 실행시 디비를 초기화 하기 때문에 개발과 배포를 위한 데이터베이스는 별도로 만들어야 한다고 경고하고 있습니다.

4. index.html.erb 파일
1) erb
index.html.erb 파일은 HTML과 eRuby 문법을 같이 사용할 수 있는 템플릿 파일입니다. eRuby는 템플릿 파일에서 사용할 수 있는 루비입니다. '<%' 와 '%>'의 사이에서 루비코드를 사용할 수 있습니다.

레일즈에 의해 이전에 생성된 app/views/home/index.html.erb의 내용은 아래와 같습니다.

<h1>Home#index</h1>
<p>Find me in app/views/home/index.html.erb</p>

2) 동작 확인
db등 변경된 부분을 새로 적용하기 위해 실행되고 있는 script/server를 컨트롤+C를 눌러 종료한 후에 script/server를 재시동합니다. 

브라우져에서 리로드를 하면 아래와 같이 위에서 작업된 내용들이 적용되어 초기화면이 아래와 같이 Home 컨트롤러로 연결되어 있는 것을 확인할 수 있습니다.

제가 루비온레일즈에서 해본 것중 70% 정도까지 온 것 같습니다. 해본 것도 이해를 정확히 못하고 있는데 조금만 있으면 진짜 삽질기로 들어 갈 것 같습니다.