Ruby on Rails 시작하기

최근 몇 년사이에 웹프레임워크(web framework)의 발전은 눈부신 것 같다. 이제 HTTP request를 직접 받아서 parsing하고, DB query를 string으로 만들어 날리고,  결과를 받아 이것을 다시 로직에 맞게 처리해서 HTTP response 만들거나 또는 HTML 페이지를 동적으로 생성하는 작업들을 수동하는 처리하는 웹 개발자는 많지 않은 것 같다. 특히, 일반적으로 많이 만드는, 예를 들어 간단한 블로그 사이트 같은 경우에는 이러한 웹프레임워크를 이용하면 몇 시간안에 그럴싸한 사이트를 만들 수 있다. 10여년 전에 CGI programming이라 불리던 방식으로 하면 몇 주가 걸릴만한 작업을 말이다.

각설하고, 최근 많이 사용하는 웹프레임워크의 하나인 Ruby on Rails에 대해 시작할 수 있는 몇가지 정보를 정리해본다. 단, 나 역시 Ruby on Rails는 아직 잘 모르는 관계로 틀린 내용이 있을 수 있으니 꼭 신고해주길 바란다.

1. Ruby on Rails?

1.1 Ruby

Ruby는 마츠모토 유키히로 라고 하는 멋진 일본인 개발자가 만든 언어이다. 다음과 같은 특성이 있다.

  • Interpreter의 도움을 받아 실행되는 script language
  • Static한 type이 없는 dynamic language
  • Functional language
  • Object-oriented language

다양한 특성이 있기 때문에 잘 이용하면 정말 powerful하게 사용될 수 있는 언어이다. 특히, functional language의 여러 feature를 차용하고 있어서, 프로그램을 만들어내는 프로그래밍을 하는 meta-programming이 가능하다. 그래서 Domain에 특화된 언어, 즉 domain specific language(DSL)을 만들 수 있다. 다음에 설명할 Ruby on Rails 또한 웹개발에 특화된 DSL이라고 할 수 있다.

1.2 Ruby on Rails(RoR)

37 Signals라는 회사에서 제작한 웹개발 프레임워크이다. 처음에는 이 회사 내에서 좀더 쉽게 자사의 제품을 만드는데 이용하기 위해 만들었다가, 이것을 정리해서 공개했는데 이것이 대박이 났다. RoR은 다음과 같은 특성이 있다.

  • 웹개발을 스파게티 코드가 아니라, elegant한 MVC 구조로 제작 가능하게 함
  • 반복되는 코드를 copy & paste로 재사용하는 것이 아니라, 공용으로 쓸 수 있도록 함
  • 자주 만드는 코드는 프레임워크 레벨에서 generate시켜서 노가다 작업을 줄임
  • Object Relation Mapping 기능을 제공
  • 반복되는 DB schema변경을 효율적으로 관리

RoR의 성공은 Ruby외의 Java, Python등의 다른 언어에서도 RoR과 같이 심플하면서도 생산성을 높일 수 있는 프레임워크의 등장을 가져왔다고 생각한다. 최근 새롭게 떠오르는 Java의 웹프레임워크인 ‘Play framework‘도 그중 하나이다.

2. Tutorial

공짜면서 좋은 튜토리얼이 정말 많다. Ruby on Rails 공식 사이트에 올라온 tutorial도 요점 중심으로 정리가 잘 된 것 같아, 시작점(starting point)로 좋은 것 같다.

http://guides.rubyonrails.org/getting_started.html

Getting Started와 Model, View, Controller에 대한 부분까지 읽어보고, 나머지는 필요에 따라 읽어 보면 될 것 같다. 이 튜토리얼을 읽으면 전체 구조 및 동작 방식에 대해 이해가 갈 것 같다.

이제 프로젝트를 시작하자. 튜토리얼을 너무 많이 보면 졸리고, 머리에도 잘 안들어온다. 부딪히면서 배우자.

실제로 뭔가 프로그래밍을 진행하다 보면 ‘이건 어떻게 하지?’, ‘이렇게 귀찮은 작업은 뭔가 더 엘레강트한 방법이 있을 것 같은데…’하는 물음을 갖게 될 것 같다. 바로 그때 다음 2가지 소스를 통해 심도 있는 공부를 좀더 진행 할 수 있다.

2.1 Railscasts

컴퓨터 앞에 바짝 앉아 article들을 정독하는 스타일이 아니라면,  Railscasts는 좋은 대안이다. 비디오로 주제별로 짤막하게 코드와 함께 설명해주고, 친절하게 데모도 해준다.
http://railscasts.com/

참고로, 이 비디오 튜토리얼에 쓰인 폰트, 배경 색깔이 참 깔끔하고 예쁘다고 생각하면, 웬만한 IDE는 railscasts 테마를 검색하면 쉽게 찾을 수 있으니 이용해 보기를.

2.2 Rails Recipes

아쉽게도 무료는 아니지만, 유용한 정보가 많은 책이다. Advanced Rails Recipes라는 새로운 버전의 책도 있다고 한다.
http://pragprog.com/book/fr_rr/rails-recipes

3. 개발 환경(Integrated Development Environment, IDE)

많은 RoR 개발자들은 IDE없이 에디터만으로 개발한다고 한다. 하지만, 이미 나와 같이 debugger, auto complete 등의 IDE의 편리한 기능에 spoil된 개발자라면, 에디터만으로 개발하는 건 너무나 개발 생산성 떨어지는 일이다. RoR의 IDE로 많이 쓰이는 IDE는 3가지다 있는 것 같다.

이 3가지 모두 조금씩 써봤는데, 3가지 모두 괜찮은 것 같다. (물론 MS의 Visual Studio 최신 버전에는 많이 부족하지만 ㅎㅎ)
RubyMine은 유료이고, NetBeans는 IDE가 안이뻐서, 나는 Aptana Studio 3를 선택했다. Eclipse 기반 IDE라 기존 Eclipse plug-in이 모두 사용 가능하다는 장점이 있다.

3.1 Aptana Studio 3로 debugging하기

Aptana Studio 3로 debugging을 하기 위해서는 이미 Ruby와 Ruby on Rails가 설치되어 있어야 한다. 그리고, debugging시에 조금 주의해야 할 것이,  반드시 ‘Debug Server’ 메뉴를 통해 시작해야 한다. 나는 보통 Eclipse에서 하던 방식인 ‘Debug As’를 선택해서 ruby application으로 하다가 한참을 해멨다.

이상으로, RoR에 대한 간략한 설명과 튜토리얼, 그리고 IDE에 대해 알아봤다. 이제, 다른 언어/프레임워크에 대해 경험이 있는 개발자 분이시라면 어느정도 작업을 할 수 있는 토대를 마련했으리라고 생각한다.

아, 마지막으로 앞에 내용 중에 불충분한 내용, 틀린 내용, 또는 기타 여러 의견이 있으면 가차없이 알려주시기를!

11 thoughts on “Ruby on Rails 시작하기

  1. 저는 RoR 을 사용하기도 하지만 Framework 을 좋지 않게 보기도 합니다. 이러한 F/W 들은 일반적인 지식과 프로그래밍 언어 이외의 것들을 프로그래머들에게 학습하게 하죠. 그게 앞서의 두가지만큼 자주 그리고 일반적으로 사용되는 것이라면 문제가 덜할텐데, 찾아서 한 번 사용하고 나면 더이상 쓰이지 않거나 혹은 F/W 이 update 되면서 바뀌거나 사라져버리기 일수지요.

    글쎄요, 제가 보기에는 과거 Struts, Spring 이 “어쩔 수 없이” 왕성하게 사용되었지만 (VIEW 에다 JSP 떡칠하는 식의) 부작용이 더 심했던 후로, 많은 개발자들이 “No more framework!” 을 외치고 있는 것 같아요.

    • 정말 Rails를 보면서, framework이 좋기도 하지만, 안좋기도 하다는 걸 많이 느꼈습니다. 잘 알면 빨리 만들 수 있는데, 익숙해 지는데 꽤 시간이 걸리더라구요. magic처럼 내부적으로 처리해 버리는 것도 많고, ruby라는 언어 덕에 functional language적인 특징까지 있어서 처음에 소스 보기도 참 난해 했었습니다.

      그런데, 요즘 Rails로 toy를 만들고 있는데, 개발 시간이 엄청 줄어든 거 같기는 합니다.

      앞으로 좀더 연구해 보아야 할 것 같습니다.

  2. 루비를 안 지는 오래 되었는데 외면 중이었습니다.
    앱서버로 쓰면 좋을 것 같아서 버전 3 들어와서야 조금씩 보고 있네요.

    ps. ppassa팀장님 먼저 다녀가셨군요.

    • Ruby on Rails가 좋기는 한데, 처음에 아무래도 그 구조와 라이브러리에 익숙해지려면 좀 시간이 걸리는 듯.

      혹시 silverlight를 써서 sever-side의 html view generation은 별로 없고 http request를 처리하는 controller 위주라면, Sinatra라고 하는 Ruby용 lightweight framework을 추천합니당~

  3. RoR 초보자입니다.
    Aptana Studio 3로 hello world 내보내는 test 프로젝트 구성하고 (여기까지도 구성하는것도 정말 간고했습니다.)

    Run Server는 제대로 되는데
    ‘Debug Server’ 하니 이렇게 나와요. (ㅠㅠ)

    c:/RailsInstaller/Ruby1.9.3/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs’: Could not find ruby-debug-base (~> 0.10.3.0) amongst [actionmailer-3.2.1, actionpack-3.2.1 …. (너무 길어 skip )
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:772:in `block in activate_dependencies’
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:761:in `each’
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:761:in `activate_dependencies’
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:745:in `activate’
    from c:/RailsInstaller/Ruby1.9.3/lib/ruby/site_ruby/1.9.1/rubygems.rb:1209:in `gem’
    from c:/RailsInstaller/Ruby1.9.3/bin/rdebug-ide:18:in `

    도움 부탁드립니다.

    PS : 좋은글 올려주셔셔 정말 감사합니다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s