Ruby On Rails

지각생 연습장

목차

ROR

루비 언어를 바탕으로 한 웹 개발 프레임워크. 굉장히 쉽고 빠르게 만들 수 있다.

사용 방법

설치

웹 배포 환경 만들기

레일즈 개요

  • rails 명령으로 프로젝트 생성 (같은 이름의 디렉토리 만들어진다)
    ~$ rails myproject 혹은
    ~$ rails myproject -D mysql (mysql 데이터베이스를 이용할때)
  • 프로젝트 디렉토리로 이동
    ~$ cd myproject
  • 데이터베이스 설정 (DB 쓰면) : config/database.yml 설정
  • MVC 구조에 맞게 프로그램 설계 : 모델, 컨트롤러(+액션), 뷰

  • DB, 테이블 생성
  • 모델 만들기
    ~/myproject$ ruby script/generate model 모델이름
  • 컨트롤러 만들기
    ~/myproject$ ruby script/generate controller 컨트롤러이름
  • 액션 정의 : 컨트롤러 파일에

(대안 : scaffold)

  • scaffold 로 DB 테이블 생성, model, controller 등 생성 한번에
    ~/myproject$ ruby script/generate scaffold 모델이름 테이블필드1:타입 필드2:타입...
    • 타입은 integer, string, text 등.
    • id 필드는 지정하지 않아도 기본으로 만들어진다
  • 테이블 실제 생성
    • mysql> create database ... , grant ... 한 다음에
    ~/myproject$ rake db:migrate

최초 생성 후 테이블 변경

자세한 정보 : http://rails.neocoin.net/migrations.html

  • DB migration 파일 생성 (예: add_nickname.rb )
    ruby script/generate migration add_nickname
  • 생성된 migration 파일 편집
    • self.up : 이것이 적용될때 변경되는 내용. 즉 지금 바꾸고 싶어하는 내용
      • add_column :테이블, :필드, :타입 ==> 추가할 필드별로 한 줄씩.
        예: add_column :people, :nickname, :string
      • remove_column :테이블, :필드1 (, :필드2, :필드3 ...)
    • self.down : 이것을 되돌릴 때 할 작업. 보통 self.up 의 반대로 하면 됨
  • rake db:migrate

실습 메모 (에러등)

  • CGI::Session::CookieStore::TamperedWithCookie in ... <== scaffold, rake db:migrate 이후 localhost:3000 접근시.
    • 캐시를 지우거나 브라우저를 다시 시작하니 된다.

HTTP 인증하기

컨트롤러 파일을 열어서

  • 파일 앞부분에 추가
    before_filer :authenticate, :except => [:index, :show]
    (before_filter => before_action 으로 바뀜)
  • 파일 뒷부분에 추가
private
def authenticate 
 authenticate_or_request_with_http_basic do |name, password|
   name == '이름' && password == '비밀번호' 
 end
end

필수 입력 항목 지정하기

model 파일을 열어서 아래 구문 삽입 (title, body 가 필수 항목인 경우)

validates_presence_of :title :body

한글 문제

  • 이미 만들어진 테이블을 UTF-8 로 변경
    ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci

기본 템플릿 바꾸기

ruby script/generate 할때 생기는 기본 템플릿 파일들 바꾸기 : 아래 위치에 있는 파일들 변경

/usr/share/rails-ruby1.8/railties/lib/rails_generator/generators/components
  • scaffold/templates, model/templates ... 등의 아래에 있는 파일을 변경하면 generate 할때 그 파일들을 사용

참고/매뉴얼

기타

  • prototype - RubyOnRails에서 Ajax와 Yellow Fade Technique을 지원하기 위해 만들어진 객체지향적 자바스크립트 라이브러리다.
http://wiki.kldp.org/wiki.php/prototype
http://wiki.rubykr.org/show/PrototypeJavascriptLibrary
http://wiki.script.aculo.us/scriptaculous/show/Prototype
개인 도구