지난 글들
750개의 글이 있습니다
Rails 8, Parameters#expect 도입으로 안전한 파라미터 처리 구현
Rails 8 introduces Parameters#expect for safer parameter handling
- Rails 8에서 새로 도입된 `Parameters#expect`는 기존 `Strong Parameters`의 취약점을 보완합니다.
- 이 기능은 잘못 구성된 파라미터에 대해 500 에러 대신 400 Bad Request를 반환하여 애플리케이션 보안을 강화합니다.
- 특히 복잡한 중첩 파라미터 처리 시 API의 견고성을 높이고 명확한 오류 피드백을 제공합니다.
The Awesome Ruby
2025년 08월 14일
루비 3.4의 Happy Eyeballs v2: Rails API 타임아웃 문제 해결
Ruby 3.4's Happy Eyeballs v2: Solving Rails API Timeout Hell
- Ruby 3.4에 도입된 Happy Eyeballs v2는 IPv4/IPv6 듀얼 스택 환경에서 발생하는 네트워크 연결 지연 및 타임아웃 문제를 해결합니다.
- 이 기능은 병렬 DNS 쿼리 및 연결 시도를 통해 기존의 순차적 방식보다 훨씬 빠른 연결을 가능하게 합니다.
- Rails 애플리케이션은 별도의 코드 변경 없이 자동으로 이 개선된 네트워크 성능의 이점을 누릴 수 있습니다.
The Awesome Ruby
2025년 08월 14일
Rails 8의 직렬화된 속성에 comparable 옵션 추가
Rails 8 adds comparable option to serialized attributes
- Rails 8은 직렬화된 속성에서 데이터 변경 없이 불필요한 데이터베이스 업데이트가 발생하는 문제를 해결하기 위해 `comparable` 옵션을 도입했습니다.
- 이 옵션은 직렬화된 문자열 대신 역직렬화된 객체를 비교하여, 실제 데이터가 동일할 경우 `changed?`가 `false`를 반환하고 불필요한 저장을 방지합니다.
- 외부 API 데이터, JSON/YAML 직렬화 설정 등에서 유용하며, 팬텀 업데이트를 막아 애플리케이션 성능 및 데이터 무결성 유지에 기여합니다.
The Awesome Ruby
2025년 08월 14일
루비 스레드 설명: 멀티스레딩을 위한 간단 가이드 (1부)
Ruby Threads Explained: A Simple Guide to Multithreading (Part 1)
- 루비 스레드는 단일 프로그램 내에서 여러 작업을 동시에 실행하여 동시성을 제공하는 메커니즘입니다.
- CRuby(MRI)는 GVL(Global VM Lock)로 인해 한 번에 하나의 스레드만 루비 코드를 실행할 수 있어 CPU 집중 작업에는 병렬 처리가 어렵습니다.
- 스레드는 네트워크 요청, 파일 I/O, 데이터베이스 쿼리와 같은 I/O 바운드 작업에서 GVL이 해제되어 성능 향상에 크게 기여합니다.
The Awesome Ruby
2025년 08월 14일
레일즈 8.1, 사용되지 않는 연관 관계를 안전하게 제거하기 위한 Deprecation 기능 추가
Rails 8.1 adds association deprecation to safely remove unused relationships
- 레일즈 8.1은 대규모 애플리케이션에서 사용되지 않는 연관 관계를 안전하게 식별하고 제거할 수 있도록 `deprecated: true` 옵션을 도입했습니다.
- 이 기능은 연관 관계 접근 시 경고를 발생시키며, `:warn`, `:raise`, `:notify` 세 가지 모드로 설정하여 유연하게 활용할 수 있습니다.
- 개발자는 이 새로운 워크플로우를 통해 데이터베이스 관계를 체계적으로 리팩토링하고 코드베이스의 유지보수성을 향상시킬 수 있습니다.
The Awesome Ruby
2025년 08월 14일
Rails 8, 컨트롤러별 다중 속도 제한 기능 추가
Rails 8 adds ability to use multiple rate limits per controller
- Rails 8은 `name:` 파라미터를 도입하여 컨트롤러당 여러 개의 속도 제한을 설정할 수 있는 기능을 추가했습니다.
- 이전 버전의 단일 속도 제한 제약을 해결함으로써 실제 애플리케이션에 필요한 유연하고 정교한 트래픽 제어가 가능해졌습니다.
- 이 기능은 외부 gem 없이도 버스트 제어, 시간당 할당량 등 다양한 속도 제한 전략을 직접 구현할 수 있게 합니다.
The Awesome Ruby
2025년 08월 14일
루비 3.4의 `it` 파라미터: 더 깔끔한 블록 문법
Ruby 3.4's `it` Parameter: Cleaner Block Syntax for Ruby Developers
- 루비 3.4에 도입된 `it` 파라미터는 단일 인자 블록을 위한 새로운 문법으로, 기존의 `_1`과 같은 번호 매개변수보다 가독성을 향상시킵니다.
- 이 기능은 성능 저하 없이 코드의 인지 부하를 줄이는 데 중점을 두며, 단일 인자 블록에서만 사용 가능하고 번호 매개변수와 혼용할 수 없습니다.
- 기존 코드와의 잠재적 충돌 우려가 있었으나, 루비 3.3의 경고 시스템과 루비의 우선순위 규칙 덕분에 안전하게 채택할 수 있습니다.
The Awesome Ruby
2025년 08월 14일
Rails 블루-그린 배포: 프로덕션 환경에서 데이터베이스 마이그레이션이 작동하는 방식
Rails Blue-Green Deployments: How Database Migrations Work in Production
- Rails 애플리케이션의 무중단 블루-그린 배포를 위해 데이터베이스 마이그레이션을 별도의 단계로 선행 실행하는 전략이 중요합니다.
- AWS CodeDeploy와 ECS 태스크를 활용하여 마이그레이션의 격리된 실행과 트래픽 전환을 자동화하여 배포 안정성을 확보합니다.
- 동시 인덱스 생성, 멱등성 마이그레이션, 타임아웃 관리 등 프로덕션 환경에 최적화된 마이그레이션 패턴 적용이 필수적입니다.
The Awesome Ruby
2025년 08월 14일
Stimulus 액션 파라미터를 활용한 스마트한 설정 관리
Smarter Use of Stimulus' Action Parameters
- Stimulus 컨트롤러에서 중복 로직을 제거하고 재사용성을 높이는 설정 관리 기법을 소개합니다.
- HTML의 `data-editor-key-param`과 같은 액션 파라미터를 통해 단일 `updateSetting` 메서드로 다양한 설정을 처리합니다.
- `valueFrom` 헬퍼 함수를 사용하여 체크박스, 숫자 등 다양한 입력 유형의 값을 올바르게 변환하는 방법을 제시합니다.
The Awesome Ruby
2025년 08월 14일
Rails 앱에서 PWA 보일러플레이트(Boilerplate)를 줄이는 방법
How To Reduce The PWA Boilerplate Of Your Rails App
- Rails PWA 구현 시 반복되는 서비스 워커 코드를 Workbox를 활용하여 줄이는 방법을 다룹니다.
- Workbox는 PWA의 오프라인 기능을 위한 패턴을 제공하여 코드 중복을 최소화합니다.
- 클래식 서비스 워커와 모듈 서비스 워커 통합 방식, 그리고 Rails의 에셋 핑거프린팅 처리 방안을 제시합니다.
The Awesome Ruby
2025년 08월 14일
RailsConf 2025 주요 내용: 즐거움이 주는 즐거움
RailsConf 2025 Takeaways: It’s fun to have fun
- RailsConf 2025는 DHH의 웹 개발 철학, Hack Spaces의 협업, 그리고 Aji의 영감을 주는 기조연설을 통해 개발자들에게 깊은 통찰을 제공했습니다.
- 저자는 PWA에 대한 발표를 성공적으로 마쳤으며, HERB와 같은 혁신적인 도구와 Tenderlove의 '재미를 위한 프로그래밍' 철학이 강조되었습니다.
- 컨퍼런스는 Ruby on Rails 커뮤니티의 단순성, 개발자 행복, 그리고 미래 혁신에 대한 중요성을 재확인하며 마무리되었습니다.
The Awesome Ruby
2025년 08월 14일
재사용 가능한 서비스(Composable Services) 설계 원칙
Design Principle: Composable Services
- Composable Services는 작고 예측 가능하며 독립적으로 실행 가능한 단위로, 균일한 인터페이스를 통해 입력과 결과를 처리합니다.
- 각 서비스는 해시 입력을 받아 Success() 또는 Failure() 결과를 반환하며, 이는 재사용성, 조합 가능성 및 시스템 확장성을 높입니다.
- 이러한 설계 원칙은 복잡성과 숨겨진 결합을 방지하고, 장기적인 유연성과 유지보수성을 보장합니다.
The Awesome Ruby
2025년 08월 14일
Ruby 3.5 Preview의 새로운 기능
What's New in Ruby 3.5 Preview
- Ruby 3.5.0 preview1이 2025년 4월 18일에 출시되었으며, 최종 릴리스 전의 주요 변경 사항을 미리 보여줍니다.
- Set 클래스가 C로 구현된 코어 클래스로 승격되어 성능 및 메모리 사용량이 개선되었고, Ractor는 Ractor::Port 도입으로 동기화 기능이 강화되었습니다.
- `nil` 스플랫 동작 단순화, `IO.select`의 `Float::INFINITY` 지원, 넘버링 파라미터 바인딩 변경 등 다양한 언어 및 라이브러리 개선이 포함됩니다.
The Awesome Ruby
2025년 08월 14일
Ruby rdkafka 설치 문제 해결: 사전 컴파일된 네이티브 확장으로 60초의 기다림을 끝내다
The 60-Second Wait: How I Spent Months Solving the Ruby’s Most Annoying Gem Installation Problem
- Ruby의 `rdkafka` 젬은 Apache Kafka 통합에 필수적이지만, 설치 시 60~90초에 달하는 긴 컴파일 시간으로 개발자들에게 큰 불편을 초래했습니다.
- 이 문제를 해결하기 위해 저자는 `librdkafka` 및 관련 C 라이브러리들을 정적으로 링크하여 모든 의존성을 포함하는 사전 컴파일된 네이티브 확장을 개발했습니다.
- 그 결과, 설치 시간이 5초 미만으로 단축되었고, Docker 빌드 및 CI 파이프라인 속도 향상, 개발 환경 설정 용이성 등 Ruby 개발 생태계 전반에 긍정적인 영향을 미쳤습니다.
The Awesome Ruby
2025년 08월 14일
Service Object의 올바른 사용법: 오해와 진실
Beautiful Ruby
- Service Object는 비즈니스 로직 캡슐화 방식으로 오용되는 경우가 많지만, 외부 서비스와의 상호작용을 캡슐화하는 데 효과적입니다.
- 간단한 메서드를 불필요하게 Service Object로 감싸는 것은 코드 복잡성만 증가시키는 잘못된 사용 예시입니다.
- 본문에서는 Tigris S3 서비스와의 연동을 예시로 들어, Service Object가 외부 인프라와의 상호작용을 명확하고 효율적으로 관리하는 데 어떻게 기여하는지 보여줍니다.
The Awesome Ruby
2025년 08월 14일