들어가며
백엔드 개발을 하면서 몇 년간 JSON으로 데이터를 옮기는 작업을 하거나 서버를 띄우는 작업만 했었는데, 만들어보고 싶었던 것도 있었고 간단한 프런트엔드 개발에 대해서 공부하고 싶어서 이번에 개인 프로젝트를 레일즈를 써서 만들게 되었다.
MVC 패턴 프레임워크를 선택하는 과정에서 쟝고를 쓸지 레일즈를 쓸지 고민했었는데, 파이썬 프레임워크로는 이미 플라스크를 써본 적이 있었고, 루비 생태계가 궁금했기 때문에 루비 온 레일즈를 써서 프로젝트를 진행했다.
ruby를 세팅하는 과정이 초반에 생각보다 많이 난잡했는데, 루비를 설정하는 기본적인 설정하는 방법과 rails를 사용하는 방법을 포스팅하여 남기도록 한다.
본론
ruby 설치
먼저 루비를 먼저 설치해야한다. 맥을 사용하는 경우에는 이미 루비가 설치되어 있는 경우가 있는데, homebrew가 ruby 기반이기 때문에 homebrew를 설치했다면 ruby가 이미 깔려 있을 것이다.
# ubuntu를 사용하는 경우
$ sudo apt install ruby
# MacOS를 사용하는 경우
$ brew install ruby
루비 버전 확인
$ ruby -v
버전을 확인해보면 알 수 있겠지만, mac 같은 경우에는 기본적으로 homebrew에 딸려오는 ruby로 인해 원하는 버전을 쉽게 선택해 줄 수 없게 되고, 다른 OS의 경우에도 마찬가지로 손쉽게 루비 버전을 설정하는 것이 어렵다. 이를 해결해 줄 수 있는 패키지는 rbenv라고 불리는 패키지이다. 여러 개의 ruby 버전을 설치하는 것을 도와주며, 버전을 간단하게 바꿀 수 있게 도와준다. 예전에는 RVM이라는 패키지도 많이 썼지만, 최근에는 가벼운 rbenv를 많이 쓰는 추세라고 한다.
rbenv 설치
rvm과 같은 패키지는 dependency를 관리해 주는 역할도 해주는데, rails를 사용하는 경우에는 어차피 bundle 명령어와 Gemfile을 통해서 의존성을 관리해 주기 때문에 가벼운 rbenv를 쓰는 것이 좋다.
# MacOS
$ brew install rbenv
# Ubuntu, Debian and their derivatives
$ sudo apt install rbenv
설치 후에는 다음 명령어를 입력한다.
$ rbenv init
이제 다음 명령어를 통해서 rbenv로 설치 가능한 ruby의 버전을 확인한 후 설치할 수 있다.
# list latest stable versions:
$ rbenv install -l
# list all local versions:
$ rbenv install -L
# install a Ruby version:
$ rbenv install 3.1.2
# 설치 후 재 실행
$ rbenv rehash
이렇게 설치를 마친 후에는 rbenv를 통해서 어떤 루비를 사용할 것인지 설정해 줄 수 있다. 다음 명령어를 통해서 설정한다.
$ rbenv global 3.1.2 # default로 사용할 버전 설정
# or:
$ rbenv local 3.1.2 # 현재 디렉토리에서 사용할 버전 설정
$ rbenv versions # ruby 버전 확인
Ruby gems 설치
다음으로는 루비 gem의 설치이다. python의 패키지 관리자 pip가 있다면, 루비 진영에는 gem이 있다. 루비는 컨셉에 맞게 패키지들을 RubyGems라고 부르는데, RubyGems.org 사이트를 방문하면 다양한 gems들을 볼 수 있다. 다음은 gem을 통해서 bundler를 설치하는 명령어이다. bundler는 python의 requirement.txt와 비슷하게 설치하고자 하는 패키지 및 버전이 나열된 문서인 Gemfile에 있는 패키지들을 다운로드하는 것을 도와주는 패키지이다. rails을 사용하기 위해서는 bundler가 꼭 있어야 한다.
$ gem install bundler
여기서 중요한 포인트는 sudo 명령어를 통해서 gems를 설치해서는 안된다는 것이다. 일반적으로 루비 버전은 홈 디렉터리에 설치되어 사용자가 쓸 수 있는데, gem을 통해서 라이브러리를 설치하려고 할 때 "you don't have write permissions" 에러가 발생한다면, 아마도 "system"의 루비 버전이 글로벌 default로 되어있는 경우일 수 있다. rbenv global <version>을 통해 설정한 후 다시 해보자.
패키지의 설치를 끝마쳤다면 다음 명령어를 통해서 어떤 위치에 설치되었는지 확인해 볼 수 있다.
$ gem env home
# => ~/.rbenv/versions/<version>/lib/ruby/gems/...
다음명령을 통해서 Gemfile에 있는 내용을 다운로드할 수 있다.
# 현재 설치된 ruby 패키지 확인
$ bundle
# bundle을 통해서 Gemfile에 명시된 라이브러리들 설치
$ bundle install
Rails 설치
다음으로는 rails의 설치다.
$ gem install rails
위 명령어를 통해 rails를 설치할 수 있다. rails 프로젝트를 생성 및 실행하기 위해서는 yarn이라고 불리는 자바스크립트의 패키지 매니저가 필요한데, 이를 설치해 주도록 한다. 맥을 사용하는 경우에는 간단하게 brew install을 통해서 설치할 수 있다.
# ubuntu를 사용하는 경우
$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt-get update && sudo apt-get install --no-install-recommends yarn
$ echo 'export PAHT="$(yarn global bin):%PATH"' >> ~/.bashrc
이렇게 험난하게 yarn까지의 설치가 끝났다면, rails 명령어를 통해서 프로젝트를 생성할 수 있다.
# ProjectName이라는 프로젝트 생성
$ rails new ProjectName
# 현재 디렉터리에 프로젝트 생성
$ rails new .
위 명령어를 통해서 rails 프로젝트를 생성시킬 수 있다. 앞서 이야기했듯이 Gemfile에 있는 의존성을 설치하기 위해서 bundle install 명령어를 통해 의존성을 설치한 다음 rails server 명령어를 통해서 실행시킬 수 있다.
마치며
레일즈는 초반에 설정하는 과정이 생각보다 많이 번거롭지만, 세팅을 마치고 나서 쓰는 과정에서는 나쁘지 않았던 프레임워크였던 것 같다. 쟝고를 써본 적이 없기 때문에 해당 프레임워크와 직접적인 비교는 불가능하지만 MVC 패턴 프레임워크를 간단하게 써보고 싶다면 추천하는 프레임워크. 루비의 생태계도 쉽게 알 수 있었다.
참고
- [github] rbenv : https://github.com/rbenv/rbenv
- [나른한 하루] rbenv 설치 : https://kbs4674.tistory.com/187