Rails 프로젝트 생성 - (2) -

2008. 8. 7. 15:31
 
 
이제 생성한 프로젝트에 컨트롤러를 만들어 보겠습니다.
컨트롤러는 루비 언어로 작성되게 됩니다.

생성한 프로젝트의 /app/controllers 폴더에
hello_controller.rb 파일을 생성합니다.
사용자 삽입 이미지

생성한 파일에 다음 코드를 작성합니다.
if __FILE__ == $0
  # TODO Generated stub
end

class HelloController < ApplicationController
  def index
    render :text => "<h1>Hello World!</h1>"
  end
end

간단히 설명하자면 HelloController 라는 클래스를 작성합니다. < 표시는 상속을 의미합니다.
루비의 클래스 상속은 자바처럼 단일 상속만 지원 한다고 합니다. 일단 예제에 나와있는 것처럼 ApplicationController 를 상속받고 index 라는 메소드를 작성합니다.

다음으로 데이터베이스를 설정합니다.

/config/database.yml 파일을 열어보면 다음과 같은 내용들이 나옵니다.

development:
  adapter: oracle
  database: Hello_development
  username: Hello
  password:

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: oracle
  database: Hello_test
  username: Hello
  password:

production:
  adapter: oracle
  database: Hello_production
  username: Hello
  password:

여기서 각 항목에 현재 시스템의 데이터베이스를 설정한다.
데이터베이스가 설정이 안되어 있을 경우 서버가 시작을 못한다.

다음과 같이 설정하면 제대로 작동할 것이다.
  adapter: oracle
  database: XE
  username: root
  password: 123456

콘솔창에 다음과 같은 내용이 뜬다면 서버가 제대로 로딩 된 것이다.

** Mongrel 1.1.5 available at 127.0.0.1:3000
** Use CTRL-C to stop.

이제 웹브라우저에서 다음에 접속해보자.
http://127.0.0.1:3000/hello/index

사용자 삽입 이미지

컨트롤러에서 작성한 코드가 잘 보여지게 된다 .
따로 컨텍스트를 지정하지 않았는데도 잘 보여지는 이유는 다음과 같다.

웹 서버는 들어오는 요청을 디스패쳐(dispatcher)라고 부르는 레일즈 프레임워크 내부의 루비 스크립트로 연결시키게 됩니다. 레일즈는 각 웹 서버 마다 하나의 디스패쳐가 존재하고, 이 디스패쳐는 URL을 분석하여 적절한 컨트롤러의 액션을 호출하게 됩니다. 그다음 컨트롤러의 액션은 모델을 호출하고 마지막으로 뷰를 호출하게 됩니다.


슈플 프로그래밍/Ruby on Rails