
Ruby on Rails 코드를 짤 때 있어서 남들한테 홈페이즈 결과(프론트)가 보여지는거도 중요하지만, 내부 퍼포먼스도 중요합니다. 사실 레일즈에서는 SQL 문법으로 안쓰고 ORM 방식, 즉 모델 참조 방식으로 데이터 조작을 하다보니 SQL 문법에 관심이 없을 수도 있는데 이는 먼 미래에 있어선 큰 치명적일 수 있습니다. 결국 최종적으로는 Rails에서 작성된 ORM이 SQL로 변환되서 데이터 탐색이 이루어지기 때문입니다. 이번에는 SQL N+1 문제에 대해 맛보기 형식으로 한번 글을 써나아가보고자 합니다. 테이블 쿼리 탐색에 있어, 테이블 및 데이터는 위 테이블 내 자료를 기반으로 진행합니다. SQL N+1 문제 발생 N+1 문제란? SQL 구문 한번의 입력만으로 결과가 나와야 하지만 추가적으로 N번..

Ruby on Rails 코드를 짤 때 있어서 남들한테 홈페이즈 결과(프론트)가 보여지는거도 중요하지만, 내부 퍼포먼스도 중요합니다. 이번에는 SQL 퍼포먼스에 대해 한번 글을 써나아가보고자 합니다. SQL Performance : update / update_all SQL 퍼포먼스를 설명에 있어 대표적으로 update, update_all 메소드에 대해 살펴보겠습니다. 1) update : 조건에 맞는 메소드에 대해 Attribute 내용을 수정합니다. 2) update_all : 조건에 맞는 데이터 전체를 한번에 수정합니다. 비교분석 SQL 작업 속도 update 메소드를 통해서도 조건에 맞는 다수의 데이터를 한번에 수정할 수 있긴 합니다. 그런데 update 메소드와 update_all 메소드의 모..

해당 글은 https://blog.naver.com/kbs4674/221420285631 로 부터 게시글이 이전되었습니다. 루비온 레일즈에서 다루는 여러가지 메소드를 소개하고자 합니다. 위 테이블의 자료를 기반으로 한번 여러 메소드를 알아보겠습니다. 1. where VS find_by 1) where : 조건에 맞는 데이터에 대해 여러 개의 데이터 결과가 출력됩니다. # Model.where(attribute: value) Post.where(title: "서윤 연구소") 2) find_by : 조건에 맞는 데이터에 대해 한 개의 데이터 결과가 출력됩니다. 출력되는 한 개의 데이터는 제일 처음에 쓰여진 데이터입니다. 번외 여기서 where에 대해서 좀 더 깊게 짚어보자면, 아까와는 조금 다르게 # Mod..

해당 글은 https://blog.naver.com/kbs4674/221182443309 로 부터 게시글이 이전되었습니다. 댓글에 또 다른 답 댓글, 즉 중첩댓글에 대한 글을 다룹니다. 중첩댓글 : act as commentable with threading 참고 Post Scaffold에서 댓글을 구축하는 예시로 설명함. Devise Gem을 기본적으로 사용한다는 가정 하에 사용하셔야 합니다. [참고] 1. Gemfile 에 다음 내용을 입력해줍니다. gem 'acts_as_commentable_with_threading' 새로운 Gem을 설치해 주세요. bundle install 2. 다음 명령어를 입력해서 Model과 DB(Migration 파일)를 생성해 줍니다. rails generate act..

해당 글은 https://blog.naver.com/kbs4674/221174702377 로 부터 게시글이 이전되었습니다. 띵동! 누군가가 제 게시물에 댓글을 달면 그 알림이 오면 참 좋겠죠! 이번에는 누군가 댓글을 달면 알람이 울리는 알람잼에 대해 같이 해보겠습니다! 참고 1. Deivse Gem [클릭], act-as-commentable-with-threading(중첩댓글) [클릭] Gem을 활용한 기준으로 설명드립니다. 알람잼 : unread 참고 시작 전 제 댓글 방식은 다음 댓글방식을 이용했습니다. [참고 : 클릭] 위 댓글 방식을 기준으로 설명합니다. 1. Gemfile 을 열어서 다음 내용을 추가합니다. gem 'unread' 이어서 Gem을 설치합니다. bundle install 2. 터..

해당 글은 https://blog.naver.com/kbs4674/221173415422 로 부터 게시글이 이전되었습니다. 투표를 진행하려면 찬성, 반대 이 2가지에 대한 선택권이 있어야 합니다. 이번 글에서는 이런 투표 시스템을 간단히 구축할 수 있는 Gem을 만들어 보겠습니다. 참고 본 실습에 있어선 Post Scaffold를 기반으로 설명이 진행됩니다. 투표 Gem, Gem : acts_as_votable 1. Gemfile에서 다음 Gem을 입력합니다. gem 'acts_as_votable' Gem을 설치합니다. bundle install 2. 터미널에 다음 명령어 입력합니다. rails generate acts_as_votable:migration 그럼 새로운 테이블이 생성된게 확인될겁니다. 3..

해당 글은 https://blog.naver.com/kbs4674/221187526054 로 부터 게시글이 이전되었습니다. 홈페이지를 원만하게 운영하기 위해서는 관리자 메뉴얼 창이 따로 또 필요하곤 합니다. 하지만 혼자 스스로 관리자 페이지를 만들기란 쉽지 않습니다. 데이터가 무수히 많을 때를 대비해 SQL 최적화 작업을 해야하고, 그 외 레일즈의 모든 이론이 관리자 페이지 기술에 담겨져야할 수도 있기 때문입니다. 해당 Gem이 정말 좋은게 자기가 알아서 모든 model을 탐색해 내고, 부트스트랩/그리드가 적용되어 있어서 UI도 전체적으로 괜찮습니다. 참고 Devise Gem이 사전에 설치되어 있어야 합니다. [Devise Gem 설치법 클릭] 어드민 관리자 페이지 : rails_admin 1. Gemf..

해당 글은 https://blog.naver.com/kbs4674/221069915874 로 부터 게시글이 이전되었습니다. 게시판이 운영되는 거의 모든 사이트는 최소 '관리자'와 '유저' 이 2가지로 계급이 나뉘어 있을겁니다. 유저는 글을 쓰거나, 자신의 글에 대해서만 수정/삭제가 가능한 반면, 관리자는 게시글을 누구의 글이든 삭제 혹은 수정을 할 수 있겠죠. 이렇게 홈페이지 운영에 있어서 효율적인 관리를 위해선 '권한'이라는 계급이 필요합니다. 이번 시간에는 Devise와 rolify, cancancan Gem을 이용해서 '권한설정' 에 대해 알아보겠습니다. 시작 전 유의사항 1. Gem : devise이 기본적으로 깔려있어야 합니다. 참고 devise Gem 설치법 [클릭] 2. 필자는 CRUD 사용..