Mac에서 Rails 개발환경 구축하기

Bawiki

Jump to: navigation, search

목차

들어가는말

Mac에서 Rails를 개발하기 위해서는 MySQL 서버와 Ruby, 그리고 Rails 및 관련 gem이 설치되어있어야합니다. Rails 개발환경을 구축하는 방법은 여러가지가 있습니다. 소스를 통한 설치, 아래 설명할 MacPorts를 이용한 설치, 그리고 Locomotive라는 간편한 설치방법도 있습니다. 장기적으로 보았을때 편리한 command line tool을 자주 사용하게 되므로 MacPorts를 이용하여 소스 설치를 자동화 하는 방법을 권해드립니다.

따라하기에 쉬운 방법은 아닙니다만, 이번의 설치 경험을 통해 UNIX tool을 자유롭게 이용할 수 있는 장점을 누려보시기 바랍니다. 개발 환경이 갖추어지고 터미널 창에 익숙해지고나서는 아마 다시는 윈도우로 개발하고 싶은 마음이 들지 않을 것입니다. :)

설치 중 문의사항은 토론에 올려주세요. 바위 위키에 쓰기 권한이 없으신 분들은 블로그의 관련 포스트에 comment로 문의해주시면 감사하겠습니다.

  • 참고 : 아래의 내용에 box안에 들어가는 내용은 터미널에 입력하거나 파일의 내용으로 사용됩니다. # 이후의 부분은 주석이므로 필요 없는 부분입니다.
  • 참고2 : TextMate 등의 텍스트 에디터를 따로 사용하시는 경우 touch, open 명령어를 사용하지 마시고 바로 편집을 하셔도 괜찮습니다. open 명령어는 Finder에서 파일을 더블 클릭해서 열었을때와 같은 일을 터미널에서 할 수 있게 해주는 명령어이고, touch는 그냥 빈 파일을 만드는 명령어입니다. 명시적인 설명을 위해 touch와 open 명령어를 사용하였으니 파일 이름에만 주목해주세요.

Console Environment

MacTerminal설정

Command Line Applications

MacPorts

MacPorts(옛날에 DarwinPorts였음.)을 이용하여 기본적으로 필요한 리눅스 소프트웨어를 설지합니다. Gentoo의 port 개념처럼 현 시스템에 최신 버전의 소스를 받아와 자체적으로 컴파일합니다. MacPorts 사용을 위해서는 필수적으로 Xcode가 설치되어 있어야 합니다. Xcode는 맥 OS설치 CD나 애플 Xcode 다운로드 페이지에서 받으실 수 있습니다. 내부적으로 gcc를 사용하여 컴파일 합니다. 설치하실때 꼭 X11도 같이 설치하세요.

제가 주요 부분만 설명드리자면 다음과 같습니다.

  1. X11
    1. 맥과 같이 온 설치 DVD를 넣고 Optional Installs를 실행시키세요. (안보인다고 당황하지 마세요. 스크롤을 내려보시면 보입니다.)
    2. 응용 프로그램 - X11을 선택하시고 X11을 설치합니다.
  2. Xcode
    1. 애플 Xcode 다운로드 페이지에서 최신버전을 받으세요. (DVD꺼 쓰지 마세요~) 다운로드를 위해서는 무료 ADC회원에 가입해야합니다.
    2. XcodeTools.mpkg를 실행하시고 각종 승인에 고개를 끄덕이신 후
    3. 화면 왼쪽 아래의 사용자화를 클릭하셔서 필요한 것만 설치하세요. 그냥 기본 설치를 하셔도 됩니다. (저는 Developer Tools, gcc4.0, SDK모두, Cross Development 항목에서 universal SDK만 했습니다.)
  3. MacPorts
    1. http://svn.macports.org/repository/macports/downloads/ 에서 파일을 받으셔서 설치하시면 됩니다. 1.3.2버전을 기준으로 할 경우 다음과 같이 일련의 명령어를 통해 설치할 수 있습니다. (참고로 OSX가 Tiger일 경우 OS 버전은 10.4입니다.)
cd
curl -O http://svn.macports.org/repository/macports/downloads/DarwinPorts-1.3.2/DarwinPorts-1.3.2.tar.gz
tar zxvf DarwinPorts-1.3.2.tar.gz
cd DarwinPorts-1.3.2
./configure && make && sudo make install
cd.. && rm -rf DarwinPorts-1.3.2 DarwinPorts-1.3.2.tar.gz

설치후

sudo port -v selfupdate

를 통해 최신 소스 트리로 업데이트 하십시오.

MySQL

MacPorts-MySQL를 참조하세요.

subversion

소스 버전 컨트롤을 위해 subversion을 설치합니다.

sudo port -v install subversion

MacPorts가 설치되어 있지 않은 경우에는 위와 같이 하면 설치가 되지 않으므로, 그냥 Universal Binary를 받아서 설치합니다. http://metissian.com/projects/macosx/subversion/

wget

파일 다운로드를 위해 wget을 설치합니다.

sudo port -v install wget

웹서핑 중에 파일을 바로 콘솔에서 다운로드 하고 싶으실 때에는

wget http://....

와 같이 하실 수 있습니다.

Ruby

루비와 ruby-mysql 바인딩을 설치합니다.

  • 주의 : 만약 이 작업에서 MacPorts가 XFree86 관련 소스를 컴파일하고 있다면 X11을 설치하지 않으신겁니다. 현재 MacPorts의 X11을 설치하시는 것은 권장되지 않습니다. Mac OSX 설치 DVD에 있는 X11을 설치하세요.
sudo port -v install ruby
sudo port -v install rb-mysql

RubyGems

http://rubyforge.org/frs/?group_id=126 에서 최신버전의 RubyGems를 다운받아 설치합니다.

curl -O http://rubyforge-files.ruby-forum.com/rubygems/rubygems-0.9.1.tgz
tar zxvf rubygems-0.9.1.tgz
cd rubygems-0.9.1
sudo ruby setup.rb all
sudo gem update
  • 참고 : MacPorts의 rb-rubygems를 사용하지 않는 이유는 MacPorts로 설치한 것과 소스로 설치한 것의 차이가 없으며, gem update시 스스로 업데이트 되어서 MacPorts가 중복으로 업그레이드 하는 현상이 있기 때문입니다.
  • 참고 : gem 설치시 버전을 선택하는 화면이 나온다면 (ruby)로 표기된 것 중 가장 최신 것으로 설치하시면 됩니다.

Rails Environment

Rails

이제 Rails를 설치합니다.

sudo gem install rails -y

이제 Rails 개발환경이 구축되었습니다.


Capistrano

Rails 프로젝트의 deploy을 원하신다면 capistrano, railsmachine을 권해드립니다.

sudo gem install -y railsmachine 

위와 같이 입력하면 의존성에 의해 capistrano, mongrel, mongrel_cluster 등도 함께 설치됩니다.

Piston

Subversion에서 svn:externals로 plugin을 관리할 때 버전 관리를 해주는 툴입니다.

 sudo gem install -y piston

Testing Environment

Rails 개발시 Testing을 쉽게 할 수 있는 환경으로 autotest가 권장되고 있습니다. 다음의 내용은 ZenTest와 RedGreen, 그리고 Growl을 통해 Rails 프로젝트 소스 파일이 수정될 때 마다 Unit Test가 시행되고(ZenTest) 화면 우측 상단에 이쁘게 결과가 뜹니다.(Growl) 상세한 내용은 이쁘게 색칠되어(RedGreen) 콘솔에 출력됩니다.

  • 참고: Dante Kim님께서 테스트 결과에 따른 Growl의 이미지를 다르게 보여주는 더 재미있는 방법을 소개해 주셨습니다. :)

ZenTest & RedGreen

sudo gem install -y ZenTest
sudo gem install redgreen

Growl

http://growl.info/downloads.php 에서 이미지를 받아 Grow.prefPane을 등록하고(더블클릭하시면 시스템 환경설정에 들어갑니다), growlnotify를 설치합니다.

콘솔에서 다음과 같이 입력합니다.

cp /Volumes/Growl/Extras/growlnotify/growlnotify /opt/local/bin/growlnotify
cp /Volumes/Growl/Extras/growlnotify/growlnotify.1 /opt/local/man/man1/growlnotify.1
  • 주 : dmg파일에 동봉된 install.sh 파일은 /usr/local을 베이스 디렉토리로 가정하고 있습니다. 우리는 /opt/local/을 사용하므로 위와 같이 직접 입력해주면 됩니다. 복사해서 붙여넣기로 입력하시는 것 아시죠? :)

~/.autotest

autotest 설정을 위해 다음과 같이

touch ~/.autotest
open -t ~/.autotest

를 입력하여 다음 내용을 넣습니다. (Ruby 코드 입니다!)

require 'autotest/timestamp'

Autotest.send(:alias_method, :real_make_test_cmd, :make_test_cmd)
Autotest.send(:define_method, :make_test_cmd) do |*args|
  real_make_test_cmd(*args).sub('test/unit', %[rubygems -e "require 'redgreen'"])
end

module Autotest::Growl
  def self.growl title, msg, pri=0, stick=""
    system "growlnotify -n autotest --image ~/Pictures/rails.png  -p #{pri} -m #{msg.inspect} #{title} #{stick}"
  end

  Autotest.add_hook :ran_command do |at|
    result = at.results.match(/(\d+) tests, (\d+) assertions, (\d+) failures, (\d+) errors/)
    tests = result[1]
    assertions = result[2]
    failures = result[3]
    errors = result[4]
    output = "#{tests} tests, #{assertions} assertions, #{failures} failures, #{errors} errors"
    if failures.to_i + errors.to_i > 0
      growl "Test Results", output, 2, "-s"
    else
      growl "Test Results", output
    end
  end
end
  • ~/Pictures/rails.png 부분은 Growl에 쓰일 이미지를 지정하는 것입니다. 원하시는 대로 수정 가능하며, Ruby on Rails 홈페이지에 있는 이미지를 ~/Pictures/ 에 받으시려면 다음과 같이 하시면 됩니다.
wget http://rubyonrails.org/images/rails.png -P ~/Pictures/
  • Growl에 출력되는 메세지를 변경하고 싶으신 경우
output = "#{tests} tests, #{assertions} assertions, #{failures} failures, #{errors} errors"

부분을 수정해주시면 되겠습니다.

AutoTest

실제로 사용하기 위해서는 터미널을 띄우신 후 Rails 프로젝트가 있는 디렉토리로 이동 하신 후

autotest -rails

라고 입력합니다.

Coding Environment

CocoaMySQL

MySQL frontend로 사용할 수 있는 프로그램입니다. (DHH의 15분 블로그 동영상에 등장하는 바로 그! 프로그램입니다.) 이것과 경쟁하는 프로그램으로 YourSQL이란 프로그램이 있으나 CocoaMySQL이 더 나은 것 같습니다. Intel Mac에서는 각각 CocoaMySQL 0.7b5YourSQL for Intel을 사용하셔야합니다.

  • 주의 : UTF8 환경에서 CocoaMySQL을 사용하시기 위해서는 설정을 하나 봐주셔야합니다.
    • 환경 설정에서 Default Encoding을 UTF-8으로 설정하시고, 사용중인 환경에선 왼쪽 아래 Encoding을 UTF-8으로 맞춰주세요.

  • 참고 : 현재 0.7b5버전에서 UTF-8을 디폴트로 설정하는 것이 반영되지 않는 버그가 있습니다. 개발자로부터 해당 버그가 수정된 개발버전을 받았습니다. 한글문제 해결된 CocoaMySQL 0.7b6를 사용하세요.

TextMate

http://macromates.com/ 우리는 이 에디터를 쓰기 위해 험난한 셋팅의 길을 걸었습니다. :)

자세한 내용은 TextMate를 참조하세요.


Updating Applications & Libraries

가끔 아래의 명령을 통해 Command Line Tool과 Gem Library를 최신 버전으로 업데이트 하세요.

MacPorts

sudo port -v selfupdate                # 소스리스트를 갱신합니다.
port outdated                             # 업데이트가 있는지 확인합니다.
sudo port -v upgrade outdated     # 패키지 업그레이드를 시행합니다.
sudo port -f uninstall inactive      # 패키지 업그레이드 후 구버전이 된 프로그램을 제거합니다.
  • 주의 : update가 아니라 upgrade입니다!

RubyGems

sudo gem update      # rubygem 자체와 이미 설치된 gem을 모두 업데이트 합니다.
  • 주의 : 이번엔 upgrade가 아니라 update입니다!

Etc

이 부분은 자세한 추가 설명입니다. :)

sudo

임시로 root의 권한을 갖고 명령문 내용을 시행합니다. 일반적으로 root 권한을 필요로 하는 일이 많지 않기 때문에 sudo 명령문 만으로도 충분히 사용할 수 있으나 만약 root로 상태변환을 하고 싶다면

sudo -i

sudo -s

를 통해 권한을 획득할 수 있습니다.

port

명령문 예제

port installed                  # 설치된 패키지를 봅니다. (activate)가 실제 사용중인 패키지입니다.
port outdated                  # 설치된 패키지 중 out-dated을 봅니다.
port search ...                # 설치 가능한 패키지를 검색합니다.
port info 패키지명             # 패키지 정보를 보여줍니다.
port deps 패키지명            # 패키지 의존성을 보여줍니다.

옵션

  • -v : verbose mode (안해주면 화면 변화가 정말 적어서 멈춘 걸로 착각하기 쉽습니다.)
  • -u : upgrade시 deactivate되는 port를 자동으로 uninstall해줍니다.

gem

옵션

  • -v : version
  • -y, --include-dependencies : 의존성이 걸려있는 모든 gem을 알아서 설치해줍니다. (안해주면 하나하나 yes를 눌러줘야해서 귀찮습니다.)

개인 도구