기본 콘텐츠로 건너뛰기

프로젝트에 필요한 개발 Gem 7

프로젝트에 필요한 개발 Gem 7

http://www.rubyonrails365.com/7-must-have-gems-to-install-on-any-project/

Awesome Print

이것은 개체를보기 쉽게 해주는 gem입니다. 먼저이 gem을 넣지 않은 경우의 출력을보고하자.
조금 이해하기 어렵 네요. 그러면 gem을 넣어 봅시다. Gemfile에 다음을 추가합니다.
Gemfile
gem  'awesome_print' ,  require :  'ap'
bundle install 을하여 rails console  출시 넣습니다.
상당히 쉽게 볼 수있는 느낌이 듭니다. 단, Rails4.2에서는 PrettyPrint는 것이 표준으로 사기하도록되어 있고, 표준에서도 많이보고 쉽게되어 있네요.

Rails Panel

이 gem을 넣으면 Chrome의 Developer Tool에서 Rails 정보를 얻을 수 있습니다.
먼저 Rails 애플리케이션에 metarequest 을 넣을 필요가 있습니다. Gemfile 에 gem 'metarequest', group : development 를 추가하고 bundle install 합니다. 여기 에서 Chrome 확장을 설치하여 Rails 애플리케이션을 브라우저에서 열고 요소 검사에서 Developer Tool을 열면 Rails 탭이 나타납니다. 그 중에서도 다양한 정보를 검색 할 수 있습니다. 특히 ActiveRecord에서 원시 SQL이 쫙 볼 수있는 것은 편리하다라고 생각했습니다. 이것을 사용하기 전에 일일이 Rails를 시작한 콘솔에서 로그를 쫓아했습니다.

Peek

GitHub 사가 '만드는 (있었다?) 시스템 내부의 구멍적인 기능을 제공 해줍니다. 발행하고있는 SQL의 수 등 응용 프로그램의 주요 지표를 화면에 간단하게 표시 할 수 있습니다. 어댑터를 만들 수 있기 때문에 자신의 환경에 맞게 확장 할 수 있습니다. development 환경에서 항상 뷰에 표시하도록 해두면 무거운 페이지에서 어떤 처리가 시간이 걸려 있는지 등 한눈에 알 수 있으므로 いいい 생각합니다. production 환경에서도 개발자 등 제한된 사용자에게만 표시두면 production 환경에서의 문제 해결에도 도움이 될 것입니다.

Better Errors

오류가 발생했을 때 표준 오류에 비해보기 쉬웠하거나 텍스트 편집기를 시작할 수 있고, 콘솔을 브라우저에서 작업하여 인스턴스의 상태를 확인 할 수 있습니다.

Pry Rails

Rails 디버깅을 매우 편하게 해주는 gem입니다. 솔직히 이것 없이는 개발할 수 없을 정도입니다. Gemfile 에 gem 'pry-rails', group : development 를 추가하고 bundle install 합니다. 예를 들어, 컨트롤러의 어딘가에 binding.pry 이라는 것을 설명합니다.
class  HomeController  <  ApplicationController 
  def  index 
    @hoge  =  'hoge' 
    binding.pry 
  end 
end
해당 뷰를 브라우저에서 열면 rails server 를 시작하고 콘솔이 binding.pry 을 묻었다 곳에서 rails console 을 시작합니다.
Started GET "/"for : 1 at 2015-04-28 09:38:23 +0900
Processing by HomeController # index as HTML

From : /Users/hirotaka/Documents/workspace/hirotaka/development-gems/app/controllers/home_controller.rb @ line 4 HomeController # index :

    2 : def index
    3 : @hoge = 'hoge'
 => 4 : binding.pry
    5 : end

[1] pry (# <HomeController>)>
rails console 과 마찬가지로 binding.pry 타이밍 인스턴스의 정보를 참조하거나 변수를 대입 할 수 있습니다.
[1] pry (# <HomeController>)> p @hoge
"hoge"
=> "hoge"
[2] pry (# <HomeController>)>
또한 별도 pry-nav 라는 gem을 넣어두면 next 를 입력하면 단계별로 할 수 있습니다.
컨트롤러 이외에도 뷰에서 <% = binding.pry %> 할 때 사용할 수 있습니다.

Quiet Assets

기본 Rails 로그이라면 이런 출력이 가득 할오고있다라고 생각합니다.
Started GET "/assets/home.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css?body=1"for : 1 at 2015-04-28 09:32:07 +0900


Started GET "/assets/application.self-e80e8f2318043e8af94dddc2adad5a4f09739a8ebb323b3ab31cd71d45fd9113.css?body=1"for : 1 at 2015-04-28 09:32:07 +0900


Started GET "/assets/jquery.self-d03a5518f45df77341bdbe6201ba3bfa547ebba8ed64f0ea56bfa5f96ea7c074.js?body=1"for : 1 at 2015-04-28 09:32:07 +0900


Started GET "/assets/jquery_ujs.self-8e98a7a072a6cee1372d19fff9ff3e6aa1e39a37d89d6f06861637d061113ee7.js?body=1"for : 1 at 2015-04-28 09:32:07 +0900


Started GET "/assets/application.self-3a3c8b61bda630ee689740ce7cbd0dd8ea6fdd45e2c42eef4661ab38cf268afe.js?body=1"for : 1 at 2015-04-28 09:32:07 +0900


Started GET "/assets/turbolinks.self-c37727e9bd6b2735da5c311aa83fead54ed0be6cc8bd9a65309e9c5abe2cbfff.js?body=1"for : 1 at 2015-04-28 09:32:07 +0900


Started GET "/assets/home.self-877aef30ae1b040ab8a3aba4e3e309a11d7f2612f44dde450b5c157aa5f95c05.js?body=1"for : 1 at 2015-04-28 09:32:07 +0900
이것이라고 요청 정보 등을 참조하고 싶을 때 스크롤하여 반환해야합니다. 개발하는 동안은 Rails 자산 파이프 라인의 로그 정보가별로 필요없는 것이 아닐까요.
Gemfile에 gem 'quiet_assets', group : development 를 추가하여 주면 위와 같은 로그가 출력되지 않습니다 깔끔한합니다.
Started GET "/"for : 1 at 2015-04-28 09:54:09 +0900
  ActiveRecord :: SchemaMigration Load (0.1ms) SELECT "schema_migrations"* FROM "schema_migrations"
Processing by HomeController # index as HTML
  Rendered home / index.html.erb within layouts / application (0.9ms)
  User Load (0.2ms) SELECT "users"* FROM "users"WHERE "users" "id"=? ORDER BY "users" "id"ASC LIMIT 1 [ "id", 1]
Completed 200 OK in 154ms (Views : 144.9ms | ActiveRecord : 0.8ms)

Bullet

느린 페이지에서 일반적인 문제점은 N + 1 문제에 기인하는 경우가 많은 것이 아닐까요. 이 gem은 그런 페이지가 발견되면 경고를 표시 해줍니다. development에서 읽도록 해두면 특정 페이지에서 N + 1 문제가 있음을 쉽게 인식 할 수 있습니다.

NewRelic

이것은 유명한 시스템 모니터링 서비스 네요. 여기에서는 developement 환경에서 무료로 사용할 수있어 개발시 편리한 방법을 소개합니다. NewRelic.com 에 가입 (Sign Up)을합니다. 로그인 한 후 Add more]을하여 응용 프로그램을 추가합니다.
내부의 처리에서 SQL과 컨트롤러의 어느 부분에서 어느 정도의 시간이 걸려 있는지 등을 세밀하게 볼 수 있으므로 개발시에도 편리합니다.

댓글

이 블로그의 인기 게시물

linux tar.gz comp

ftp로 파일을 전송하는데 잡다한 파일들이 너무 많아서 (약 2만개) 전송에 시간이 너무 오래 걸리더라. 처음에는 scp로 복사 하려고 했는데 잘 안되서 했더니 엉망...; 그냥 압축해서 한번에 전송해서 수십분을 아껼 수 있었다. 유형 tar => 파일을 하나로 모은다. gzip => 압축한다. tar.gz => 하나로 모아서 압축한다. 압축/해제 tar로 압축 => tar -cvf temp.tar temp tar 압축풀기 => tar -xvf temp.tar tar.gz 압축하기 => tar -zcvf temp.tar.gz temp tar.gz 압축풀기 => tar -zxvf temp.tar.gz 리눅스 시스템 내에 대량의 파일을 복사할 때도 사용하면 편하다...

사원으로 가면 암걸리는 회사.

(1) 어떠한 일이 벌어지던 지휘 명령 체계를 반드시 지키도록 강요한다. 의사 결정을 앞당기기 위한 샛길을 허락하지 않는다. (2) 간단하게 해결할 수 있는 안건도 위원회에서 검토하게 하며, 위원회는 가능한 크게 만든다. 최소 5명 이상. (3) 될 수 있는 한 자주 회의를 열도록 유도한다. (4) 이전 회의에서 정해진 것을 되풀이해서 검토하도록 유도한다. (5) 중요한 업무가 있어도 회의를 열게 한다. (6) 문서의 형식, 제출 일자, 오탈자를 집요하게 추궁한다. (7) 될 수 있는 한 문서의 양을 늘린다. (8) 업무 승인 수속을 될 수 있는 한 복잡하게 한다. 제 아무리 간단한 일에도 3명 이상의 승인을 필수가 되도록 유도한다. (9) 조직내 권한 문제를 집요하게 추궁한다. 상층부의 허락을 받지 않고 독단으로 해결해도 되는 지 끊임없이 지적한다. (10) 업무할당을 할 경우, 항상 중요도가 낮은 업무에 집중하도록 유도한다. (11) 새로운 직원에게 경험을 쌓을 시간과 자원을 주지 않는다.

buddy

https://buddy.works/ 깃 서비스가 엄청나게 많아 지고 있는것 같다. 최근에 gogs 도 그렇고 예전에 쓰던 github clone 들... 찾아보면 많을 것 같다. 이번에 페이스북에 광고로 올라온 buddy도 그렇다. 1프로젝트당 1$ 라는데... 기회가 되면 써 봐야지 -.-