지난 글들
1699개의 글이 있습니다
Ruby 클래스 변수와 인스턴스 변수: Rails 애플리케이션 개발 시 이해와 활용
Ruby Class Variables vs Instance Variables Explained
- 인스턴스 변수(`@`)는 특정 객체에 속하며 각 객체마다 고유한 상태를 저장하는 데 사용되어 객체별 데이터 관리에 적합합니다.
- 클래스 변수(`@@`)는 클래스 및 모든 인스턴스, 서브클래스 간에 공유되므로 신중하게 사용하지 않으면 예기치 않은 부작용을 초래할 수 있습니다.
- Rails 애플리케이션에서는 클래스 변수의 위험성 때문에, 클래스 레벨의 공유 데이터를 위해서는 클래스 인스턴스 변수(`@` + `self.method`)를 사용하는 것이 권장됩니다.
RailsCarma
2025년 12월 10일
Rails 8의 복합 기본 키(CPK) 네이티브 지원: 진화와 활용 전략
Rails Native Composite Primary Keys: A Complete Evolution from Rails 3 to Rails 8
- Rails 8은 기존 단일 컬럼 ID 방식의 한계를 극복하고, 여러 속성을 조합한 복합 기본 키(CPK)를 프레임워크 수준에서 네이티브로 지원합니다.
- 새로운 CPK API는 ActiveRecord 모델의 식별자 정의부터 라우팅, 파라미터 처리까지 일관된 흐름을 제공하여 도메인 기반의 견고한 시스템 설계를 가능하게 합니다.
- 기존 `composite_primary_keys` gem 사용자는 Rails 8 업그레이드 시 네이티브 CPK의 기능 범위와 사용 사례를 면밀히 검토하여 점진적인 마이그레이션 전략을 수립해야 합니다.
Saeloun
2025년 12월 10일
의도적이고 견고한 소프트웨어 설계를 위한 리핑(Riffing) 프로세스
Dead Code — Crushing Riffs
- Kasper Timm Hansen은 Dead Code 팟캐스트에서 의도적이고 견고한 소프트웨어 설계를 위한 '리핑(riffing)' 프로세스를 소개했습니다.
- 리핑은 스크래치 파일에서 Ruby 또는 유사-Ruby 코드를 사용하여 문제와 대화하며 객체의 이름, 책임, 관계를 명확히 하는 설계 기법입니다.
- 이 프로세스는 개발 초기 단계에서 디자인 피드백을 빠르게 얻고, 잠재적인 문제점을 발견하여 더 나은 코드와 장기적인 개발 속도 유지를 가능하게 합니다.
Kasper Timm Hansen
2025년 12월 10일
Rails MCP 서버의 새로운 아키텍처: 컨텍스트 효율성 최적화를 위한 리팩토링
Rails MCP Server: Context-Efficient Tool Architecture
- Rails MCP 서버는 점진적 도구 발견, Rails 인트로스펙션, Prism 정적 분석을 통해 AI 에이전트의 컨텍스트 소비를 약 67% 절감했습니다.
- 기존 12개 도구를 4개로 줄이고, 필요에 따라 검색 및 실행되는 내부 분석기 전환하여 초기 컨텍스트 오버헤드를 대폭 감소시켰습니다.
- 정확도를 높이기 위해 정규식 파싱 대신 Rails 런타임 인트로스펙션과 Ruby 3.3+의 Prism 정적 분석을 도입했으며, 샌드박스화된 `execute_ruby`로 유연한 코드 실행을 지원합니다.
HackerNews
2025년 12월 10일
37 Signals의 Fizzy: Rails 라우트와 매직 링크 인증 심층 분석
37 Signals Fizzy Kanban board
- 37 Signals의 칸반 보드 Fizzy는 중첩된 컨트롤러 모듈을 활용한 Rails 라우팅 패턴과 매직 링크 인증 방식을 통해 명확하고 간결한 Rails 코드 작성의 모범 사례를 제시합니다.
- Fizzy는 `resource` 및 `namespace`를 통한 중첩 라우팅과 `Restomatic` gem을 활용한 간결한 라우팅 정의를 선보이며, 리소스 구조화에 대한 효과적인 접근법을 보여줍니다.
- 매직 링크 인증은 사용자 경험을 개선하지만, 이메일 가로채기 및 의사 난수 코드 생성과 같은 잠재적 보안 취약점이 발견되었으며, `SecureRandom` 사용 등 개선 방안이 제시되었습니다.
Hotwire Weekly
2025년 12월 09일
패키지 관리에 매료된 이유
Why I'm Fascinated by Package Management
- Bundler의 록파일은 Ruby 애플리케이션의 의존성 불일치 문제를 해결하고 결정론적 빌드를 가능하게 하여, 현대 패키지 관리의 표준을 제시했습니다.
- 패키지 관리 시스템은 Semver와 같은 공유된 컨벤션을 통해 분산된 개발 노력을 통합하며, 각 생태계의 기술적 선택이 문화와 보안에 깊이 영향을 미칩니다.
- 의존성 그래프는 생태계의 실제 구조와 숨겨진 핵심 인프라를 드러내어, 유지보수자 지원, 자원 배분, 악성 패키지 탐지 등 다양한 개선 기회를 제공합니다.
HackerNews
2025년 12월 09일
Rails 프로젝트 개발 가속화 및 코드 품질 유지를 위한 Ruby Gem 제너레이터
🧰 Ruby Gems With Powerful Generators You Should Be Using in Your Rails Projects
- Rails 프로젝트의 개발 효율성과 코드 품질 향상을 위한 15가지 Ruby Gem 제너레이터 목록을 제공합니다.
- Devise, RSpec, Sidekiq 등 핵심 기능을 위한 제너레이터는 인증, 테스트, 백그라운드 작업 설정을 간소화합니다.
- Mobility, FriendlyId, Kaminari 등은 다국어, SEO 친화적 URL, 페이지네이션 등 복잡한 기능을 효율적으로 구현하도록 지원합니다.
Ruby Stack News
2025년 12월 09일
Stimulus와 ViewComponent를 활용한 맞춤형 오디오 플레이어 구축
Building an Audio Player with StimulusJS
- Stimulus와 ViewComponent를 사용하여 사용자 정의 오디오 플레이어를 개발하는 과정을 설명하며, 재생/일시정지, 탐색, 볼륨 조절 등 핵심 기능을 구현합니다.
- HTML5 Audio API의 기본 개념과 주요 속성 및 이벤트를 이해하고, 이를 활용하여 플레이어의 동적인 동작을 제어하는 방법을 다룹니다.
- Rails 환경에서 ViewComponent와 class_variants Gem을 통해 모듈화된 UI를 구축하고, Stimulus 컨트롤러로 상호작용 가능한 기능을 추가하여 완성도 높은 플레이어를 만듭니다.
HackerNews
2025년 12월 09일
대규모 테스트 스위트에서 '동결된 픽스처' 문제 해결 전략
Why frozen test fixtures are a problem on large projects and how to avoid them
- 대규모 테스트 스위트에서 픽스처 변경 시 발생하는 '동결된 픽스처' 문제를 이해하고 해결하는 것이 중요합니다.
- 테스트는 오직 검증하려는 특정 속성만을 직접 테스트하도록 작성하여 불필요한 의존성을 줄이고 픽스처의 유연성을 확보해야 합니다.
- 컬렉션 내용이나 순서를 테스트할 때 전체 일치 대신 부분 포함 여부나 정렬 속성 자체를 검증하는 방식으로 픽스처 동결을 효과적으로 방지할 수 있습니다.
Radan Skorić
2025년 12월 09일
SerpApi를 활용한 Yelp 전체 메뉴 스크래핑 튜토리얼: 빠르고 간단한 방법
Tutorial of how to scrape Yelp Full Menu, fast and simple
- SerpApi의 Yelp Place Scraper API를 활용하여 Yelp 레스토랑의 전체 메뉴 정보를 효율적으로 스크래핑하는 방법을 상세히 설명합니다.
- `full_menu` 및 `menu_name` 매개변수 설정을 통해 메뉴 존재 여부 확인 및 특정 메뉴 데이터를 선택적으로 수집하는 과정을 다룹니다.
- SerpApi 계정 설정부터 Ruby 클라이언트 라이브러리를 사용한 API 연동까지의 실질적인 구현 단계를 제시합니다.
SerpApi
2025년 12월 09일
Hotwire Stimulus와 Rails Turbo를 활용한 간단한 검색 폼 구축
Building a (Very) Simple Responsive Search with Rails & Stimulus
- Stimulus 디바운스 및 Turbo Frame을 활용하여 Rails에서 반응형 검색 폼을 구현하는 방법을 설명합니다.
- 사용자 입력 시 검색 요청을 최적화하고, 검색 필드 초기화 기능을 제공하는 Stimulus 컨트롤러 로직을 소개합니다.
- 전체 페이지 새로고침 없이 검색 결과를 동적으로 업데이트하는 Turbo Frame의 적용 사례를 보여줍니다.
Hashrocket
2025년 12월 09일
Kamal을 활용한 Basecamp Fizzy 배포 및 아키텍처 분석
Episode #539 - Cool Things in Fizzy
- Basecamp의 Fizzy 애플리케이션을 Kamal을 활용하여 프로덕션 환경에 배포하고, 메인 브랜치와 분리된 프로덕션 브랜치로 변경 사항을 관리하는 과정을 상세히 설명합니다.
- Kamal을 통한 배포 시 필요한 비밀 키(secret_key_base, vapid keys)를 Rails Credentials로 안전하게 생성 및 관리하는 방법을 제시합니다.
- Fizzy 코드베이스에서 발견된 멀티테넌시 구현, 엔트로피 기반 자동 연기 로직, Active Job 확장 등 Basecamp 고유의 아키텍처 패턴을 분석합니다.
jeff
2025년 12월 08일
Rails의 스와퍼블 마이그레이션 백엔드: Shopify의 대규모 데이터베이스 관리 전략
Rails’s Swappable Migration Backend for Schema Changes at Scale
- Rails 7.0에 도입된 스와퍼블 마이그레이션 백엔드는 애플리케이션이 마이그레이션 실행 방식을 유연하게 맞춤 설정할 수 있도록 지원합니다.
- Shopify는 이 기능을 활용하여 프로덕션 환경에서 안전성 검사, JSON 직렬화 및 중앙 집중식 서비스 제출을 통해 대규모 데이터베이스 마이그레이션을 안전하게 관리합니다.
- 이 새로운 접근 방식은 기존의 복잡한 몽키 패치와 취약한 SQL 파싱 방식의 한계를 극복하고, 마이그레이션 처리의 우아함과 유지보수성을 크게 향상시켰습니다.
Rails at Scale
2025년 12월 08일
RubyWorld Conference 2025: PicoRuby와 mruby Girls, 임베디드 Ruby의 미래를 열다
RubyWorld Conference 2025: PicoRuby, mruby Girls, and the Future of Embedded Ruby
- RubyWorld Conference 2025에서 PicoRuby와 mruby Girls 프로젝트를 통해 마이크로컨트롤러 기반 임베디드 시스템에서의 Ruby 활용 가능성이 성공적으로 제시되었습니다.
- PicoRuby는 경량 VM, 최적화된 GC, 간소화된 표준 라이브러리를 갖춰 ESP32 및 RP2040과 같은 제한된 리소스의 MCU에서도 효율적인 Ruby 개발을 가능하게 합니다.
- mruby Girls 워크숍은 M5Stack ATOM Matrix를 활용하여 초보자도 Ruby REPL을 통해 센서 제어 및 인터랙티브 프로젝트를 구현하며 임베디드 Ruby의 접근성을 입증했습니다.
Ruby Stack News
2025년 12월 08일
Fizzy 디자인 진화: Git 커밋으로 만든 플립북
Fizzy Design Evolution: A Flipbook from Git
- Fizzy 애플리케이션의 18개월 디자인 진화를 Git 커밋 기록을 활용한 플립북 영상으로 시각화하여 개발 과정을 생생하게 조명합니다.
- 8,152개의 커밋 중 매일의 마지막 상태를 스크린샷으로 캡처하고, 과거 환경을 재현하는 복잡한 기술적 과정을 상세히 설명합니다.
- 애플리케이션의 자체 사운드 파일을 Claude AI로 작곡하여 배경 음악을 제작하는 창의적인 접근과 함께, 디자인의 핵심 변화를 분석합니다.
Rob Zolkos
2025년 12월 08일