Rails 앱을 몇 개 만들다 보면 자신만의 선호하는 작업 방식이 생기기 마련입니다. Rails 콘솔에서 항상 awesome_print를 사용하고 싶을 수도 있고, rails new로 프로젝트를 생성할 때 minitest 대신 rspec을 사용하도록 만들고 싶을 수도 있습니다.
물론 명령어를 실행할 때마다 이런 환경설정을 일일이 지정하는 것이 크게 번거롭지는 않습니다. 하지만 이런 옵션들은 쉽게 잊어버리기 마련입니다. 그리고 컴퓨터가 내가 지시한 대로 동작하지 않을 때의 짜증은 이루 말할 수 없죠:
$ rails new best_app_ever
^C (한숨...)
$ rm -r best_app_ever
$ rails new best_app_ever --template=my_template
더 쉬운 방법이 있습니다. 몇 가지 작은 설정만 추가하면 명령어들이 여러분의 환경설정을 기억하게 되어, 매번 입력할 필요가 없어집니다.
.rc 파일로 환경설정 저장하기
많은 Ruby 도구들은 .rc 파일을 통해 환경설정을 간단하게 저장할 수 있는 방법을 제공합니다.
.rc 파일은 홈 디렉터리에 위치합니다:
$ ls ~/.*rc
.bashrc .irbrc .screenrc
.gemrc .railsrc .zshrc
그리고 gem, irb, rails 같은 명령어들이 이 파일에서 여러분의 환경설정을 찾습니다. 꼭 활용해 볼 만한 .rc 파일들을 소개합니다:
.irbrc
rails console을 실행할 때 모든 객체가 기본적으로 awesome_print 방식으로 출력되기를 원할 수 있습니다. 콘솔 세션을 시작할 때마다 AwesomePrint.irb!를 직접 입력할 수도 있지만, 그보다는 ~/.irbrc 파일에 해당 명령어를 추가하는 것이 좋습니다:
require "awesome_print"
AwesomePrint.irb!
이제 다음에 rails console을 시작하면 객체들이 자동으로 더 멋지게 출력됩니다.
.irbrc는 객체를 다룰 때 유용한 편의 메서드를 넣어두기에도 좋은 곳입니다:
require "awesome_print"
AwesomePrint.irb!
# klass의 인스턴스 메서드 중
# Object에 이미 정의되어 있지 않은 것들만 반환
def m(klass)
klass.public_instance_methods - Object.public_instance_methods
end
~/Source/rcfiles jweiss$ bin/rails c
Loading development environment (Rails 4.1.1)
irb(main):001:0> m ActiveRecord::Base
[
[ 0] [](attr_name) ActiveRecord::Base (ActiveRecord::AttributeMethods) (unbound)
[ 1] []=(attr_name, value) ActiveRecord::Base (ActiveRecord::AttributeMethods) (unbound)
[ 2] _commit_callbacks()
... 약 200개의 메서드 더...
이렇게 자신의 환경을 커스터마이징하기 시작하면, 사용하는 라이브러리들이 단순히 '사용하는' 라이브러리가 아니라 '나만의' 라이브러리처럼 느껴지기 시작할 것입니다.
.gemrc
RubyGems 역시 gem 관리를 더 편리하게 해주는 자체 .rc 파일을 가지고 있습니다. 많은 개발자들이 rdoc과 ri 문서 생성을 건너뛰어 gem 설치 속도를 크게 높이기 위해 .gemrc를 사용합니다:
gem: --no-document
하지만 할 수 있는 것은 이것보다 훨씬 많습니다. .gemrc에서 조정할 수 있는 값들은 더 있습니다. 예를 들어 :sources:(다른 gem 서버에서 gem 검색)나 :backtrace:(오류 발생 시 전체 백트레이스 확인) 등이 있습니다:
gem: --no-document
:backtrace: true
:sources:
- https://my.internal.gem.server
- https://rubygems.org
이 파일에 설정할 수 있는 나머지 옵션들은 gem environment 명령어 문서를 참고하세요.
.railsrc
몇 년 전 Rails 3부터 기본 Rails 스택을 사용하지 않는 앱을 손쉽게 생성할 수 있게 되었습니다. minitest를 사용하지 않는 앱(예를 들어 나중에 rspec을 추가하기 위해)을 만들고 싶다면 아래처럼 간단합니다:
$ rails new my_awesome_app --skip-test-unit
아니면 회사에서 자체 프로젝트 템플릿을 사용할 수도 있습니다:
$ rails new my_awesome_corporate_app --template=https://example.com/my_app_template
일단 Rails 스택에 익숙해지면 모든 새 프로젝트에 같은 스택을 사용하고 싶어질 것입니다. 하지만 새 앱을 생성할 때마다 이런 파라미터를 추가하는 것을 잊기 쉽습니다. 대신 이런 파라미터들을 .railsrc 파일에 미리 넣어둘 수 있습니다:
--template=https://example.com/my_app_template
--database=postgresql
이제 매번 올바른 파라미터로 rails new를 실행할 수 있습니다. 특정 프로젝트에서만 이 설정을 무시하고 싶다면 --no-skip-test-unit 스타일의 명령어로 덮어쓸 수도 있습니다.
환경을 나만의 것으로 만들기
약간의 사전 설정 작업만으로 개발 환경이 훨씬 편안하게 느껴질 것입니다. 원하는 파라미터 없이 실수로 명령어를 실행하는 고통을 피할 수 있고, 올바른 옵션을 찾으려고 매번 문서를 뒤질 필요도 없습니다. 그리고 바로 코드 작성이라는 재미있는 부분으로 넘어갈 수 있습니다.