[RoR 학습] 루비온레일즈 설치와 Hello World 찍기!

방학을 맞아 전부터 머릿 속에 구상하던 아이템을 하나 구현하려고 마음먹었다. 웹애플리케이션 개발을 뭘로 할까 하다가 전부터 콕 집어두었던 루비온레일즈를 선택했다. 루비는 프로그래밍 언어이고, 레일즈가 루비를 기반으로 한 웹프레임워크이다. 이전부터 페북과 구글 그룹스에서 루비개발자 그룹에 가입해서 눈팅을 해왔던 터라 대충 루비의 장단점을 알고 있었다. 간략하게 이야기하면 루비가 가지고 있는 최대의 장점은 개발생산성이고 단점은 퍼포먼스 쯤이 되겠다. 지금 내 상황을 고려했을 때 대학원 공부하면서 그 때 그때 구상한 아이디어를 빠르게 구현할 수 있고 퍼포먼스가 당장 중요한 이슈가 아니기 때문에 루비온레일즈가 가장 적절한 선택인 것 같다 1.

File:Ruby on Rails logo.svg

개발언어를 선택하고 나서 학습을 위해 선택한 참고도서는 입문서로 가장 유명한 “레일스와 함께하는 애자일 웹 개발(4판) 2“이다. 인사이트 출판사에서 4판은 E-Book으로도 판매하고 있어서 이북으로 구매해서 아이패드에 넣고 보기도 좋을 것 같아 이 책으로 선택했다.
Norway Oakley sunglasses
머리말에서 의미있는 점은 레일스 프레임워크에 관련된 이슈였다. 레일스 기반으로 개발을 하려면 레일스 프레임워크에 대한 학습비용과 프레임워크에 종속될 수 있다는 문제가 있기 때문이다. 그러나 레일스가 애자일방법론과 MVC 패턴을 극대화해서 녹여 낸 프레임워크라 하니 현장에서 급박한 상황이 아닌 공부하는 학생의 입장에선 레일스 프레임워크를 사용하면서 레일스 개발의 철학을 이해한다는 측면에서 나쁠 것이 없을 것 같다. 책을 통해 기본적인 개발능력을 갖추고 나면 그 때 필요에 따라 시나트라와 같은 다른 프레임워크도 경험해 볼 수 있으니까 말이다. 일단 시작하는 입장에서는 찬밥 더운밥 가릴 처지는 아니지만 적어도 역자가 집고 넘어가는 이야기는 흘려듣지 말아야겠다.
ray ban sunglasses Low Price
서두가 길었으나, 어찌 되었든 이 포스팅은 순전히 실습한 내용의 복습 차원에서 글로 적은 것이다. 따라서 내용상의 오류와 문제가 있을 수도 있다.
nike air max Sweden
1장과 2장에서는 모든 언어의 출발과 동일하게 개발환경 구축과 Hello World 찍기이다. 기본적으로 루비는 윈도우 환경에서 작업하기는 상당히 애로하기 때문에 OS 환경은 제일 간편한 Ubuntu 12.04(LTS) Client 버전을 설치했다. 설치한 후에는 책에서 제시한 대로 다음과 같이 최소한의 기본적인 패키지들을 설치했다.

설치 중간에 mysql 비번 입력하라고 할 때 입력하면 된다. 그리고 나서 루비를 설치해야 하는데 이 부분은 책과 조금 다르다. 루비 설치를 간펴하게 하기 위해서 보통 RVM을 많이 사용하는데 rvm 사이트 주소가 변경되었다. 따라서 책에 있는 url이 아닌 다음의 url로 rvm을 설치 해야 한다.

설치를 마친 후에는 필요한 추가 라이브러리를 설치하는 작업을 해야 하고 바로 루비를 설치하면 된다. 루비 버전은 책에서 설치한 1.9.3 버전을 설치했다. 루비 설치후 버전 확이으로 설치가 정상적으로 됬는지 확인하고 바로 동일한 방법으로 레일스 설치와 버전 확인을 했다.

여기까지 진행하는데 역시 책대로 되지 않는 부분이 몇가지 있다. 우선 rvm이 제대로 작동을 하지 않는 것이다. terminal의 설정 문제인 것 같고 알려준 url 3로 찾아가 설정을 변경하니 잘 되었다. 두 번째는 레일스를 설치하고 나니 책에서 사용한 버전과 달리 최신 버전인 4.0.0이 설치되었다. 나중에 실습할 때 버전 차이 때문에 호환되지 않는 것이 있을까봐 책에 나온 방법대로 3.2 버전도 설치한 후에 3.2버전을 사용하게 끔 설정을 변경했는데 전혀 말을 듣지 않는다.; 이 부분은 나중에 다시 확인해 볼 예정이다. 일단은 4.0.0 버전으로 시작하기로 했다.
Oakley sunglasses Korea
이후 기타 편집기나 기본적인 개발환경 설정을 맞춘 후 mysql2, sqlite3 어댑터만 gem install 명령어를 사용하여 추가해 주면 모든 설치가 끝!

앞으로 실습할 폴더를 하나 생성하고 이 폴더에서 다음과 같은 아주 간단한 명령어 하나면 웹애플리케이션 폴더가 하나 생성된다.

그리고 나서 rails가 기본으로 제공하는 웹서버를 작동시켜 localhost:3000으로 바로 확인해 볼 수 있다.

참 간단하다.
nike air jordan 4
Hello World를 찍기 위해서 페이지를 생성하는 것도 간단하다. 다만 레일스는 철저하게 MVC패턴을 따르고 있기 때문에 내 맘대로 html 페이지를 생성하면 안 된다. 이미 처음부터 폴더구조가 MVC 패턴에 따라 나뉘어져 있기 때문이다. 다만 이때도 아주 간단한 명령어 하나면 위에서 자동으로 소스를 생성해 주는데 다음 명령어는 say라는 컨트롤러를 생성하고 각각 hello와 goodbye라는 액션을 생성하겠다는 뜻이다. 놓치면 안 되는 점은 이 명령어는 반드시 생성한 웹앱 폴더에서 실행해야 작동한다는 점이다.

와우 자동으로 파일이 생성되었다. 이제 브라우저에서 localhost:3000/say/hello로 들어가면 Hello가 찍힌 감동적인 모습을 볼 수 있다. 쉽다. 미리 생성된 소스는 {앱폴더}/app/views/say/hello.html.erb 이다 4. 뒤에 erb 확장자는 루비 인터프리터가 읽기 위한 것이다. 왜냐하면 이 소스 안에 직접 루비 코드를 JSP와 비슷하게 <%= %> 이 안에 넣어서 쓸 수 있기 때문이다. 책에 나온 예제대로 Hello World를 찍으면서 간단하게 현재시각을 보여주는 루비코드가 포함된 소스를 보자.

특별한 것이 없다. 중간에 루비소스코드만 있다는 것을 빼면 말이다. 마지막으로 html 코드에서는 view만 담당하고 시간을 보여주는 역할을 컨트롤러에게 넘겨보면서 마무리하자 컨트롤러 소스는 {앱폴더}/app/controllers/say_controller.rb 이다. 이 파일을 열어서 다음과 같이 수정하자.

여기서 사용하지는 않았지만 딱 봐도 처음 생성한 say 컨트롤러 파일 안에 hello와 goodbye 액션의 메소드가 미리 정의된 것을 확인할 수 있다. 여기서 우리가 필요한 time 부분만 변수를 선언해서 시간을 받고 @time 변수를 html 코드에서 Time.now 대신에 쓰면 된다.
Oakley sunglasses New Zealand
1,2강 실습하면서 느낀 루비는 참 간결하다는 점이다. 명령 몇 줄 치고 나서 웹애플리케이션이 간단하게 구동된다는 점은 Java 기반의 웹 개발할 때와는 다른 쾌적함인 것 같다. 앞으로 재미있을 것 같다. 문제는 대학원 학업보다 이게 우선되면 안되는데 조심해야겠다.

Notes:

  1. 물론 퍼포먼스도 여러가지 방법을 통해서 해결 가능한 것 같다.
  2. http://ebook.insightbook.co.kr/ebooks/4fbad65fbf6e100370000002
  3. https://rvm.io/integration/gnome-terminal
  4. goodbye도 이름만 다르지 동일하다.