레일스 라우트

많은 레일스 초보자들이 궁금해 하는 레일스 라우팅의 비밀을 설명합니다.

얼마 전 페일스북 그룹에 올라 온 질문을 보고 초보자들에게 흔히 있을 수 있는 궁금증이라고 생각하여 이 글을 작성한다.

웹서비스는 라우팅으로부터 시작한다고 해도 과언이 아닐 것이다.

특히나 레일스도 REST형식의 라우팅을 지원한다. 레일스는 외부로부터 서버로 들어오는 URI 요청을 파싱하여 어떤 컨트롤러를 호출할 것인지 정하게 되는데, 해당 컨트롤러의 특정 액션을 구체적으로 호출한 후 액션명과 동일한 뷰 템플릿 파일(정확히는, [action-name].html.erb)을 app/views/[controlle-name]/ 디렉토리에서 찾아 페이지를 렌더링한 후 요청결과로써 클라이언트에게 발송하게 된다.

이와 같은 요청/응답의 과정은 레일스 프로젝트의 COC 원칙 중의 대표적인 사례다.

계속 “레일스 라우트” 읽기

레일스용 웹소켓 : 액션케이블

일반적으로 웹애플리케이션은 HTTP 통신 프로토콜(서버와 클라이언트 간의 단방향 통신(half-duplex communication))을 이용하여 서비스를 한다. 따라서 채팅 프로그램을 웹으로 구현할 때는 데이터의 동시성에 관한 문제를 해결하기 실무적으로 어렵게 되고 기존에는 대안으로 일정한 시간 간격으로 서버에서 클라이언트로 데이터를 보내는 polling 방식을 사용한다.

DHH는 이러한 polling 방식의 문제점을 해결하기 위해 양방향 동시 통신을 가능케 해 주는 웹소켓을 레일스 프레임워크에서 레일스 방식으로 쉽게 구현할 수 있도록 했는데 이것을 액션케이블(ActionCable)이라고 한다. 레일스 5.0에 처음으로 도입되었다.

계속 “레일스용 웹소켓 : 액션케이블” 읽기

중첩 댓글 기능 구현하기

이 글에서는 댓글기능을 스레드 방식으로 중첩해서 보이도록 기능개선을 해 볼 것이다.

레일스를 이용하여 프로젝트를 작성할 때 특정 글에 대한 댓글기능을 구현하는 것은 매우 단순하고 쉬운 편이다. 물론 구현 방식에 따라 그 난이도는 다를 수 있지만, 이에 대해서는 인터넷 상에 이미 많은 자료가 소개되어 있다.

이 글에서는 댓글기능을 스레드방식으로 중첩해서 보이도록 기능 개선을 해 볼 것이다.

구현로직은 사실은 매우 간단하다. 댓글 모델에 상위 객체로 연결할 수 있도록 외래키를 추가하고 댓글 모델에 self join 관계 선언을 해 주면 된다.

계속 “중첩 댓글 기능 구현하기” 읽기

더욱 강력해진 Turbolinks 3

곧 정식으로 릴리스될 예정인 레일스 5의 여러가지 추가 기능 중에 두 가지가 주목을 받고 있다. 하나는 'ActionCable', 다른 하나는 'Turbolinks 3'다.
'ActionCable'에 대해서는 별도의 글을 준비 중이며, 여기서는 'Turbolinks 3'에 대해서 추가된 기능 중심으로 알아 보도록 하겠다.

참고동영상: New Turbolinks 3 Features With Ruby on Rails

특히 'Turbolinks 3'에서 추가된 기능 중 'Partial Replacement'에 대한 내용을 샘플 애플리케이션과 함께 알아 보도록 하자.
계속 “더욱 강력해진 Turbolinks 3” 읽기

fields_for 사용기 2016년 업데이트

2012년 04월 14일 “fields_for 사용기”란 제목의 블로그 글을 작성한 적이 있다. 무려 4년전의 일이다.

세월이 많이 흘렀다. 레일스는 최근에 5.0.0.beta1 버전을 릴리스했고 현재 루비의 최신 버전은 2.3.0 이다.

이 글은 이전 글에 대한 2016년도 업데이트라고 생각하면 된다. 계속 “fields_for 사용기 2016년 업데이트” 읽기

Bootstrap용 WYSIWYG 웹에디터 Summernote 사용시 서버로 로컬 이미지 업로드후 삽입하기 (2)

최근에 summernote0.7.1 버전으로 업그레이드되면서 summernote-rails 젬도 0.7.1.0 버전으로 업데이트되었다.

예전에 Bootstrap용 WYSIWYG 웹에디터 Summernote 사용시 서버로 로컬 이미지 업로드후 삽입하기 (1)라는 제목의 글을 블로그에 올린 바 있다.

summernote-rails 젬이 0.7.1.0으로 버전업되면서 기능추가 및 업데이트가 있어서 이 글에서는 이전 글에서 업데이트된 내용을 소개한다. 계속 “Bootstrap용 WYSIWYG 웹에디터 Summernote 사용시 서버로 로컬 이미지 업로드후 삽입하기 (2)” 읽기

터보링크(Turbolinks) 이해하기

동작기전

레일스 애플리케이션의 응답 속도를 높이기 위한 노력의 일환으로 등장한 것이 바로 터보링크(Turbolinks)다. 터보링크는 이름에서도 짐작할 수 있듯이 웹페이지에 있는 링크를 클릭했을 때 현재 페이지를 유지한 채, 브라우저에서 전체 웹페이지를 재컴파일하지 않고 BODY 태그와 헤드 부분의 ‘TITLE’ 값만 불러오도록 함으로써 전체적인 응답속도를 향상시키도록 한다. 계속 “터보링크(Turbolinks) 이해하기” 읽기