흥미로운 기능, 버그 수정 및 개선 사항이 포함된 첫 번째 Rails 8 베타가 공식적으로 출시되었습니다. 이 버전은 Rails 7.2를 기반으로 구축되었으며, Rails 개발을 더욱 생산적이고 즐겁게 만들기 위한 새로운 기능과 최적화를 도입했습니다.
주요 하이라이트에는 번거로움 없는 배포를 위한 Kamal 2와의 통합, 새로운 기본 자산 파이프라인으로 Propshaft 도입, 광범위한 ActiveRecord 개선 사항이 포함됩니다. Rails 8은 또한 여러 가지 SQLite 통합 업그레이드를 제공하여 프로덕션 용도로 사용할 수 있는 옵션입니다.
Rails 8이 제공하는 모든 것을 자세히 살펴보겠습니다!
Kamal 2 및 Thruster를 사용한 손쉬운 배포
Rails 8을 사용하면 Kamal 2 및 Thruster를 통해 애플리케이션 배포가 간단해집니다.
Kamal 2는 단 몇 분 만에 클라우드 VM, 베어메탈 서버 또는 VPS 환경에 빠르고 쉽게 배포할 수 있도록 하여 관리형 클라우드 서비스 및 PaaS(Platform as a Service) 플랫폼에 대한 의존도를 줄여줍니다.
단일 명령(kamal setup ), 표준 Linux 상자에 바로 제작 가능한 Railsenvironment를 설정하여 배포를 쉽고 비용 효율적으로 만들 수 있습니다.
Kamal 2는 또한 다운타임 없는 배포, HTTP/2 지원, Let's Encrypt를 사용한 자동화된 SSL, Gzip 압축 및 단일 서버에서 여러 앱의 손쉬운 호스팅을 가능하게 하는 Rails용으로 특별히 제작된 맞춤형 프록시인 Thruster와 통합됩니다. 이 모든 것이 복잡한 설정 없이 가능합니다.
Kamal 2 및 Thruster를 사용하면 Rails 8을 사용하면 앱 배포가 그 어느 때보다 쉬워집니다. 다른 배포 설정을 선호하는 경우 --skip-kamal를 사용하여 선택 해제할 수 있습니다. 기존 작업 흐름을 유지하려면 플래그를 지정하세요.
솔리드 어댑터를 사용한 보다 간결한 레일 배포
Rails 8의 큰 개선 사항 중 하나는 일반적인 웹 애플리케이션 요구 사항을 구현하는 데 필요한 추가 서비스 수를 줄여 배포가 더 간단해진다는 것입니다.
일반적으로 작업 대기열, 캐싱, 게시/하위 메시징과 같은 기능이 필요한 경우 보조 기능을 위해 PostgreSQL과 Redis와 같은 데이터베이스의 조합을 사용했습니다.
Rails 8을 사용하면 세 가지 새로운 데이터베이스 지원 어댑터(Solid Cable, Solid Cache 및 Solid Queue) 덕분에 SQLite만으로 이 모든 것을 처리할 수 있습니다.
-
단단한 케이블 Rails의 새로운 기본 Action Cable 어댑터는 프로덕션 환경에 있으며 Redis에 대한 공통 종속성을 삭제할 수 있음을 의미합니다. 이는 SQLite를 통한 빠른 폴링을 사용하여 앱과 연결된 클라이언트 간에 메시지를 전달하는 게시/구독 서버 역할을 합니다. 폴링에도 불구하고 Solid Cable의 성능은 대부분의 상황에서 Redis와 비슷합니다.
-
솔리드 캐시 캐싱을 위해 RAM 대신 디스크 스토리지를 사용하여 Redis의 필요성을 대체합니다. 이 접근 방식을 사용하면 성능 저하 없이 더 오래 지속되고 더 많은 요청을 처리하는 훨씬 더 크고 비용 효율적인 캐시가 가능합니다. 또한 개인 정보 보호 요구 사항을 충족하기 위해 암호화된 저장 및 보존 정책을 지원합니다.
-
고정 대기열
FOR UPDATE SKIP LOCKED을 사용하여 Redis forActive Job백그라운드 처리를 대체합니다. 효율적인 작업 처리를 위한 메커니즘(PostgreSQL, MySQL 또는 SQLite와 호환 가능) 동시성 제어, 재시도 및 반복 작업과 같은 필수 기능이 포함되어 있으며 HEY에서 그 성능이 입증되어 현재 하루에 2천만 개의 작업을 관리하고 있습니다.
이 세 가지 어댑터는 단순한 아이디어를 바탕으로 설계되었습니다. 최신 SSD와 NVMe드라이브는 이전에 인메모리 솔루션이 필요했던 많은 작업을 처리할 수 있을 만큼 충분히 빠릅니다. 이러한 빠른 드라이브를 활용함으로써 Rails는 Redis와 같은 별도의 RAM 기반 도구가 필요하지 않습니다.
SQLite는 프로덕션 준비가 완료되었습니다
Rails 8은 SQLite 어댑터와 Rubydriver에 대한 광범위한 작업 덕분에 SQLite를 경량 개발 도구에서 프로덕션 용도로 신뢰할 수 있는 선택으로 끌어올렸습니다.
위에서 설명한 견고한 어댑터의 도입으로 SQLite는 이제 Action Cable, Rails.cache 및 Active Job을 효과적으로 구동할 수 있게 되어 단순한 프로토타입 제작이나 테스트 환경 이상으로 역할을 확장할 수 있게 되었습니다.
Rails 8의 SQLite 통합에 대한 몇 가지 주요 개선 사항은 다음과 같습니다.
- 이제
create_virtual_table을 사용하여 전체 텍스트 검색 및 가상 테이블이 지원됩니다. . - 이제 어댑터를 사용하면 향상된 데이터 시딩 성능을 위해 대량 삽입 고정 장치를 사용할 수 있습니다.
- 거래 기본값은
IMMEDIATE입니다. 동시성을 향상시키는 모드입니다. SQLite3::BusyException를 번역하여 향상된 오류 처리ActiveRecord::StatementTimeout로 .
Propshaft를 통한 자산 파이프라인의 새로운 시대
Rails 8에서는 또한 오랫동안 지속되어 온 Sprockets 시스템을 대체하는 새로운 자산 파이프라인 기본값으로 Propshaft를 도입했습니다. Sprockets은 10년 넘게 Rails 개발자에게 좋은 서비스를 제공했지만 JavaScript 빌드 도구와 최신 브라우저 개선이 폭발적으로 증가하기 전인 다른 시대에 설계되었습니다.
Propshaft는 오늘날 개발자의 핵심 요구 사항을 중심으로 구축된 자산 관리에 대한 보다 단순하고 현대적인 접근 방식을 반영합니다. 그 목적은 간단합니다. 자산에 대한 명확한 경로를 제공하고 캐싱을 위해 다이제스트 스탬프를 적용하는 것입니다.
수많은 추가 작업을 수행하는 Sprockets와 달리 Propshaft는 필수적인 작업에만 초점을 맞추며 자산 파이프라인을 간결하게 유지하려는 새로운 Rails 철학에 자연스럽게 부합합니다(복잡한 JavaScript 처리는 Esbuild 또는 Vite와 같은 전문 도구에 맡겨져 있습니다).
간단한 내장 인증
Rails는 has_secure_password부터 수년에 걸쳐 인증의 핵심 구성 요소를 구축해 왔습니다. Rails 5에서 normalizes까지 , generates_token_for 및 authenticate_by 인레일즈 7.1.
Rails 8에서는 이러한 모든 구성 요소가 함께 모여 안전한 세션 기반 인증 시스템을 구축하기 위한 간단한 시작점을 제공합니다.
단일 명령을 실행하면 데이터베이스 지원 세션 및 비밀번호 재설정 기능을 갖춘 인증 시스템에 필요한 모든 필수 사항을 설정할 수 있습니다.
이 명령은 모델, 컨트롤러, 메일러 및 보기를 포함한 주요 파일을 생성합니다.
이를 통해 생산 준비가 완료된 보안 인증을 효과적으로 빠르게 수행할 수 있습니다. 남은 것은 애플리케이션 요구 사항에 맞게 사용자 정의된 사용자 가입 흐름을 통합하는 것입니다.
새 스크립트 폴더 및 생성기
Rails 8에는 새로운 script이 도입되었습니다. 데이터 마이그레이션, 정리 작업 또는 기타 유틸리티 작업과 같은 일회성 또는 범용 스크립트를 보관하는 전용 폴더입니다. 이 추가 기능은 이러한 스크립트를 깔끔하게 정리하여 기본 애플리케이션 로직과 별도로 유지하는 데 도움이 됩니다.
스크립트 생성을 더 쉽게 하기 위해 새로운 스크립트 생성기를 사용할 수 있습니다. 간단한 명령으로 스크립트를 생성할 수 있습니다:
이 명령은 해당 스크립트 파일을 생성하며 다음을 사용하여 실행할 수 있습니다.
이러한 간소화된 접근 방식을 통해 애플리케이션을 체계적으로 정리하고 사용자 정의 스크립트를 더욱 편리하고 유지 관리하기 쉽게 처리할 수 있습니다.
다양한 활성 레코드 개선
Active Record는 또한 성능 향상, 마이그레이션 단순화, 문제 해결 개선, 복잡한 데이터베이스 사용 사례에 대한 더 나은 지원 제공을 위해 Rails 8에서 주요 개선 사항을 확인했습니다.
다음은 최신 버전에 도입된 주요 변경 사항 중 일부입니다:
- Rails 8은 이제
float4을 구별합니다. 및float8PostgreSQL에서. drop_table이제 한 번에 여러 테이블 삭제를 지원합니다.- 상속 및 파티셔닝을 포함하여 PostgreSQL로 테이블을 생성할 때 고급 옵션을 지원합니다.
- 이제 데이터 시딩 성능을 향상시키기 위해 픽스쳐의 대량 삽입이 지원됩니다.
- 이제 새로운 데이터베이스 마이그레이션은 마이그레이션을 실행하기 전에 데이터베이스 스키마를 로드하는 것으로 시작됩니다.
create_schema및drop_schema이제 작업을 되돌릴 수 있습니다.- Rails 8에는 날짜/시간 정밀도와 같은 발전으로 인해 이제 MySQL 5.6.4 이상이 필요합니다.
- 쿼리 로그 태그는 개발 환경에서 기본적으로 활성화되어 SQL 문을 애플리케이션 코드까지 추적하고 사용 중인 데이터베이스를 식별합니다.
마무리
Rails 8은 Kamal 및 최신 자산 파이프라인을 통한 간편한 배포부터 중요한 ActiveRecord 개선 사항 및 SQLite용 개선된 생산 기능에 이르기까지 다양하고 영향력 있는 업데이트를 도입합니다.
이러한 발전은 개발자 생산성을 높일 뿐만 아니라 최신 모범 사례와도 일치하므로 인프라 복잡성을 처리하는 대신 애플리케이션 구축에 집중할 수 있습니다.
모든 새로운 기능, 최적화 및 변경 사항에 대한 자세한 목록을 보려면 공식 Rails 8 릴리스 노트를 확인하세요.
Rails에 기여하는 데 참여하고 싶다면 Rails GitHub 저장소를 방문하여 공개 문제를 살펴보고 기여 지침을 검토하세요.
읽어주셔서 감사합니다!
추신 Ruby Magic 게시물이 보도되는 즉시 읽으려면 Ruby Magic 뉴스레터를 구독하고 단 하나의 게시물도 놓치지 마세요!
다미롤라 올라툰지
Damilola는 나이지리아 라고스에 거주하는 프리랜서 기술 작가이자 소프트웨어 개발자입니다. 그는 JavaScript와 Node.js를 전문으로 하며 개발자를 위한 간결하고 실용적인 기사를 전달하는 것을 목표로 합니다. 글을 쓰거나 코딩하지 않을 때는 독서, 게임, 여행을 즐깁니다.
Damilola Olatunji의 모든 기사