2008.05.14 18:21

Ruby on Rails 시작하기(5).. 간단한 컨트롤러 작성

이번에는 간단한 컨트롤러를 만들어서 실행해 보도록 하겠습니다. 드디어 몇줄 코딩에 들어가는군요

Ruby on Rails 초간단 Controller

앞서 만든 프로젝트의 /app/controllers/ 에 greeting_controller.rb 를 생성합니다.

사용자 삽입 이미지


if __FILE__ == $0
  # TODO Generated stub
end

class GreetingController < ApplicationController
  def index
    render :text => "<h1>Welcome to your first Rails application</h1>"
  end
end

그리고 해당 컨트롤러에 위와 같이 코드를 작성합니다.

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

index 라는 메소드를 작성합니다.

render :text=> "어쩌구 저쩌구" 이 부분은 뭔진 몰라도 딱 보기에 해당 텍스트를 뿌리라는 의미 같습니다.
뭔진 모르지만 대충 예상은 갑니다. ㅋㅋ

자 이제 소스 코드를 저장하고 서버를 실행시켜서 아래 url로 접속을 해보도록 하겠습니다.
http://127.0.0.1:3000/greeting
사용자 삽입 이미지

이런 젠장... 뭔가 페이지가 나올줄 알았는데 에러가 나는군요... 딱 봐도 DB 접근 권한 에러입니다.
근데 이녀석 내가 DB 접근 관련해서 셋팅도 안했는데 지가 알아서 접근할려다가 오류를 내뱉는군요 -_-

그럼 오류 원인을 찾아서 해결해 봅시다. 해당 권한은 접근 권한 오류이기 때문에 권한을 풀어줘야 겠죠
아래의 쿼리를 실행시켜 줍니다. 원래는 root 계정으로 접근을 하려고 했지만 root 계정을 사용하진 않겠습니다.
그냥 대퉁 test 계정을 하나 생성해서 사용해 보도록 하죠.

grant all privileges on *.* to test@'localhost' identified by 'test' with grant option;

flush privileges;

그럼 실제로 DB 설정을 어디서 하는지 살펴보도록 하겠습니다.
프로젝트의 config/database.yml 이라는 녀석을 열어보면 아~ 요녀석이로구나! 를 알 수 있습니다.

사용자 삽입 이미지

이 설정 파일에 보면 adaptor, encoding, database, user, password, host 에 대해서 각 환경별로 셋팅을 한것을 알 수 있습니다.

우리는 test 계정에 패스워드가 test 인 계정을 사용할 것이고, 로컬에 있는 녀석을 사용할 것입니다.
그리고 한가지, "RubyStudy1_development" 어디 듣보잡이 여기 굴러들어왔는지... 일단 기본적으로 프로젝트 생성하면서 기본 네이밍에 의해서 생성된 녀석인가 봅니다.

그럼 우리도 DB를 만들어줘야 겠죠?

사용자 삽입 이미지

같은 이름으로 DB를 생성하였습니다.

자 그럼 이제 서버를 리스타트 해주고 http://127.0.0.1:3000/greeting/index 로 접속해봅시다~

사용자 삽입 이미지

자~ 드디어 뭔가를 하는 컨트롤러를 작성하고 서버에 올리고 페이지를 띄워보는 것까지 해보았습니다.

여기서 한가지 눈여겨 볼것이 있습니다. 바로 URL 이죠 딱히 context 를 지정해 주지 않았는데도 어떻게 URL만으로 해당 controller를 찾고 해당 action을 취할 수 있을까요...

http://127.0.0.1:3000/greeting/index

여기서 greeting 은 컨트롤러를 가르키게 되고, index 는 해당 액션을 가르키게 됩니다.

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

이제 슬슬 뭔가 보이기 시작하십니까? 아직도 가야할 길이 멀군요 ㅋ...
그럼 앞으로도 계속 하나씩 하나씩 파헤쳐 보도록 하겠습니다~
Trackback 0 Comment 1
  1. Favicon of http://4434.quiltersfedway.net/ghdes.php BlogIcon planchas ghd 2013.07.29 01:16 address edit & del reply

    눈을 감아봐 입가에 미소가 떠오르면 네가 사랑하는 그 사람이 널 사랑하고 있는거야.