Ruby On Rails
지각생 연습장
목차 |
ROR
루비 언어를 바탕으로 한 웹 개발 프레임워크. 굉장히 쉽고 빠르게 만들 수 있다.
- 위키피디아 한국
- http://www.rubyonrails.org/ 홈페이지
- http://wiki.rubyonrails.org/rails Ruby on Rails Wiki
사용 방법
설치
- 우분투/데비안 : apt 로 설치 OK.
- sudo apt-get install rails ruby-dev mysql-server libmysqlclient-dev
- Ruby on Rails의 한글 지원 개발을 위한 UTF-8 설정
웹 배포 환경 만들기
- apache + mongrel 혹은
- apache + passenger
레일즈 개요
- 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
- 뷰 만들기
- 서버 구동 (테스트용 webrick)
- ~/myproject$ ruby script/server
- 웹 브라우저로 확인 : http://localhost:3000(서버 작동 여부), http://127.0.0.1:3000/모델명 (잘 생성됐는지)
최초 생성 후 테이블 변경
자세한 정보 : 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 ...)
- add_column :테이블, :필드, :타입 ==> 추가할 필드별로 한 줄씩.
- self.down : 이것을 되돌릴 때 할 작업. 보통 self.up 의 반대로 하면 됨
- 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 으로 바뀜)
- before_filer :authenticate, :except => [:index, :show]
- 파일 뒷부분에 추가
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 할때 그 파일들을 사용
참고/매뉴얼
- http://api.rubyonrails.org/ RoR API
- Rails edge docs
- 루비온레일즈 시작하기(설치 등)
- http://kldp.org/node/69474 ruby on rails 에 대한 토론
- Ruby On Rails로 웹 어플리케이션 구현하기 - 2005.6.14, IBM
- Four days on rail
- http://www.javapassion.com/rubyonrails/ruby_basics.pdf
- 레일즈 스크린캐스트
- top 12 tutorials
- Rolling with Ruby on Rails
- Rolling with Ruby on Rails, Part 2
- Four Days on Rails (PDF)
- Really Getting Started in Rails
- Tutorial in Ruby on Rails
- Fast-track your Web apps with Ruby on Rails
- Getting Your Feet Wet With Ruby on Rails
- How to make a todo list program with Rails
- Ajax on Rails
- Many to Many Tutorial for Rails (PDF)
- Distributing Rails Applications - A Tutorial
- Installing Ruby on Rails with Lighttpd and MySQL on Fedora Core 4
- http://www.ibm.com/developerworks/kr/library/wa-rails1/ Real world Rails: Rails의 캐싱(Caching) (한글)
- http://guides.rubyonrails.org/index.html
- Windows 환경에서 Ruby on Rails (RoR) 설치하기
- 루비 온 레일즈 가이드 (edge) (한글)
기타
- prototype - RubyOnRails에서 Ajax와 Yellow Fade Technique을 지원하기 위해 만들어진 객체지향적 자바스크립트 라이브러리다.