
Ruby on Rails 공식 가이드 따라잡기
₩55,000
입문 / Ruby, Ruby on Rails
4.5
(4)
이 강의를 통해 Ruby on Rails를 쓰는 곳은 왜 쓰는지 이해하고 이 언어와 프레임워크로 어떻게 서비스를 만들 수 있는지 공식 가이드를 따라가보면서 이야기해요.
입문
Ruby, Ruby on Rails
카카오, 루닛 등을 거쳐 지금은 당근마켓에서 중고거래 서비스를 개발하는 백엔드 엔지니어로 일을 하고 있어요.
질문&답변
안녕하세요 강사님 질문이 있어 글을 작성합니다.
안녕하세요, 질문 감사드려요! 아래와 같이 답변드릴게요.1. 서비스 계층과 레포지토리 계층 Rails에서는 Active Record 패턴을 사용해서 데이터 액세스를 직접 모델에서 처리하는 경우가 많아요. 그래서 전통적인 의미의 '레포지토리 계층'을 따로 두지는 않아요. 하지만 비즈니스 로직이 복잡해질 경우, Service Object나 Query Object 같은 패턴을 사용해서 서비스 계층을 나누기도 해요.2. 마이그레이션 파일 관리 마이그레이션 파일이 많아져도 성능에는 영향을 주지 않지만, 관리가 어려울 수 있어요. 이럴 때는 schema.rb 또는 structure.sql을 기준으로 기존 마이그레이션 파일을 정리하고, 새로운 베이스 마이그레이션을 생성하는 방법을 사용하기도 해요.3. DTO 객체 변환 여부 Rails에서는 보통 DTO 객체를 따로 만들지 않고, Active Record 모델을 그대로 JSON으로 변환해서 API 응답으로 보내는 경우가 많아요. 하지만 ActiveModel::Serializer나 json_builder 같은 도구를 활용하면 Spring에서 DTO를 사용하는 것처럼 특정 필드만 선택해서 변환할 수도 있어요.4. 요청 경로 관리 네, Rails에서는 routes.rb에서 모든 요청 경로를 정의하는 게 일반적이에요. 각 컨트롤러에서 개별적으로 경로를 관리하지 않고, RESTful 구조에 맞춰 resources 메서드를 사용해서 자동으로 경로를 생성하는 방식이 보편적이에요.질문해 주셔서 감사합니다!
질문&답변
강의 감사합니다.
안녕하세요, 개인적으로는 설정할 것들이 적은 standardrb를 추천드려요. 저도 개인 프로젝트에서는 standardrb를 사용하고 있기도 해요. 하지만 그것도 결국은 rubocop을 활용한 것이라서 하나씩 설정을 잡아가는 걸 선호하신다면 rubocop을 써보셔도 좋을 것 같네요!
질문&답변
kamal로 배포해보기 챕터는 아직 업데이트 전인가요?
안녕하세요, 현재 준비 중인 강의 항목인데, 영상과 내용이 없는 상태에서도 노출되고 있었네요. 기대하셨을 텐데 불편을 드려 죄송합니다. 이달 안으로 강의를 업로드할 예정이며, 준비되는 대로 안내 드리겠습니다. 조금만 기다려 주시면 좋은 내용으로 찾아뵙겠습니다! 감사합니다.
질문&답변
tailwindcss code generator 링크가 잘못된 것 같아요.
안녕하세요!https://chatgpt.com/g/g-hrRKy1YYK-tailwind-css-builder-windchat제작자 홈페이지에서 링크복사했었는데 랜딩 확인을 안했었네요ㅠ강의노트도 수정해둘게요!제보 감사합니다.
질문&답변
show api 작성시 생성된 @article을 instance 변수로 만드는 이유가 있나요??
안녕하세요, zbqmgldjfh님.단순한 API만 제공하는 Controller였다면 instance 변수로 선언하지 않아도 되는게 맞아요.가이드의 경우에는 View까지 그려줘야 하는데 View가 결국은 Controller를 통해서 그려지기 때문에 View 내부에서 article의 데이터에 접근이 필요한 경우에 위와 같이 선언해서 가져다 쓰는 용도로 쓰이고 있어요.그러지 않고 사용한다고 하면 View에서 API콜을 따로 해서 필요한 값을 받아가는 방식이 있을텐데 이 방식이 Ruby on Rails에서는 일반적인 사용패턴이라고 알고 있어요. 언급하신 다른 메소드가 참조하는 좋지 못한 방식이라는 점이 Rails에서는 before action으로 미리 객체의 값을 넣어두고 메소드에서는 참조만 하게 해서 동일 코드를 제거하는 효과를 가지기도 해요.before_action :set_article def set_article @article = Article.find_by(id: 123) end def foo "Title is #{@article.title}" end def bar "Description is #{@article.description}" end