[RoR] Settings

회사에서 존경하는 선배님과 함께 Ruby on rails를 이용하여 스터디를 진행하기로 하였다.

Virtualbox를 설치하고 Ubuntu 환경에서 진행하였다.

https://www.railstutorial.org/book/static_pages 를 보고 공부한 내용.

Ruby on rails 란?


Rails는 Ruby 언어에서 동작하는 Web Application Framework이다. 단순한 코드로 CRUD를 쉽게 구현할 수 있다고 한다. 제대로 사용할 줄 알면 빠른 시간 내에 웹 서비스를 구축할 수 있다.

Ruby on rails 세팅


rbenv 설치

rbenv는 이름에서도 유추 가능하듯 Ruby Environment의 관리 편의를 제공한다. Ruby on rails application 별로 다른 ruby version을 유지할 수 있게 해준다. rbenv Command Reference에서 자세한 정보를 확인할 수 있다.

설명서대로 설치를 진행해본다.

~/.rbenv 에 땡겨온다.

1
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv

$PATH에 ~/.rbenv/bin 을 추가한다. 그리고 적용을 위해 source .bashrc를 수행한다.

1
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

다음 명령을 통해 shell에 관계 없이 rbenv를 자동으로 초기화할 수 있다.

1
$ ~/.rbenv/bin/rbenv init

ruby-build를 추가로 설치하자. 이를 통해 rbenv install 명령어를 사용할 수 있게 된다. 설치 후 rbenv install -l 명령을 수행하면 설치 가능한 ruby의 version들이 쫙나온다.

1
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

나는 2.3.0 을 설치해 보기로 했다. rbenv install 2.3.0 명령으로 간단하게 ruby를 설치할 수 있다.

한 번 실패했는데 sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev를 설치했어야 했다.

rbenv versions 명령을 통해 현재 설치/설정된 ruby version들을 볼 수 있다. rbenv local 2.3.0 으로 local 계정에 적용되는 ruby version을 2.3.0으로 변경하였다.

추가로, 새 version의 ruby나 gem을 설치하게 되면 변경된 실행 정보를 알리기 위해 rbenv rehash 명령을 수행해야 한다.

다음은 gem을 이용하여 bundler를 설치한다.

gem이란 ruby의 plugin 정도로 이해하면 편하겠다. ruby에 종속된다.

bundler란 모듈을 한데 모아서 관리하는 것이다. ruby의 경우 gem들을 모아서 관리하는 주체라고 보면 되겠다.

gem install bundler 로 bundler gem을 설치할 수 있으며, sudo 권한은 필요치 않다. rbenv를 통해 ruby version을 변경할 경우 그 버전에 맞는 gem을 추가로 설치해야 한다.

그런데 에러가 났다. 에러 내용은 이렇게.

1
2
ERROR: While executing gem ... (Errno::EACCES)
Permission denied @ dir_s_mkdir - /var/lib/gems

rbenv를 통해 설치한 ruby는 ~/.rbenv/versions/2.3.0/bin에 있는데 system에 기본 설치된 ruby가 실행되어 생기는 문제이다. ~/.bashrc 에 경로를 추가해두자. rbenv에서 이것까지 관리가 될 것 같은데 뭔가 좀 이상하다. 그래도 일단은 해결하고 넘어가자.

1
$ echo 'export PATH="$HOME/.rbenv/versions/2.3.0/bin:$PATH"' >> ~/.bashrc

rails 설치

이제 ruby의 설치가 끝났다. rails 세팅에 돌입하자. rails는 ruby gem 중 하나이다.

THE RUBY ON RAILS TUTORIAL 를 베이스로 진행한다.

1
$ gem install rails

rails project 생성


아래의 명령으로 ‘blog’라는 이름을 갖는 rails project(application)을 생성할 수 있다.

1
$ rails new blog

rails application은 아래의 명령을 통해 실행한다.

1
$ rails server

일단 에러가 날 것이다. 이유는 해당 application이 필요로 하는 gem들이 설치되지 않아서이다.
필요로 하는 gem들의 정보는 “Gemfile” 에 선언되어 있고, 구현하고자 하는 application에서 사용할 gem들을 직접 정의해 줄 수도 있다.

아래 명령으로 gem들을 설치한다.

1
$ bundle install

내 pc(virtual box로 돌리는 ubuntu) 기준으로 아래와 같은 에러가 발생한다.
An error occured while installing sqlite3 (1.3.11), and Bundler cannot continue.
Make sure that ‘gem install sqlite3 -v ‘1.3.11’’ succeeds before building.

시키는대로 설치를 해보자.

1
$ gem install sqlite3 -v '1.3.11'

에러를 뿜는다. 이번에는 apt-get install libsqlite3-dev 를 설치하라고 한다. 하고 sqlite3 gem을 install하자.

자, 이제 대망의 rails server 를 실행한다.

또 에러가 난다… Could not find gem 'sass-rails (~>5.0)' in any of the gem sources listed in your Gemfile or available on this machine. … 힘들다. gem install sass-rails 를 통해 최신 버전을 설치한 후 bundle install 그리고 rails server 를 다시 실행한다.

이번에는 다음과 같은 에러가 발생했다.

1
/home/user/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gem/bundler-1.11.2/lib/bundler/runtime.rb:80:in 'rescue in block (2 levels) in requir': There was an error while trying to load the gem 'uglifier'.

그냥 구글에 검색해본다. 검색 뚝딱뚝딱

그렇다. stackoverflow에 답이 있다. apt-get install nodejsrails server를 하니 드디어 된다.

uglifier가 뭔지 찾아보니 JavaScript parser, minifier, compressor, beautifier 등의 역할을 하는 툴인 것 같다. 나중에 기회가 되면 알아보자.

이제 브라우저에서 localhost:3000 을 입력하면 접속이 되어야 한다.

나의 경우 virtualbox에서 실행하였으므로, 네트워크 브리지를 통해 Windows의 Browser를 통해 접속하여 확인하였다.

VirtualBox 리눅스 SSH 연결 (브리지)를 참조하였으며, ifconfig를 통해 Virtual box에 할당된 IP를 알아낼 수 있는데 rails 실행 시 옵션을 추가해 주어야 제대로 된 실행 결과를 볼 수 있다.

00.00.00.00은 ifconfig를 통해 알아낸 IP를 적고, 3000 자리에는 마음에 드는 port number를 적어준다.

그리고 Windows의 Browser에서 00.00.00.00:3000 으로 접속하면 드디어 Welcome aboard 화면을 볼 수 있게 된다.

1
rails server -b 00.00.00.00 -p 3000

Virtual box 공유폴더 설정


1
2
3
4
5
6
1. 장치 -> 공유 폴더 -> 공유 폴더 설정
2. 장치 -> 게스트확장 이미지 삽입
3. /media/sf_폴더이름 으로 생긴 것 확인
4. 폴더의 Group permission이 vboxsf로 되어있으므로 아래 명령으로 계정을 그룹에 추가
- sudo gpasswd -a 계정명 vboxsf
5. reboot 명령으로 시스템 재부팅

경로를 돌아가는 것이 불편하여 아래와 같이 symbolic ilnk를 걸어 사용하기로 한다.

1
sudo ln -s /media/sf_shared ~/shared

Share