Rails Diary 1 - 시작부터 너란 녀석은..

1. 루비 온 레일즈 공부 시작..

루비 온 레일즈 소스를 보게되는 상황이 있을 듯하여, 퍼펙트 루비 온 레일즈 라는 책을 며칠동안 소설 책 읽듯 그냥 줄줄 읽었다.

역시 소문대로 간편한 웹개발을 지향하는 웹프레임워크라는 것을 알 수 있었다. 비슷하게 간편함을 지향하는 Django 프레임웍 보다 ORM 부분에서는 훨씬 더 직관적으로 느껴져서 더욱 개발이 편한 프레임워크라는 기대를 가질 수 있었다.

며칠동안 코딩없이 책만 읽다가 이제 프로젝트를 만들어볼까해서 rvm으로 ruby가상환경을 만들고, gem으로 rails를 설치하고, rails로 프로젝트를 생성하였다.

프로젝트를 생성하자마자 예쁜 레일즈 첫 화면이 나올 것을 기대하며, 아래의 명령어로 레일즈 서버를 구동하였다.

$ rails server

예쁜 rails 첫화면을 볼 것이라는 기대는 바로 무너졌다. 아래와 같은 에러가 발생하였다.

Puma caught this error: Could not load the 'mysql' Active Record adapter. Ensure that the adapter is spelled correctly in config/database.yml and that you've added the necessary adapter gem to your Gemfile. (LoadError)
...

2. 4시간동안..헤딩..

어라 분명 책에서는 기본 sqlite3를 사용한다고 알고 있었는데, 왜?? 도대체 왜?? mysql을 찾지?? 소스를 찾아보았다 mysql을 찾는 부분은 전혀 없었다.

일단 구글 신에게 물어보기위해 검색을 하였다. 무언가 딱 맞아 떨어지는 예는 없었지만.. activerecord-mysql-adapter, mysql 등의 설치와 관련된 에러의 예들이 있어 비슷하게 해결을 시도했다. 안된다.. mysql2 설치.. 안된다.

소스에 mysql을 필요로하는 부분이 없는데, 위 해결책은 아니었던 것이다. 여러가지로 고민하다가 현재 설치 버전은 rails 5버전 책은 rails 4버전 이었던 것을 감안해서, 4로 설치시도를 하였다. 완전히 똑같은 에러메세지는 아니지만 역시나 mysql을 찾았다. 아…

자포자기 심정으로 ruby의 버전을 바꿔보았다. 안되었다..

3. 아니?! 이것때문?!

도서관에서 이것 저것 시도를 하다가 집으로 돌아왔다. 집에 노트북이 하나 더 있어서 다른 노트북으로 시도를 하였다.

어라? 어라라?? 프로젝트가 정상적으로 실행된 것은 아니나 mysql을 찾는 것이아니라 sqlite 버전 문제였다. sqlite가 1.4버전이 설치되었는데, 조금 낮추어 1.3버전대를 설치하니 학수고대하던 rails 첫 화면을 볼 수 있었다.

어라 왜지? 왤까? 도대체 무엇때문?

rvm 설치환경이 무언가 잘못되었을 듯하여 .zshrc 파일을 살펴보았다. 눈에 띄는 환경변수들이 있었다. 아래와 같은…

export DATABASE_URL="mysql://url정보"
export DATABASE_JDBC_MYSQL_URL="jdbc:mariadb://url정보"
export DATABASE_JDBC_MYSQL_USER="아이디"
export DATABASE_JDBC_MYSQL_PASSWORD="비번"

설마.. 위 환경변수들은 개인적으로 만들어놓은 스프링과 Django 프로젝트에서 사용하는 환경변수들이었다. 그래도 혹시나 하는 마음에 전부 주석처리하고 bundle install --force 명령어를 수행하니 어라 mysql을 요구하지 않고 sqlite 버전 문제로 해결이 가능한 에러가 떳다.

아 정말 이것때문이야 ㅜㅜ 4시간동안 삽질이 허무하게 느껴졌다. 환경변수들을 주석들을 풀어가며 문제의 변수를 찾았다. 아래 때문이었다.

export DATABASE_URL="mysql://url정보"

원인은 정확히 알 수 없으나.. 무언가 ruby라이브러리에서 이 변수를 참조하는 듯 하다.

4. 어쨋든 해결

그래도 레일즈 첫 화면을 감상할 수 있었다. rails 시작이다.

5. 부록

rails 5버전 프로젝트를 설치하면 기본 sqlite3 1.4 버전대가 설치가되는데 안된다. 1.3버전대로 강제로 낮추어야한다.