루비(Ruby)와 PostgreSQL 설치 및 사용법 정리

필요에 의한 거지만 어찌됐든 10년만에 Ruby를 다시 배워보려고한다. 그래서 일단 맥에 루비부터 설치했다.

1. Homebrew를 이용한 루비 설치

일단 맥에는 루비가 기본 설치되어있기 때문에 기본 설치된 버전부터 확인해보자.

$> ruby -v
ruby 2.0 ..... 어쩌구 저쩌구 

내 멕에는 ruby 2.0이 설치되어 있다. 현재 최신버전은 루비 2.3.0 버전이다. 최신 맥프레임에도 불구하고 확실히 기본 설치된 버전은 낮다 -_-;; ㅎㅎㅎ 여튼 새버전을 선호하는 개인 취향문제로 새 버전을 설치했다.

$> brew install ruby
... 설치 로그 생략
$> ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]

오예! 루비 새버전 장착 완료!! 루비로 웹개발을 할때는 보통 레일스 프레임워크를 사용하지만 지금 루비 문법과 스타일에도 익숙치 않은데 레일스를 볼 겨를이 없다. 일단 루비부터 익혀보자.

공식 언어 튜토리얼

  1. try Ruby – http://tryruby.org/
  2. 20분 가이드 – https://www.ruby-lang.org/ko/documentation/quickstart/

낮은 버전으로 다운그레이드

Homebrew를 이용해 낮은 버전으로 설치하려면 PATH 설정을 수동으로 해야한다. 홈브루 정책이 그런듯 싶다. 그래서 좀 귀찮다.

$> brew search ruby
chruby       homebrew/versions/ruby182    homebrew/versions/ruby21    ruby ✔
chruby-fish  homebrew/versions/ruby186    homebrew/versions/ruby22    ruby-build
homebrew/versions/imagemagick-ruby186     homebrew/versions/ruby187   imessage-ruby
ruby-install homebrew/versions/jruby168   homebrew/versions/ruby192   jruby
homebrew/versions/jruby1721               homebrew/versions/ruby193   mruby
...

현재 홈브루로 설치된 버전은 체크(✔)표시가 되어 있다. 만약 ruby 2.2 버전을 설치하고 싶다면 homebrew/versions/ruby22 버전을 설치하면된다 .

$> brew install homebrew/versions/ruby22
... 설치 로그 중략 ...
By default, binaries installed by gem will be placed into:
/usr/local/lib/ruby/gems/2.2.0/bin

You may want to add this to your PATH.
... 

이전 버전을 설치하면 위 메시지처럼 PATH를 니들이 알아서 해! 라는 배째라 모드.. 아무래도 루비가 자체 패키지매니저(gem)을 가지고 있어서 의존성을 가진 모듈들이 충돌될까바 그런듯싶고,.. 여튼 귀찮아서 그냥 새버전 쓰는걸로!!

2. PostgreSQL 설치와 사용법

PostgreSQL 설치도 Homebrew를 이용하면 간단하다.

$> brew install postgresql

DB 서버를 데몬으로 항상 띄워둘수도 있지만 본인은 개발할때 수동으로 실행시키는 편이다.

$> postgres -D /usr/local/var/postgres

서버는 실행했고 이제부터가 진짜 신세계다! mysql과 mongo와는 또다른 명령체계들 때문에 삽질했다. 정리해본다.

1. 클라이언트 접속툴

postgresql은 생소한 psql이라는 명령어를 이용한다. 하기사 데이터베이스 이름 자체가 길다보니 짧은 명령어를 만든듯 싶다.

$> psql
psql: FATAL:  database "realrap" does not exist

잉? 이건 뭔소리래? “realrap” 데이터베이스가 없다며 접속되지 않는다. psql은 다른 데이터베이스와 좀 다르게 일단 접속하고 use 명령을 이용해 데이터베이스를 선택하는 모델이 아닌갑다. 그래서 접속할때 데이터베이스명이 필요한데 지정하지 않으면 로그인된 계정이름이 디폴트로 지정된다. 참고로 내 계정이름이 “realrap” 이다.

데이터베이스를 생성하기 전에 샘플디비(template1)로 접속부터해보자.

$> psql template1
psql (9.5.1)
Type "help" for help.

template1=#

특이하게 접속하면 template1=# 이라는 프로프트를 볼수있다. template1 데이터베이스에 접속했다는 의미다. 그리고 template0 이라는 샘플디비가 하나 더 있는데 진짜 있는지 데이터베이스 목록을 확인해보자. 역슬래쉬() 소문자 엘(l)을 입력해보자.

template1=# \l
                                       List of databases
      Name      |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges
----------------+---------+----------+-------------+-------------+---------------------
 postgres       | realrap | UTF8     | ko_KR.UTF-8 | ko_KR.UTF-8 |
 template0      | realrap | UTF8     | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/realrap         +
                |         |          |             |             | realrap=CTc/realrap
 template1      | realrap | UTF8     | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/realrap         +
                |         |          |             |             | realrap=CTc/realrap
 (3 rows)

나도 모르는 명령어가 툭툭튀어나온다. 이런 명령어는 help 명령을 이용해 알아냈다.

template1=# help
You are using psql, the command-line interface to PostgreSQL.
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

나가려면 \q를 입력하고 psql 명령어를 보고 싶으면 \? 물음표를 입력하렌다. 물음표를 입력해보면 \l 명령어에 대한 설명도 볼수있다.

2. 데이터 베이스 생성

데이터 베이스 생성은 createdb 명령을 이용한다. 주의할점은 데이터베이스명을 따로 지정하지 않으면 현재 로그인 된 계정 이름으로 생성한다. 자그럼 생성해보자!

createdb <데이터베이스명>

$> createdb
$> 

잉? 이건 또 뭐징? 아무런 메시지가 없다. 제대로 실행 된건가? 약간 의아한데 확인해봐야겠다. 그리고 뭔가 로그를 출력해주는 설정이 있을것 같은데 모르겠다. 일단 아까 말했던것처럼 데이터베이스명을 따로 지정하지 않으면 현재 로그인한 계정으로 만들어진다. 진짜 만들어졌는지 접속해서 확인해보자 .

$> psql realrap
psql (9.5.1)
Type "help" for help.

realrap=# \l
                                       List of databases
      Name      |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges
----------------+---------+----------+-------------+-------------+---------------------
 postgres       | realrap | UTF8     | ko_KR.UTF-8 | ko_KR.UTF-8 |
 realrap        | realrap | UTF8     | ko_KR.UTF-8 | ko_KR.UTF-8 |
....
.... 중략 ....

우잉? 진짜된다. 헐퀴.. realrap 이름으로 만든 디비는 필요 없으므로 지우자. 지우는 명령어는 dropdb 다! 일단 디비를 빠져나와서 커맨트창에 아래와 같이 입력한다.

$> dropdb realrap
$> psql realrap
psql: FATAL:  database "realrap" does not exist

됐다. 제대로 지워졌는지 접속이 되지 않는다. 대충 사용법을 알았으니 개발용 데이터베이스(test)와 개발용 유저(dev)를 만들어 dev 유저가 이 test 데이터베이스를 쓸수있도록 권한을 줘보자.

3. 개발용 유저 생성

일단 유저를 만든다. 만들때 –interactive 명령을 주면 좀더 상세한 권한 설정을 할수있다.

$> createuser dev 
or
$> createuser dev --interactive
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

상세 설정을 통해 권한을 따로 주지 않으면 유저는 기본적으로 아무런 권한이 없다.

4. 개발용 데이터베이스 생성

testDB를 만들때 -O 옵션을 주면 데이터베이스 오너를 지정할수있다. 앞에서 생성한 dev 유저가 testDB 오너가 되도록 생성한다.

$> createdb -O dev testDB

제대로 설정됐는지 로컬 계정으로 testDB에 접근해서 설정을 확인해보자.

$> psql testDB
psql (9.5.1)
Type "help" for help.

testDB=# \l
                               List of databases
      Name      |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges
----------------+---------+----------+-------------+-------------+---------------------
... 중략 ...
 testDB         | dev     | UTF8     | ko_KR.UTF-8 | ko_KR.UTF-8 |
... 중략 ... 

testDB의 Owner가 dev로 지정되어 있다. 제대로 했다. 이제 dev 유저에 패스워드를 지정해보자.

testDB=# alter user dev with password 'devpass';

dev 계정에 ‘devpass’ 라는 비밀번호를 부여했다. 이제 빠져나와서 dev 계정으로 접속해보자.

$> psql -U dev test -W
Password for user dev:

그런데 여기서 멘붕!…--;;; 패스워드가 틀려도 접속이 된다. 머징? –-;;; 좀더 공부를 해야겠다. 일단 여기까지… -_-;;

5. PostgreSQL 데이터베이스 지우기

멘붕에 빠져서 아까 만들었던 데이터베이스와 더불어 postgresql도 다 지워야겠다. 지우는 방법은 간단하다.

$> brew uninstall postgresql 

이렇게 지우면 명령어만 지우는거고 실제로 데이터베이스를 살아있다. 그래서 다시 설치하면 기존에 만들었던 유저라든가 데이터베이스가 지저분하게 그대로 있다. 따라서 데이터베이스까지 지우려면 저장된 DB 파일도 지워야한다.

일단 homebrew가 어디에 DB를 두는지 확인해야한다.

$> ps aux | grep postgres | grep -- -D
realrap         46604   0.0  0.1  2603388  15392 s006  S+   11:19AM   0:00.25 postgres -D /usr/local/var/postgres

아하! /user/local/var/postgres 폴더에 저장하는구나. 이 폴더를 날리면 DB도 깨끗이 지워진다.

6. GUI 툴을 이용해 PostgreSQL 다루기

앱스토어에가서 ‘Valentina’를 검색후 설치한다. 맥이 아는 경우는 아래 링크를 참고한다.
http://www.valentina-db.com/en/valentina-studio-overview

백그라운드에서 postgresSQL을 떠 있다면 Valentina 앱에서 자동으로 인식한다. 커넥터 설정을 할때 유의할점은 앞에서 살펴본 바와 같이 본인의 계정이름으로 사용자가 자동 설정된다는 것이다. 따라서 설치후 별다른 유저나 비밀번호 설정을 안했다면 로컬 접속은 아래와 같이 입력한다.

Host: localhost
Database: [생성한 데이터베이스 이름]
User: [본인 계정 이름] 
Password: *중요! 따로 설정하지 않았다면 비워둔다!!

루비 온 레일스 맥에 설치하기!! 그에 앞서 맥포트 먼저 설치!!

결론 부터 말하면, 오늘도 하루 종일 삽질했다.
그동안 불평불만을 쏟아 부었던 맥과 MAC OS X
내 불만의 중심엔 한영키 변환이 그 첫번째이고, 두번째는 바로 우분투엔 있는, 그러나 맥에는 없는
apt-get install … !!!!

맥북이 내 손에 쥐어진지 벌써 2달이 넘었껏만, 난 터미널에서 아직까지 팩키지 하나 제대로 설치하지 못하고 있었다. 아 그런데… 으흐흐흐 맥에는 apt-get 대신에 macport 라는 놈이 있었떤 것이었다..

이런 ㅜㅜ 왜 이제 안거야.. ㅎㅎㅎ

맥포트를 열씨미 설치했는데.. 어랏!! 잘 안된다.
아~~ 설정해야하는게 왜 이렇게 많냐…
아마 안되는 사람들은 설치문서를 제대로 안봐서
터미널의 path 설정을 제대로 해주지 못했기 때문이다.
맥포트 설정하기

위에 링크가 영문이므로.. 또 친절하게 정리해보자… ㅋㅋㅋ

일단, 터미널에서 env 를 쳐서 자신의 환경설정이 어떻게 되어 있는지 확인해보자.
PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bln:………..
만약 패쓰에 위처럼 opt 어쩌고 패스가 잡혀있지 않다면, 자신의 홈계정에 .profile 파일을 설정해야한다.

export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export DISPLAY=:0.0

위와 같이 .profile 을 설정하고, 다시 터미널을 열어서 port 명령어를 쳐보자..
만약에 없는 명령어라고 나오면, 아마도 bash 셸에 또다른 profile 이나 login 설정이 존재하기 때문이다.
자자 .bash_profile 또는 .bash_login 에 위와 같이 path 설정을 해주자..
만약에 기존에 패쓰가 존재하면, 알아서 적당히 합쳐라~!!

이제 맥에 레일스를 설치해보자..
레일스 설치하기
위에 링크가 영어라서 참 부담이 되는 사람들은 이참에 영어공부좀 하시라..

위 문서를 참조하기 전에 먼저 알아둬할 것이 있다.
위에 문서는 너무나 상세히 설명되어 있기때문에 그냥 무작정 따라서 치기만 하면된다.
그러나 최신버젼을 바이너리가 아닌 소스코드를 받아서 컴파일한후 설정하는 방법이므로
시간이 좀 걸린다. 하지만, 최신팩키지를 유지하고 싶다면 한번 해보는것도 나쁘지 않다.

또, 문서 맨 아래를 보면, 커맨트 내용중에 맥포트를 이용한 바이너리 설치방법이 있다.
맥포트를 위해서 열씨미 설치 해봤으니..한번 해보는것도 재밌을 것이다.

sudo port install ruby
sudo port install rb-rails
sudo port install rb-rubygems
sudo gem install mongrel—include-dependencies
sudo port install mysql5
sudo port install subversion

설치를 취소할려면,
sudo port uninstall ruby

맥포트 사용시 주의해야할점!!
sudo port installl all —> 요렇게 하면, 맥포트 소스파일에 있는 모든 팩키지를 설치하게 된다.
3GB정도된다. 주의하자!!

쓰다보니 길어졌다. 정리가 안된거 같기도하고,..일단 오늘은 여기까지
질문있으면 댓글 다삼~~~

랄랄라 루비 스터디 1회

아무래도 루비(Ruby)로 갈아탄다고 공식적으로 떠들어놓고,.. 암껏도 안할꺼 같아서…
매일매일 공부한거 올리기로 했다…
다행히 오늘 아침 주문해놓은 책이 왔다..


프로그래밍 루비, 레일스와 함께하는 애자일 웹개발 그리고


스티브 맥코넬 아저씨책 소프트웨어 프로젝트 생존전략과 Professional 소프트웨어 개발이 왔다.. 유후…

각설하고,.. 어제 루비를 하기위해 책한권없이 걍 인터넷 뒤져서 루비를 한번 깔아 보기로 했다.
이전에 레일스를 공부하겠다고 윈도우전용 one-click full package 가 있어서 깔아는 봤는데..
이번에 내가 주로 개발할 환경은 Mac 과 우분투 리눅스로 잡았다..
(각 OS 버젼에 따른 팩키지 다운로드는 바로 위에 윈도운 전용 링크 따라가면 있음..)

그래서 일단 Mac OS X에 먼저 깔아보도록하자…
다시한번 이야기하지만.. 지금 내가 설치하는건 레일스 프레임웍이 아니라..
루비 언어공부를 위한 루비 설치다. 물론 루비만 깐다고 되는것도 아니고 DB에서 부터 이거저거 깔아야 하는게 많터라…-

여튼 Mac OS X 에 깔기위해 아래 링크를 참조해서 각자 자신의 OSX 버전에 맞는 팩키지를 선택해서 다운로드한다. 난 OSX 10.4 호랭이 버젼이기때문에 아래 페이지의 가장 상위에 있는 팩키지를 다운로드했다.
Ruby One-Click Installer for OSX

설치는 모 간단하다… 맥오에스에서 마우스로 클릭 or 더블 클릭만으로 설치는 완료된다.
자자 완료 되었다면,.. 확인을 해봐야지…

터미털을 열고, irb 를 치면, 루비로 코딩을 할수 있게된다…
간단히 테스트할수 있는 아래 20분 튜토리얼을 보고 따라해보자!~!
영문만 보면, 울렁울렁해지는 초보자들을 위해.. 친절히 내가 한글 튜토리얼을 찾아 링크 걸어둔다..
(나 완전 착하지 않냐? ㅋㅋㅋ)

루비 20분 가이드
http://www.math.umd.edu/~dcarrera/ruby/0.3/ (요건 영문 튜토리얼)

사실 루비 튜토리얼은 인터넷에서 키워드 하나만 쳐 넣으면 완전 많다..
두번째 영문 튜토리얼은 구글에서 ruby tutorial 이라고 쳤을때 가장 상위에 나온 링크다..
물론 난 아직 안해봤다..ㅋㅋㅋ 앞에 한글가이드만 해봤다..

영문 튜토리얼은 다음 2회 스터디에서….

자자 오늘은 맛보기를 해봤으니..
나와같은 루비 초보자들은 찬찬히 다음회에 해봅시다! ㅋㅋㅋ

덧붙이는 말
난 절대적으로 루비 초급도 아닌 초보임을 강조한다.. 질문하지마라!!  답변 못해준다..ㅋㅋㅋ
물론 질문을 한다면.. 성심성의껏 아는대로 답변을 하겠으나… 모르면.. 어쩔수 없다공…ㅜㅜ..
여튼 나같이 루비를 날로먹고 싶은 사람들을 위해 내기준으로 서술했음을 밝힌다.
출처만 밝혀준다면, 라이센스는 없다!! 맘대로 퍼가시라… 틀린곳이 있다면 수정도 맘대로 하시라..
단, 틀린부분있으면.. 나에게도 알려주오~ +
+++++