10분만에 게시판제작
Contents
- 루비 프로젝트 생성
- 데이터베이스 셋팅
- 모델 클래스 생성
- 컨트롤러 클래스 생성
- 스캐폴드 연결
- 웹서버 구동
레일스로 간단한 게시판을 구현해 보겠습니다.
따라하기를 진행하기 위해서는
루비와 레일스가 설치 되어 있어여 하며 Mysql이 설치 되어 있어야 합니다.
설치과정는 루비 온 레일스 설치하기를 참고 하시기 바랍니다.
1. 루비 프로젝트 생성
먼저 적당한 경로에 레일스 프로젝트를 생성합니다.
rails board
board 라는 디렉토리를 생성하고 그 안에 레일스 개발에 필요한 여러 서브 디렉토리와 파일들을 자동으로 만들어줍니다.
2. 데이터베이스 셋팅
config/database.yml 파일을 텍스트편집기로 development 항목을 아래와 같이 수정하고 저장합니다.
development:
adapter: mysql
database: board
username: [DB계정]
password: [DB암호]
host: localhost
encoding: utf8
이는 레일스를 DB와 연결을 해줍니다. encoding: utf8 은 한국어 지원을 위해 추가한 것이구요.
이젠 MySQL Command Line Client 등을 사용하여 Mysql에 접속 database 를 생성합니다.
create database board default charset utf8;
또한 사용할 Table을 생성해보겠습니다.
use board;
create table posts (
id int auto_increment primary key,
name varchar(20),
title varchar(255),
body text,
created_at datetime
);
정상적으로 생성되었으면 exit 로 Mysql에서 빠져 나옵니다.
3. 모델 클래스 생성
이번엔 DB의 posts 테이블을 접근하게 해주는 모델 클래스을 생성해보겠습니다.
ruby script/generate model Post
script/generate 는 자주쓰는 커멘드로 model, controller, scaffold 등 레일스에서 핵심이 되는 파일들을 자동으로 생성해 줍니다. 물론 수동으로도 생성가능합니다.
4. 컨트롤러 클래스 생성
컨트롤러를 생성해보겠습니다.
ruby script/generate controller Board
이는 사용자가 브라우저로 접근하였을 때 처리하는 컨트롤러 클래스를 자동으로 생성해 줍니다.
5. 스캐폴드 연결
생성된 컨트롤러 파일중 app/controllers/boardcontroller.rb 파일을 아래와 같이 수정합니다.
class BoardController < ApplicationController
scaffold :post
end
scaffold :post 는 데이터베이스의 Post 모델 클레스가 posts 테이블에 대한 데이터 생성(Create), 조회(Read), 수정(Update), 삭제(Delete)에 대한 기본적인 CRUD 인터페이스를 자동으로 생성해주는 코드입니다.
6. 웹서버 구동
마지막으로 웹서버를 구동하여 정상적으로 구현되었는지 확인 해보겠습니다.
ruby script/server
웹브라우저 주소창에 http://127.0.0.1:3000/Board 라고 치고 접속하면 Listing Board 라는 페이지가 뜹니다. 레일스에 기본으로 Webrick 웹서버가 설치 되어 있습니다. 이외에도 Mongel, 아파치등 여러 웹서버하고도 연결하여 사용할 수 있습니다.
New post를 클릭하고 Name 등 기타 항목에 원하는데로 넣고 Create로 등록해보시고 Edit, Destroy 등도 해보세요. 정상적으로 되었습니까? 그렇다면 아주 기본적인 게시판 제작을 성공하신겁니다.
비록 디자인이 더 들어가야 하겠지만 위의 몇가지 과정으로 웹어플리케이션을 개발할 수 있었습니다. 루비온레일스는 이와 같이 기존에는 프로그래머들이 일일히 생성 및 설정해주어야 했던 부분들을 대부분 자동화를 하였으며 또한 쉽게 사용할 수 있는 코드와 플러그인등을 제공하여 기존에 개발에 들여야 했던 시간의 몇배 혹은 몇십배 줄일 수 있도록 해주고 있습니다.
이외에도 실제로 게시판에는 카테고리 및 회원연동 카운트등 여러 모듈을 포함되어 사용되고 있습니다.
다음에는 이와 같은 살붙이는 과정을 진행해 보도록하겠습니다.
댓글을 달아 주세요