루비언어에서 심볼의 개념 이해하기

http://www.troubleshooters.com/codecorn/ruby/symbols.htm

지금까지 루비, 특히 레일즈에서 사용되는 심볼을 어렴풋하게나마 이해하고 있었는데, 위의 링크의 내용을 읽어 보고 루비의 심볼에 대한 확실한 개념을 알게 되었다.

1. 심볼은 integer나 string으로 변환될 수 있다. 그러나 심볼이란 string으로 대신해서 사용할 수 있는 상수(constant)와 같은 것이지만 같은 String을 반복해서 사용할 때처럼 메모리를 소모하지 않아 메모리 절약에 도움이 될 수 있다. 동일한 심볼을 수천번 반복에서 코딩에 사용해도 심볼값은 하나의 주소값만을 가진다.

2. 심볼은 런타임때 값을 변경할 수 없다.(immutable)

3. 심볼은 .to_i 나 .to_s 메소드를 이용해서 의미없는 공유의 정수값이나 심볼이름과 같은 문자열을 간접적으로 얻을 수 있지만, 심볼 자체로는 String객체의 그 많은 메소드들을 사용할 수 없다. 왜냐하면 심볼은 Symbol 객체이기 때문이다. 계속 “루비언어에서 심볼의 개념 이해하기” 읽기

Coffeebeans for Rails 3.1

레일즈 개발환경은 참으로 살아 숨쉬는 그야말로 개발자로 하여금 지속적으로 공부하게 만드는 것 같다.

레일즈는 개발자 환경을 향상시키기 위해서 모든 역량을 다함에 틀림없다.

아마도 레일즈 3.1 베타1 버젼에는 누락되었지만, 3.1 릴리스 버젼에서는 틀림없이 추가될 것으로 생각된다. Coffee-script와 Coffeebeans. 아예 커피와 이름을 연관지으면서 그들의 개발언어의 연계성을 멋지게 만들어 가고 있다.

어쨌던 레일즈는 점점 더 재밌어 진다. 계속 “Coffeebeans for Rails 3.1” 읽기

레일즈 3.1부터 도입한 Sprockets 루비라이브러리

레일즈 3.1부터는 3.0에서는 볼 수 없었던 특이한 기능을 엿볼 수 있다.

3.1부터는 모든 javascript 파일과 모든 stylesheet 파일들을 각각 application.js와 application.css 두개의 파일로 합쳐서 렌더링하여 최종 유저들에게 보내는 html 파일에 삽입해 준다. 이렇게 다수의 파일을 하나로 합치는 기능은 Sprockets라는 루비라이브러리를 이용하여 가능하게 한다. 계속 “레일즈 3.1부터 도입한 Sprockets 루비라이브러리” 읽기

Bundler Gemfile syntax highlight in Text Mate

Bundler Gemfile syntax highlight in Text Mate

In Textmate, select the Bundles menu => Bundles editor

Select languages instead of show all.

Select the Ruby on Rails language within the Ruby on rails bundle

Change this line:

fileTypes = ( 'rb', 'rxml', 'builder' );
to this:

fileTypes = ( 'rb', 'rxml', 'builder', 'Gemfile' );
Go to Bundles => Bundles Editior => Reload Bundles.

Reopen your Gemfile and you should now be getting the syntax highlighting.

RVM을 프로젝트별로 관리하기

레일즈 프로젝트별로 RVM환경을 자동으로 설정하는 방법에 대해서 설명한다.

RVM에는 프로젝트별로 루비와 젬셋환경을 자동으로 관리할 수 있는 기능이 있다.
특정 프로젝트 디렉토리로 이동하여 .rvmrc 라는 파일을 만들고 여기에
rvm use ruby-1.9.2-p180@PROJECT_A_GEMSET
한줄을 추가해 준다.
다른 프로젝트에도 똑같은 작업을 해서
rvm use ruby-1.9.2-p136@PROJECT_B_GEMSET
라고 추가해 준다.
그러면 해당 프로젝트로 이동하면 자동으로 .rvmrc 파일내에 있는 명령어 실행해서 개발환경으로 변경해 준다.

매우 편리한 기능이다.

일일이 system 이나 user 의 .rvmrc 설정파일을 변경할 필요가 없는 것이다.

RVM (Ruby Version Manager)

RVM의 Gemset을 이용하여 효율적인 레일즈 웹프로젝트를 개발하는 방법을 소개한다.

레일즈를 이용한 웹 개발 환경에서 다수의 루비 버젼을 이용할 수 있다는 것은 매우 유용하지만 어렵고 귀찮은 일이 아닐 수 없다.
커맨드라인 툴인 RVM를 이용하면 인터프리터로부터 gem에 이르기까지 다양한 루비환경을 쉽게 설치하여 관리할 수 있으며 개발할 수 있게 해준다.

루비와 루비젬이 설치되어 있는 개발환경에서 RVM을 이용하면 웹 프로젝트별로 다양한 젬들을 묶어서 관리할 수 있어 프로젝트별로 버젼이 다른 레일즈 프레임워크와 기타 플러인 젬들을 이용할 수 있어서 좋다.

별도의 젬을 생성하지 않으면 global 이라는 gemset 이 디폴트로 설정된다. 레일즈 3부터는 특정 프로젝트의 젬들을 Gemfile 이라는 파일에 등록한 후에 bundle install 이라는 커맨드라인 명령어를 통해서 젬을 설치해 준다. 바로 이때 global이라는 디폴트 gemset 에 설치되는 것이다.

그러나 이렇게 하면 다른 버젼의 레일즈나 기타 젬들을 이용하여 새로운 프로젝트를 개발할 경우에는 레일즈 버젼에 따른 기능제한 문제와 불필요한 젬들이 자원을 낭비하게 되는 결과를 초래하게 되는 것 같다.

그래서 프로젝트별로 gemset을 별도로 생성하여 사용하면 이러한 문제점을 해결할 수 있어 좋다.

현재의 등록된 gemset의 목록을 보기 위해서 다음의 명령를 실행해 본다.
$ rvm gemset list

gemsets for ruby-1.9.2-p180 (found in /Users/hyo/.rvm/gems/ruby-1.9.2-p180)
=> PROJECT_GEMSET
global

현재 본인의 시스템에는 루비 1.9.2 패치 180번이 활성화되어 있고 이 루비버젼에 대한  gemsets의 목록이 보여진다.  “=>” 표시가 현재 활성화되어 있는 gemset 을 가리킨다.

current gemset을 “global”로 변경하기 위해서는 다음의 명령을 실행한다.
$ rvm gemset use global

Now using gemset 'global'

확인하기 위해서 다음의 명령을 실행한다.
$ rvm gemset list

gemsets for ruby-1.9.2-p180 (found in /Users/hyo/.rvm/gems/ruby-1.9.2-p180)
WORDSTORY_GEMSET
=> global

현재 본인의 시스템의 global 젬셋에는 다으의 젬들이 설치되어 있다.
$ gem list

*** LOCAL GEMS ***

bundler (1.0.12)
rake (0.8.7)

그럼, gemset을 새로이 생성하는 방법은 뭘까.
$ rvm gemset create ANYPROJECT_GEMSET

이상으로 RVM의 gemset 사용법에 대해서 간단하게 알아 보았다.