Whiteship's Note


2. 레일스는 어떻게 동작하는가?

RUBY/for Rails : 2007.06.14 00:33


참조 : 레일스를 위한 루비

-애플리케이션 개발 과정
1. 모델 구현
2. 컨트롤러 구현
3. 뷰 구현

-레일즈의 MVC
모델: ActiveRecord - actionpack에 속함
뷰: ActionVIew - actionpack에 속함
컨트롤러: ActionController - activerecord에 속함

gems 폴더 아래에 위치 합니다.
사용자 삽입 이미지

- Rails 샘플 애플리케이션 개발하기
1. 모델 구현
    - 테이블의 이름은 복수형
    - id라는 필드가 있어야 함
    - y가 x에 속하면 y테이블에 x_id가 있어야 함
    - SQL로 테이블을 만들어도 되고
    - 레일즈의 마이그레이션을 사용해도 된다.
    - 모델사이의 연관 설정하기
       - 속한다. belong_to
       - 가지고 있다. has_many
2. 컨트롤러 구현
    - 액션 구현
    - 전체 컨트롤러를 나타내는 ApplicationController
3. 뷰 구현
    - layout "레이아웃 파일 이름" :: 레이아웃 설정
    - 레이아웃의 컨텐츠가 들어갈 위치에 <%= @content_for_layout %> 삽입
    - <% @composer.each do |composer| %> :: JSTL의 <c:forEach /> 와 비슷한 것
4. 접속하기
    - 첫 페이지 변경하기 :: conflg/routes.rb 파일에서 설정
    - 예) map.connect '', :controller => "main", :action => "welcome"

- 래일즈 애플리케이션 생명주기
1. 클라이언트가 서버로 요청을 보냄
2. 디스패처가 요청 받아서 담당할 컨트롤러 찾음
3. 요청을 처리하고 해당 액션과 연결되어 있는 뷰로 결과를 랜더링
4. ERb가 루비 코드를 변환해서 HTML 완성후 응답을 돌려줌
5. 클라이언트에서 HTML 확인

'RUBY > for Rails' 카테고리의 다른 글

2. 레일스는 어떻게 동작하는가?  (0) 2007.06.14
1. 루비는 어떻게 동작하나?  (0) 2007.06.06
top

TAG RoR, RoR MVC

Four Days on Rails 번역 완료



원문 : http://rails.homelinux.org/
한글판 :
후기 :
대엽님의 댓글로 시작하여 "Four Days on Rails" 번역을 완료했습니다. 1,2장은 대엽님. 3,4장은 제가 번역을 했고 편집은 전부 대엽님이 해주셨습니다. 완전 깔끔한 편집에 놀랐습니다. 대단해요.

이 글을 보기전에 정말 간단한 따라하기 글이 있어서 그걸 보고나서 놀랍다는 생각은 했지만 scaffold로 코드 생성한 다음에는 뭘 어떻게 고쳐야 할지 몰랐었는데 저 글을 보면 대략 어떤 작업들을 해서 커스터마이징 해나가는지 파악할 수 있습니다.

Scffold로 코드를 생성하는 것은 간단하지만 원하는 웹 애플리케이션으로 만들려면 역시 상당한 노력이 필요하리라는 것을 짐작하기에 충분했으며 공부할 것도 적지 않다는 것을 느낄 수 있었습니다.

관심있으신 분들은 보시다가 개선사항에 대한 피드백을 주시면 감사하겠습니다.

사용자 삽입 이미지
조만간 저위에 다음과 같이 한줄이 추가 되면 또 포스팅 하겠습니다. 헤헷
  • Four Days on Rails(Korean) .pdf format(967k) (Dae-yeop Lee, Kee-sun Baek)
top


RoR vs Java

RUBY/Getting Started : 2007.06.09 09:47


RoR vs Java

JavaBeans, Spring, Tapestry, Hibernate and Own Standard Jar
vs
RoR

관련된 영상으로 Ruby vs PHP도 세 개 정도 있던데 완전 안습입니다.ㅋ

외국인들도 '자르'라고 읽네요. ^^;

'RUBY > Getting Started' 카테고리의 다른 글

RoR vs Java  (2) 2007.06.09
Eclipse에서 Ruby사용하기.  (0) 2006.09.22
Ruby in Twenty Minutes 4  (0) 2006.09.21
Ruby in Twenty Minutes 3  (0) 2006.09.20
Ruby in Twenty Minutes 2  (2) 2006.09.19
Ruby in Twenty Minutes 1  (0) 2006.09.18
Ruby 설치하기  (0) 2006.09.16
top

TAG RoR

rails로 생성한 scaffold 코드 살펴보기 - View

RUBY/on Rails : 2007.05.27 10:31


View는 세 가지 구성요소로 이루어져 있습니다. Layout, Template, Partial 이 세가지 입니다. 각각의 관계를 그림으로 나타내면 다음과 같습니다.
사용자 삽입 이미지
Layout 은 각각의 Template 앞 뒤에 해당하는 HTML 을 넣을 수 있습니다.
Template 은 각각의 페이지에 해당하며
Partial 은 각각의 페이지 구성요소 중에 여러 페이지에서 사용할 부분을 따로 빼낸 부분입니다.
사용자 삽입 이미지
위 표에 각각의 default name이 적혀있으며 파일이 위치 할 폴더를 보여주고 있습니다.

Layout
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  <title>Categories: <%= controller.action_name %></title>
  <%= stylesheet_link_tag 'scaffold' %>
</head>
<body>
<h1><%=@heading %></h1>
<p style="color: green"><%= flash[:notice] %></p>

<%= yield  %>

</body>
</html>

스케폴드에서 만들어준 레이아웃 코드입니다.
스타일 시트는 따옴표 사이에 이름을 주면 rails의 웹 기본 폴더인 public의 하위 디렉토리 stylesheets 밑에 위치한 파일을 찾게 됩니다.
사용자 삽입 이미지
파란색 부분의 코드는 임의로 넣어준 것입니다. 각각의 페이지에서 @heading 변수의 값을 바꿔주면 여기서 출력해줄 값도 변하게 됩니다.

Template
<% @heading = "Edit Category" %>
<% form_tag :action => 'update', :id => @category do %>
    <%= render :partial => 'form' %>
    <%= submit_tag 'Edit' %>
<% end %>

<%= link_to 'Show', :action => 'show', :id => @category %>
|
<%= link_to 'Back', :action => 'list' %>

@heading 변수에 Edit Category 라는 값을 주고 있습니다. 따라서 레이아웃에서 이 값을 받아서 화면에 출력하게 될 것입니다. 그리고 여기서 주목할 부분은 빨간색 부분인 render :partial 입니다. 저 코드가 위치한 자리에 form이라는 partial을 사용하라는 의미 인 것 같습니다. 그럼 _form.rhtml을 찾아서 저 위치에 포함시켜 줍니다.

Partial
<%= error_messages_for 'category' %>

<!--[form:category]-->
<p><label for="category_category">Category</label><br/>
<%= text_field 'category', 'category', "size"=>20, "maxlength"=>20  %></p>

<p><label for="category_created_on">Created on</label><br/>
<%= datetime_select 'category', 'created_on'  %></p>

<p><label for="category_updated_on">Updated on</label><br/>
<%= datetime_select 'category', 'updated_on'  %></p>
<!--[eoform:category]-->

_form.rhtml 파일입니다.
맨 윗 부분은 이전 글에서 예상했던 것 처럼 에러 메시지를 출력하는 부분이 맞습니다.
파란색 부분은 별도로 추가해준 부분입니다.
여기서 살펴볼 코드는 빨간색 부분입니다. text_field 는 보여줄 <input /> 의 타입을 지정해 주는 것으로 예상이 되며 첫 번째 인자 'category'는 테이블이고 두 번째 인자 'category'는 테이블의 컬럼 이름입니다.
top

TAG RoR, View

rails로 생성한 scaffold 코드 살펴보기 - Controller

RUBY/on Rails : 2007.05.26 23:42



class CategoriesController < ApplicationController
  def index
    list
    render :action => 'list'
  end

컨트롤러의 첫부분 입니다. list 메소드를 호출하고 list라는 이름의 뷰를 사용하도록 render :action 을 사용합니다.

  def destroy
    Category.find(params[:id]).destroy
    redirect_to :action => 'list'
  end

컨트롤러의 마지막 부분으로 지우고 난 뒤 list 페이지로 이동하도록 redirect_to :action 을 사용합니다.

컨트롤러 곳곳에서 사용하고 있는 find, find_all, new, save, update_attributes, destroy 이런 메소드들은 ActiveRecord에 있는 메소드를 사용한다고 합니다. ActiveRecord에 대한 공부가 필요하군요. 이 전 글에서 제가 궁금해 했었던 Dao 역할을 하는 녀석이 바로 이 녀석이였던 것 같습니다.

RadRails의 RI 탭에서 검색하면 바로 레퍼런스를 참조 할 수 있습니다. 그런데 조금 오래 걸립니다. 뻗어버린 줄 알았습니다...
사용자 삽입 이미지



top


Aptana+RadRails와 Instant Rails 빨리 다운 받기

RUBY/on Rails : 2007.05.25 22:28


Aptana + RadRails 빨리 다운 받기
Instant Rails 빨리 다운 받기
둘 다 window 용입니다.
사용자 삽입 이미지사용자 삽입 이미지

AJN 서버를 이용했습니다. 도통 느려터져서(제가 받을 땐 30~50kb/s정도 나오던데요.) 답답하신 분들은 위 링크 받으시면 됩니다.



top


Rolling with Ruby on Rails Revisited 실습 후기

RUBY/on Rails : 2007.05.25 12:12


와 세상에 이렇게 간단하다니;;; 정말 RoR 장난아니네요.
- Rolling with Ruby on Rails Revisited, 번역 기사
- Rolling with Ruby on Rails Revisited2, 번역 기사
위 글 두개를 참조 하며 따라해 보았습니다. 번역 기사에 오타(특히 코드 주변)[각주:1]가 있긴 하지만 화면 캡쳐 한 걸 보면 쉽게 따라하실 수 있습니다.

그 전에 설치와 서버 구동에 관한 부분은 위 글과 달리 http://www.rubyonrails.org/down 이 글을 참조 했습니다.

프로젝트 만드는 방법
rails 프로젝트 패키지명

DB 이름 convention
프로젝트 홈 이름_development

DB 설정
비번 없는 root 계정에 위의 DB 이름을 defalut로 사용하기 때문에 별다른 설정이 필요 없을 수도 있습니다.
프로젝트홈/config/database.yml

Scaffold로 기본적인 CRUD를 위한 모델, 컨트롤러, 뷰 생성하기
ruby script/generate scaffold 모델명 컨트롤러명

서버 구동 하기
ruby script/server

서버 접속하기
http://localhost:3000

서버 멈추기
Ctrl + c, Ctrl + z, Ctrl + x 셋을 번갈아 가며 눌러보다 보면 멈추게 됩니다. [각주:2]

프로젝트 구조
- 프로젝트 홈
사용자 삽입 이미지

- app
사용자 삽입 이미지

와 이걸로 게시판 만들면 정말 5분만에 만들겠네요. 예제 따라하면서 자동으로 만들어 주는 화면과 컨틀롤러들이 동작하는 걸 보고 깜짝 놀랐습니다. 아직 화면을 바꾸고 컨트롤러의 동작을 바꾸지는 못하지만 이런 기본 포맷만 만들어서 보여주기에는 더없이 좋은 것 같습니다.

좀 더 공부해서 화면과 컨트롤러와 모델을 내 맘대로 수정할 수만 있으면 지금 Spring, Hibernate로 하고 있는 학교 프로젝트들을 좀 더 쉽게 만들 수 있을 것 같다는 느낌이 듭니다.

과연 내 맘대로 주무룰수 있을 때 까지 공부하는게 얼마나 힘들지 모르겠지만 좋은 번역서들과 책들이 나오고 있기 때문에 재밌게 공부할 수 있을 것 같네요. RoR 멋져효~
  1. Reflection을 반사라고 번역한 부분이 꽤 인상적이였습니다. [본문으로]
  2. 콘솔창이 느리게 반응해서 어떤 키로 멈췄는지 모르겠네요;; 아마도 c 일듯. [본문으로]
top

TAG ol, RoR