Ruby on Rails 프로젝트 내부에는 환경변수 및 Rails 프로젝트 Secret Key 인증 용도로 사용할 수 있는 인증파일이 존재합니다. 해당 개념에 대해 Rails 5.1 버전과 Rails 5.2 버전을 나누어서 설명을 진행해 보겠습니다. Rails 5.1 버전의 인증방식 Raisl 5.1 버전의 인증파일 내용구조는 아래와 같습니다. Rails 5.1 버전에는 config/secrets.yml 파일에서 Key/Value 관리 및 secret Key 인증이 이루어집니다. 또한 5.1에서 Production 환경으로 서비스를 배포를 하려면 아래 과정을 거쳐야 하는게 있습니다. 1. 다음 명령어를 통해 랜덤으로 생성되는 secrets key를 알아냅니다. rake secret 2. 해당 Key를 F..
Ruby on Rails에서는 기본적으로 서버를 키는 순간부터 로그기록이 시작됩니다. 로그는 서버의 성공부터 작업 실패까지 모든활동기록 을 담고 있고 해당 활동 때 무엇을 했는지에 대한 기록이 다 나타나있습니다. 그리고 만약에 언제 서버에 문제가 터졌을 경우에, 해당 로그기록을 보면 어떤 오류를 발생하며 문제가 생겼는지 대응을 할 수 있습니다. 사람은 24시간 내내 서버의 이벤트를 살펴볼 수 있지 않습니다. 그렇다보니 사실 로그파일은 성공에 대한 작업보단 실패에 대한 작업(라우터 경로 에러, 메소드 오류, nil 오류, 등) 등을 살펴보는 목적이 더 큽니다. 서비스를 운영함에 있어서 어느 날 특정 사용자 그륩만이 서비스 이용이 안된다고 제보가 왔거나, 예기치 못한 상황으로 서버가 죽었을 경우, 제일 먼저..
데이터베이스를 다룸에 있어, 때로는 2개 이상의 테이블을 하나로 합친 후, 공통된 데이터에 대해 빠른 탐색 처리를 해야할 필요가 있습니다. 이번 설명은 상황을 하나 제시하여 설명을 하겠습니다. 상황 예를들어 아래와 같은 테이블 설계가 되어있다고 치겠습니다. hit_products 모든 특가 상품 데이터 book_marks 유저(user)가 어떤 특가 상품(hit_products)에 대해 북마크를 했는지에 대한 데이터 keyword_pushalarm_list 유저(user)가 등록한 키워드를 기반으로 받은 핫딜 정보에 대한 푸쉬알람 1. 개발자는 hit_product 테이블 내 데이터 중, 현재(2020년 1월 31일)를 기준으로 하여 작성된지 30일이 지난 데이터를 자동으로 삭제하는 코드를 구현하려 합니..
때론 프로젝트를 하면서 B 프로젝트에서 A 프로젝트가 가지고 있은 데이터베이스를 참고해야 하는 경우가 종종 생기곤 합니다. 즉, B 프로젝트는 데이터베이스를 연동(Remote)을 해서 활용을 해야한다는 겁니다. 이번 시간에는 다른 서버의 Database와 연동(Remote) 연결(Connect)을 하는 법에 대해 알아보겠습니다. 참고 1. 해당 프로젝트에서는 DB를 가지고 있는 메인 프로젝트는 EC2, DB를 Remote Connect할 프로젝트의 호스트는 EC2 및 Goorm IDE로 진행하겠습니다. 2. Database는 PostgreSQL을 기반으로 진행합니다. 3. 사전에 레일즈 프로젝트(DB를 가지고 있는 레일즈 프로젝트, DB가 아예 없는 레일즈 프로젝트)를 준비해주세요. 4. 해당 프로젝트의..
이번 시간에는 검색 기능에 있어 고민을 가지고 해결 과정을 파헤쳐보겠습니다. [떠리몰] 남성 플리스 기모 팬츠 (7,990원/무료배송) ORM 방식의 SQL을 통해 문자열 탐색에 있어 위 글자([떠리몰] 남성 플리스 기모 팬츠 (7,990원/무료배송))를 검색한다고 해보겠습니다. Case 1 : Full-Name [Model].where(title: "[떠리몰] 남성 플리스 기모 팬츠 (7,990원/무료배송)") 검색창에 "플리스[떠리몰] 남성 플리스 기모 팬츠 (7,990원/무료배송)" 라고 검색을 시도할 시 당연하게도 결과가 잘 나옵니다. Case 2 : 일부 단어 탐색 [Model].where(title: "플리스") 검색창에 "플리스" 라고 검색을 시도해 본다면 검색 결과는 안나옵니다. Case ..
해당 글은 https://blog.naver.com/kbs4674/221682881216 로 부터 게시글이 이전되었습니다. http://www.damda.info " Damda 홈페이지를 운영하면서 겪었던 이슈 중 하나인 SQL 검색어 문법으로 쓰이는 like 문법에 대해 소개하는 글입니다. " Damda 홈페이지 메인에는 대학교를 검색하는 창이 존재합니다. 그런데 홈페이지를 운영하게 되면서 해당 검색어 창에 대해 이슈를 겪게 되었습니다. 문제 찾아내기 1. Rails 내 검색 문법 일단, Rails 내에서 검색 문법에 쓰인 코드는 다음과 같습니다. @searches = Univ.where("univ_name_eng like ?", "%#{params[:search_univ]}%") 2. 데이터 애트리뷰..
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 메소드의 모..