기본 콘텐츠로 건너뛰기

프로젝트에 필요한 개발 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과 컨트롤러의 어느 부분에서 어느 정도의 시간이 걸려 있는지 등을 세밀하게 볼 수 있으므로 개발시에도 편리합니다.

댓글

이 블로그의 인기 게시물

mac os + perl catalyst

맥 엘... 머를 사용하고 있다. 펄은 최신버전이 설치 되어 있다. cpan 모듈부터 설치한다. $ cpan App::cpanminus 바로 스마트시디 설치한다. $ https://github.com/cxreg/smartcd 그런데 zsh 쓰고 있어서 source 하면 터미널이 튕겨 버린다. 이렇게 하면 됨. $ source $HOME/.smartcd/lib/core/smartcd ( https://github.com/cxreg/smartcd/issues/25) 깃에 연동해야 하니까 ssh 키도 만든다. $ ssh-keygen 그런데 문제가 생기기는 한다... ivalid version format (version required) at /perl5/lib/perl5/Module/Runtime.pm line 386. BEGIN failed--compilation aborted at /perl5/lib/perl5/Catalyst/ScriptRunner.pm line 2. Compilation failed in require at Web/script/web_server.pl line 7. BEGIN failed--compilation aborted at Web/script/web_server.pl line 7. 뭐 대충 이런건데..... Moose 업데이트 하면 된다. cpanm Moose 이 때 PATH 경로안에  Moose 가 포함 되어 있어야 한다. 그냥 cpan 설치 할 때 moose도 포함 시켜서 한번에 인스톨하면 편함. 이제 맥에 포스트그래스만 설치하면 되는데...

전자정부 이클립스 스프링 부트

  1. 전자정부 이클립스 IDE 다운로드 2. 압축 해제후 실행.  Template Project 만들기. (아직은 Single 뿐이다.)

중 상급자가되기위한 JavaScript 【지식 편]

qiita : http://qiita.com/KENJU/items/c7fad62a12cc2809b507?utm_source=Qiita%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&utm_campaign=a25a5e9683-Qiita_newsletter_166_07_22_2015&utm_medium=email&utm_term=0_e44feaa081-a25a5e9683-32972029 그대로 복붙 해도 상관 없지만 나도 좀 보면서 정리 해야 되니까 조금씩 정리. 1. Basic Tips Index 1-1. 글로벌 변수를 남용하지 않는다. 1-2. for 루프 1-3. 암시 적 변환을 피하기 1-1. 글로벌 변수를 남용하지 않는다. , 타사 플러그인을 읽을 때 변수의 충돌 팀 구성원이 작성한 코드와 이름 충돌 옛날 쓴 자신의 코드에서 사용한 변수와 충돌 대책 : var JavaScript 는 var  없이 정의된 변수는 전역 변수로 스켄된다. function speakOut () { // global variable global = "Hello from global" ; // local variable var local = "Hello from local" ; console . log ( global ); console . log ( local ); } speakOut (); console . log ( global ); console . log ( local ); 대책 : 네임 스페이스를 사용 // Object for name space var myApp = {}; myApp . name = "My First JavaScript App" ; 대책 : 클로저를 이용. ( function (){ maybe_global = "...