본문 바로가기

소프트웨어-이야기/프로그래밍 언어와 프레임워크

[RAILS] association_basics counter_cache 레일즈 가이드에 counter_cache라는 개념이 있길래, 뭔지 궁금해서 찾아봤다.class Comment < ApplicationRecord belongs_to :post, counter_cache: trueendclass Post < ApplicationRecord has_many :commentsend예를 들어, 게시물의 리스트를 조회하는 페이지를 만든다고 생각해보자. 이 때, 게시물(Post)에는 댓글(Comment)가 남는 다.이 때, 아래의 예제 코드처럼, 루프를 돌때마다 댓글의 크기를 세면N+1 쿼리 문제가 발생하게 된다. Started GET "/posts" for ::1 at 2016-03-16 23:47:08 -0700 ActiveRecord::SchemaMigration Load (..
루비온레일즈에서 Class 메서드와 Instance 메서드 이해하기 루비온레일즈에서의 클래스 메서드와 인스턴스 메서드를 어떨 때 사용하는지 찾아봤다.그런데 뭐... 루비라고 특별히 다른건 아닌거같고, 다 비슷하긴 해보인다. 참고한 포스팅http://culttt.com/2015/06/10/understanding-class-methods-verses-instance-methods-in-ruby/ 클래스 메서드란?클래스 메서드는 클래스에 정의된 메서드를 말한다. 이어서 예제 코드를 보고 설명하고자 한다 ㅎㅎ class User def self.find(id) puts "finding user with the id of #{id}" end end 보통.. ㅎㅎ 저렇게 id를 넘기면 user 객체를 리턴시켜준다.아무튼.. class 메서드는 앞에 self를 붙여준다. class..
레일즈 엔진 (Rails Engine) 레일즈 애플리케이션 프로젝트가 여러개 있을 때, 공통으로 사용하는 함수나 상수가 있으면 ruby gem을 사용하면 된다. 그런데 공통으로 사용하는 view가 여러개 있으면 어떻게 할까?공통으로 사용하는 함수가 Model이라면?공통으로 사용하는 함수가 레일즈를 기반으로한다면? 이럴 때는 Gem으로 공통 라이브러리를 관리하기에는 한계가 있다. 이런 상황에 필요한 레일즈 기능은 Engine이다. 처음에 레일즈 Engine을 알게된 배경은, 리멤버의 블로그를 통해서였다.리멤버 개발 블로그 - Rails Engine을 이용한 Zeus 프로젝트 레일즈 엔진은 레일즈를 모듈처럼 쪼개놓은 것 같은 느낌이다.내가 만들고 있는 레일즈 애플리케이션에 엔진을 끼워넣는 느낌으로 사용하는거다.- 공통적으로 사용하는 컨트롤러를 만..
레일즈4 + Mass Assignment + Strong Parameter MassAssignmentMassAssignment가 발생할 수 있는 상황 class UserController
리팩토링:루비에디션 오늘부터 읽고있는중...!! 루비 기반 리팩토링 책은 다 번역이 엉망이라서 쳐다도 안봤는데, 읽어보니 번역이 매끄러워서 술술 익힌다 ㅎㅅㅎ 회사에서 일하면서 배운, 리팩토링에 대한 사고방식이랑 같은 내용이 들어가있어서 더 재미있게 잘읽힌다 ㅎㅎ 책을 읽으면서 궁금했던 것들 리스트 * each루프 대신, inject 같은 메서드를 사용하는 것의 장점은 ? ( p. 27, Replace Loop with Collection ) - 간단하다는 점의 구체적인 이유는?
[Ruby]nil? VS blank? VS empty? VS any? VS present? .nil? .blank? .empty? .any? and .present?.nil?.blank?.empty?.any?.present?nilTRUETRUExxfalse[]falseTRUETRUEfalsefalse{}falseTRUETRUEfalsefalse""falseTRUETRUExfalse" "falseTRUEfalsexfalsefalsefalseTRUExxfalse99falsefalsexxTRUE0falsefalsexxTRUEx: NoMethodError가 나는 케이스이다.참고 링크
[루비스타일가이드]RUBY String의 to_s와 += 회사에서 최근 품질관리를 위하여 루보콥을 사용하고 있다.어떻게 사용하고 있냐 하면은, git을 커밋할 때 마다 루보콥이 돌고 remote 브랜치에 push를 할 때면 RSPEC이 돈다.그래서 commit 할 때, Rubocop과 Rspec이 도는 것을 이번 주에 처음 해보았다.RSPEC이 REMOTE push 때마다 매번 도는건 여전히 귀찮지만 루보콥이 도는건 꽤 만족한다. 루보콥에서 걸린 것들을 고쳐나가면서, 루비 스타일 가이드를 읽게되니 기존의 소스코드가 아닌 다른 방법으로 루비를 배워가는 기분이여서 좋다 ㅎㅁㅎ 그러면서 알게된 String Class와 관련된 루비 스타일 가이드를 정리해보고자 한다. 1. to_s를 쓰지 말라! [link]"#{object}" 이런식으로 "#{ }" String 형태..
[ROR]Asset Pipeline / 자바스크립트, CSS 압축 rails 설치 시, node.js를 설치해야하는 이유에 대해서 찾다보니 assets pipeline 키워드가 등장했다. 레일즈를 production 환경으로 서버를 띄우면, javascript 파일과 css가 압축된 형태로 배포된다. 그래서 그러려니.. 했었는데 그게 바로 assets pipeline에 속하는 기능이였다. 이번 포스팅은 rails guide Asset Pipeline를 번역하는 것을 기반으로 작성해나가던 중... rorlab에서 작성한 번역본을 발견하여 핑거프린트의 주의점까지만 작성하고, 블로그 작성을 끝내기로 결정!하였다. asset pipeline은 JavaScript와 CSS 파일들을 압축하는 기능을 갖고 있다. 그리고 assets 안에 다른 언어들과 커피스크립트, Sass, ER..