축 처져가는 말년에 들려온 놀라운 소식이다.

The day Merb joined Rails내년에 본격적으로 배포되서 사용될 Ruby 1.9.x 버전과 맞물려 Rails와 Merb의 장점들만 고스란히 스며든 또 하나의 강력한 웹 프레임워크가 탄생하길 기대한다. 하지만, 약간 뒤쳐저서 그 동안 달려온 걸음걸음의 자취를 찬찬히 훑어보고 있는 사람에게는, 어쩌면 따라가기에도 벅찬 급변하는 웹 개발 환경이 마음을 조급하고 약간 걱정스럽게 만들기도 하는 것이 지금의 심정이고, 과연 둘의 장점을 어떻게 서로 잘 녹아들게 해서 어떤 결과물을 보여줄지도 궁금해진다.

아무쪼록, 강력하고 편리한 기능과 빠른 성능을 두루 갖춘, 개발자들에게 행복감을 줄 수 있는 훌륭한 Rails 3 (Merb 2)가 탄생하길…
결국, Rubyist들에겐 DRY한 소식이 아닐까?

한편, Rails 진영에서 이탈했던 Merb 추종자들의 기대반 걱정반이 섞인 반응들

과거 난해하고 너무나도 다양한 Ruby on Rails 어플리케이션 배포 환경 때문에 골치를 아파했던 개발자들에게 반가운 소식이 들려왔다. 일명 Apache의 mod_rails로 불리우는 Passenger가 공식 발표된 것.

Passenger의 설치는 너무나 간단해서, 아래처럼 Passenger gem 설치 후 설치 스크립트를 돌려주면 작업이 완료된다.

$ sudo gem install passenger
$ passenger-install-apache2-module

스크립트를 돌려서 컴파일링을 마치면 Apache 설정 파일에 추가해야 할 몇 가지 설정 사항들을 보여주는데, apache module 추가 관련 설정과 virtual host 용 설정 사항을 참고해서 자신의 사용 환경에 맞게 수정해서 httpd.conf 파일에 복사해 넣는다. 이렇게 해서, Apache를 재시동하면 바로 Rails Application을 손쉽게 Apache 위에 얹어놓고 돌려볼 수 있게 된다. 이렇게 설치는 너무나 간단하지만, 자세한 설치 과정을 담은 screencast도 제공하고 있다.

반가운 것은, 성능면에서 Mongrel 보다도 뛰어나서 거의 Thin에서 돌리는 것과 비슷한 성능을 보여준다는 것. 그리고, 아직 공식 배포는 이루어지지 않고 있지만, Ruby Enterprise Edition과 함께 돌리면 덤으로 33%의 메모리 절약을 기대할 수도 있다니, 이제 배포 환경 때문에 과거 골치를 썩혀왔던 걱정을 많이 덜게 되면서, 앞으로 Rails 어플리케이션의 채택율에도 더 가속도가 붙을 듯.

참고로, Rails 어플리케이션을 재시동하는 방법은 두 가지가 있는데, 하나는 물론 Apache를 재시동해도 되지만, 더 간편한 방법으로 Rails 어플리케이션이 위치하는 root 디렉토리 밑에 tem/restart.txt 파일을 추가하거나 수정해 주면 된단다. 이 작업은 터미널에서 다음과 같이 해주면 손쉬워진다:

$ touch /my_web_app/tmp/restart.txt

아직 다른 Ruby 웹 프레임워크에 대한 지원 계획은 미정이라니, 당장은 Rails만이 가지는 장점으로 남아 있을 듯.

Rails가 버전 2로 갱신한 지도 꽤 되었지만, TextMate에서 사용하되는 Rails bundle은 새로운 기능에 대응하지 못하고 제자리에 멈춘 지 오래다. 그래서, 여기에 만족하지 못하고 자기만의 번들을 수정해서 사용하는 사용자들도 많으리라 생각되는데, 반갑게도 얼마전 Rails 2.x 버전을 위한 새로운 TextMate 번들 개발/관리자가 등장하였다는 소식이 있었다.

이제, 최신 Rails 번들은 요새 많은 주목을 받고 있는 version control system인 Git을 써서, two_point_ooh branch에서 받을 수 있게 되었다.

cd "~/Library/Application Support/TextMate/Bundles/"
mv "Ruby on Rails.tmbundle" "RoR.tmbundle.orig"
git clone git://github.com/drnic/ruby-on-rails-tmbundle.git "Ruby on Rails.tmbundle"
cd "Ruby on Rails.tmbundle"
git checkout --track -b two_point_ooh origin/two_point_ooh
git pull

차후에, 또 갱신된 번들을 받을 때는,

cd "~/Library/Application Support/TextMate/Bundles/Ruby on Rails.tmbundle"
git checkout two_point_ooh  # optional; only if you changed to another branch etc 
git pull

나중에, 공식 Rails 2.0 bundle은 원래의 SVN repository에도 배포될 예정이란다.
참고로, git을 Mac OS X에서 컴파일하는데 약간의 애를 먹었는데, 이 곳에서 간편하게 설치할 수 있는 최신 버전의 git installer 파일을 받을 수 있다.

Rails가 2.0.2로 갱신되면서, 몇몇 추가된 기능들과 함께 기본 데이타베이스가 MySQL 대신에 SQLite3로 바뀌었다는 소식.
그래서, 기존 MySQL을 쓰려면 이제 rails -d mysql app_name 명령을 사용해야 한다.

물론, 이렇게 바뀐 이유는 단지 대부분의 시스템에 SQLite3가 기본적으로 설치되어 있으므로 별다른 데이타베이스의 설치와 조작 없이 쉽게 사용할 수 있다는 이점도 있지만, 그다지 복잡하지 않은 웹 어플리케이션의 경우라면 데이타베이스 전용 서버를 돌릴 필요없이 어플리케이션 자체 내에 심어놓고 돌릴 수 있는 SQLite 만의 장점 때문이리라.

이 기회에 오랜 만에 Leopard에 설치되어 있는 sqlite3를 살펴보니, 설치된 버전(3.4.0)이 최신 버전(3.5.4)과 차이가 난다. 일단 최신 버전을 깔고 보는 성질이라, SQLite Download Page에서 소스를 받아 설치해 둠.

미리 컴파일 된 Mac OS X 용 바이너리 파일도 제공되고 있지만, 시스템에 미리 설치해 놓은 GNU Readline Library와 함께 사용하려면 소스를 다음과 같은 설정으로 직접 컴파일해야 한다.

./configure --prefix=/usr/local --with-readline-dir=/usr/local

요새 계속 추가되는 Rails의 웹 어플리케이션 최적화 기능들은 참 반가운 것들이 많군.

아직 공식적인 발표는 없지만, 이미 정식 Rails 2.0이 배포되기 시작한 모양이다.

아직 너무 이른 탓인지 그냥 $ gem update 명령으로 갱신하려고 하면, activeresource가 설치 안 되는 문제를 보이지만, 다음과 같은 명령으로 무사히 설치할 수 있었다.

$ sudo gem install rails --source http://gems.rubyonrails.org

개인적으로 새로운 버전의 Rails를 설치하면, 갱신된 API도 함께 local에 저장해 놓고 살펴보려고 아래와 같이 새로운 project를 만들어서 rails 버전을 freezing 시킨 후 doc을 추출해 내는 과정을 거치는데, 여기서 문제가 발생.

$ rails new_project
...
$ cd new_project
...
$ rake rails:freeze:gems
Freezing to the gems for Rails 2.0.0
rake aborted!
uninitialized constant Gem::GemRunner

google을 통해 문제의 원인을 찾아보니, RubyGems이 갱신되면서 require rubygems 할 때 자동적으로 gem_runner를 require 해주지 않아서 생기는 문제란다.
앞으로 이 문제가 patch될 예정이라고 하는데, 당장은 아래와 같은 해결 방법을 소개하고 있다.

먼저 gems 디렉토리에 있는 gems/rails-2.0.0/lib/tasks/framework.rake 파일을 열고, 아래와 같이 require ‘rubygems/gem_runner’ 한 줄을 추가해 준다.

deps = %w(actionpack activerecord actionmailer activesupport activeresource)
require 'rubygems'
require 'rubygems/gem_runner'
Gem.manage_gems

patch 후에, $ rake doc:rails로 무사히 rails api를 추출해서 프로젝트 디렉토리 속 doc/app에 들어 있는 api 문서를 웹 브라우저의 책갈피에 등록 완료.

아직 Rails 1.2.x에서도 버벅이는데 새로운 버전이 나와버렸으니 슬쩍 마음만 조급해지는군.
Rails 2.0 Final Released! – Summary of Features