1. 루비 온 레일즈란?

한국어 위키백과에 따르면 루비 온 레일즈(Ruby on Rails)는 다음과 같다.

루비 온 레일즈(Ruby on Rails)는 루비로 작성된 MVC 패턴을 이용하는 오픈 소스 웹 프레임워크이다. 줄여서 레일즈라 불리기도 한다. 덴마크의 David Heinemeier Hansson에 의해 시작되어 오픈 소스로 개발되고 있다. 특히 데이터베이스를 이용한 웹 애플리케이션을 개발할 때 반복되는 코드를 대폭 줄여 개발 기간을 단축하는 것으로 인기를 끌고 있다.

"루비로 작성된 MVC 패턴을 이용하는 오픈 소스 웹 프레임워크"라고 한다. 그럼 루비에 대해서도 알아봐야 하겠다. 역시 한국어 위키백과를 읽어보자.

루비(Ruby)는 마츠모토 유키히로(松本行弘 まつもとゆきひろ)가 개발한 동적 객체 지향 스크립트 프로그래밍 언어이다. 루비는 순수 객체 지향 언어이다. 루비에서의 정수나 문자열 등을 포함한 데이터 형식 등 모든 것이 객체이다.

기능에는 클래스 정의, 가비지 컬렉션, 강력한 정규 표현식 처리, 다중 스레드, 예외 처리, 반복, 클로저, Mixin, 연산자 오버로드 등이 있다. 구문은 ALGOL계를 계승하면서 가독성을 중시하고 있다.

오랫동안 언어 사양이 명문화되지 않고 마츠모토의 구현 언어 사양에 준하는 것으로 간주되어 왔지만, 2010년 6월 RubySpec으로 언어 사양을 책정 중이다.

어려운 말이 많이 나온다. 더 이상 설명하지 않는다.

Yukihiro Matsumoto.JPG

Yukihiro Matsumoto (출처: 위키 미디어 커먼즈 (Free Media Repository))

통칭 Matz라고 불리는 그의 별명은 ‘루비의 아빠(Rubyのパパ)’ 이다.


2. 루비는 언제 처음 나왔을까?

루비 홈페이지의 About Ruby란을 읽어보면 1995년임을 알 수 있다. (https://www.ruby-lang.org/en/about/) 벌써 20년이 넘었다. 영문 위키에 따르면 루비가 처음 고안된 것은 1993년(마츠모토는 대학 졸업 후 프로그래머로 일하고 있었다), 그리고 1995년 12월 21일 일본 뉴스 그룹을 통해 최초 버전인 0.95 버전이 발표되었다.

다시 루비 온 레일즈로 돌아가자. "레일즈"라고도 불리는 루비 온 레일즈는 루비가 처음 나온지 10년 후인 2005년에 나왔다. 그리고 지금은 5.0.x 버전이 발표되어 있다.

Ruby On Rails Logo.svg

레일즈를 하면 돈을 벌 수 있다는 기사도 있다. 2016년 초 ciokorea.com에서는 "연봉 인상을 노린다면... '핫' IT 스킬 20선"이라는 기사에서 레일즈를 4위로 꼽았다. 19.9% 연봉 인상을 할 수 있단다. (http://www.ciokorea.com/news/28537)


3. 루비라는 이름은?

루비 개발당시 당시 Perl이 유행하고 있었는데 이는 진주라는 의미의 Pearl과 철자는 다르지만 발음은 같았다. 여기서 착안, 보석이름을 찾기 시작했으며 "다이아몬드", "에머랄드" 등도 물망에 올랐으나 부르기 쉬운 "루비"가 채택되었다.

(출처: ‘루비’의 아빠, 마츠모토 유키히로, http://www.bloter.net/archives/184564)


4. 반드시 루비 온 레일즈?

루비 환경에서 사용 가능한 프레임워크는 오직 레일즈뿐일까? 아니다. 레일즈는 가장 대표적인 프레임워크일 뿐 유일한 루비 프레임워크는 아니다. 레일즈외에도 다음과 같은 프레임워크가 있다.

  • Halcyon
  • Ramaze
  • Padrino
  • Pakyow
  • Sinatra

5. 레일즈의 철학

레일즈의 설계 철학은 DRY, CoC로 대표된다.

  • DRY, Don't Repeat Yourself는 같은 코드를 반복하지 말자는 것이다. 단순히 코드 가독성을 높이는 것뿐 아니라 유지 보수도 쉽게 할 수 있게 된다.
  • CoC는 Convention over Configuration으로 설정보다 규약이 중요하다는 것이다.

이러한 철학을 통해 적은 에포트로도 개발할 수 있게 해준다.


6. 유용한 페이지

간단히 루비를 테스트 해볼 수 있는 페이지 : http://tryruby.org/levels/1/challenges/0