SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Rails 7에는
무엇이 들어갈까요?
Jaeyeol Lee(@malkoG) @ Petner Inc.
Ruby Korea (Unofficial) Meetup
About This MeetUp
● Not Official Ruby Meetup
● No Organizer
● 수요가 생기면 그 때 모이는 밋업
● Discord 많이 이용해주세요 https://discord.com/invite/uHQj7X68Mf
Table Of Contents
● 개선된 점
○ ActiveStorage
○ ActiveSupport
○ ActiveJob
● 눈에 띄는 변화들
○ ActiveRecord
● Javascript related issue
○ importmap-rails
Rails
Core
Parts
다루지 않을 내용
● ActionCable
○ ActionCable javascript 클라이언트 위주의 패치내용 밖에 없음.
○ JS 클라이언트는 웹소켓 서버 연결 종료 후 재접속하는 알고리즘이 변경되었음.
■ https://github.com/rails/rails/pull/40229
● ActionText, ActionMailbox
○ Rails way로 Rich Text, Email을 다루기는 하지만,
그렇게 많이 쓰이지도 않을 뿐더러 이렇다 할 변경사항도 없음.
● ActionView, ActionPack, ActiveModel
○ 변경사항이 있긴 하지만, 그렇게 임팩트있는 변화는 아님.
○ (9/18) ActiveModel::API 라는 module이 추가됨. (ActiveModel::Model은 하위호환성 제공)
ActiveStorage (1)
● Add ability to use pre-defined variants.
모델에 첨부하는 이미지에
variant를 지정할 수 있도록
프레임워크 차원에서 ability를 제공
기존에는 module mixin으로 해결하는 경우가 많았음.
ActiveStorage (2)
● variant processor로는 mini_magick 대신 vips가 쓰일 예정
○ Mini_magick은 deprecated 되지 않고, rails 7에서도 계속 호환될 예정
● Audio Analyzer가 추가됨. (duration, bit_rate 등의 속성을 추출할 수 있음)
○ pdf analyzer도 추가될 수 있음(아직은 pr 대기 상태)
ActiveSupport (1)
● 좀 더 간결해진 Rails Credentials 변수 접근
Before
Rails.application.credentials.aws[:production][:access_key_id]
After
Rails.application.credentials.aws.production.access_key_id
ActiveSupport (2)
● rails app:update 명령으로 버전 업그레이드할 때,
en.yml, storage.yml, puma.rb, routes.rb 파일을 덮어씌우지 않게 됨
● Enumerable 클래스에 편의 메서드 제공
Enumerable#sole
Enumerable#maximum
Enumerable#minimum
Enumerable#in_order_of
ActiveJob (1)
● 반드시 끝내야 하는 background job이라면
retry_on 메서드의 attempts 파라미터에
:unlimited 옵션을 넘겨줄 수 있게 됨.
ActiveJob (2)
● perform_later 메서드 실행 직후,
성공/실패 여부에 따라 추가적인 명령을 수행하도록
block을 넘겨줄 수 있게 됨.
ActiveRecord (1)
● 전화번호, 주민등록번호, 주소 등 민감한 필드를 암호화해서 저장할 수 있게
됨.
(ability to perform application level encryption)
https://edgeguides.rubyonrails.org/active_record_encryption.html
ActiveRecord (2) - Query
● 컨트롤러에서 SQL 쿼리가 실행될때마다 쿼리에 대한 로그가 남게 됨
https://github.com/rails/rails/pull/42240
-> https://github.com/basecamp/marginalia 가 Rails에 디폴트로 포함됨
ActiveRecord (3-1) - Query
● ActiveRecord::QueryMethods#in_order_of
조회하고자 하는 레코드들의 순서를 보장하는 메서드
Post.where(id: [3, 5, 1])
# => [Post(id: 1), Post(id: 3), Post(id: 5)]
ActiveRecord (3-2) - Query
● Implementation of ActiveRecord::QueryMethod#in_order_of
(without Rails 7)
ActiveRecord (4) - Query
● ActiveRecord::QueryMethods#invert_where
ActiveRecord (5) - Query
● ActiveRecord::QueryMethods#associated
Reservation.where.associated(:user)
# => Reservation.where.not(user_id: nil)
● ActiveRecord::QueryMethods#missing
Reservation.where.missing(:user)
# => Reservation.where(user_id: nil)
ActiveRecord (6) - Query
● ActiveRecord::Relation#load_async
Database에서 Table을 조회하는 작업을 스레드에서 비동기적으로 처리한다.
서로 독립적인 테이블을 조회하는 작업이라면, 성능 개선에 도움이 될 수 있음.
ActiveRecord - 다루지 못한 내용
● Multiple Database 지원
○ 개인적인 경험의 부재로 깊이 있게 알아볼 여력이 없었음.
Javascript
Related
Issues
Javascript Bundling without Webpacker
● Rails 7부터 webpacker가 아닌 importmap이 들어갑니다.
This frees you from needing Webpack, Yarn, npm, or any other part of the
JavaScript toolchain. All you need is the asset pipeline that's already included in
Rails.
https://twitter.com/yarotheslav/status/1427589848400072704
Importmap-rails : import JS modules with Ruby DSL
package.json, webpacker.yml, [environment].js 등의 파일을 건드릴 필요없이,
importmap.rb 파일만 수정해도 JS module import가 손쉽게 된다!
Alpha preview: Modern JavaScript in Rails 7 without Webpack : https://www.youtube.com/watch?v=PtxZvFnL2i0
Inside of importmap-rails
https://wicg.github.io/import-maps/ : 아직까지는 공식적인 표준은 아닙니다.
https://world.hey.com/dhh/modern-web-apps-without-javascript-bundling-or-transpi
ling-a20f2755 : Hotwire, Trix, ActionCable.js 등의 JS 라이브러리가 레일즈에
포함되고 있는 맥락에서 읽어보면 도움될만한 글
Alpha preview: Modern JavaScript in Rails 7 without Webpack : https://www.youtube.com/watch?v=PtxZvFnL2i0
(9/6) JS bundling with different ways
https://world.hey.com/dhh/rails-7-will-have-three-great-answers-to-javascript-in-20
21-8d68191b
https://github.com/rails/jsbundling-rails
(9/7) CSS bundling
● Rails 프로젝트를 생성할때
CSS 전처리기를 Tailwindcss, postcss, sass 중 선택할 수 있게
옵션을 제공하도록 패치될 예정
https://github.com/rails/cssbundling-rails
Rails 7 Release Date
Rails 4 - 2013년, Rails 5 - 2016년, Rails 6 - 2019년, Rails 7 - 2022년...?
첨언
● 내가 주로 사용하는 프레임워크의 릴리즈 노트를 읽어보면서 정리해보니,
내부의 동작원리를 좀 더 잘 이해할 수 있게 되었습니다.
● 릴리즈노트를 간혹 보다보면, 추상적으로 설명된 부분이 종종 보이는데
관련 내용이 언급되어 있는 PR을 찾아보는게 이해에 도움이 됩니다.
감사합니다.

Mais conteúdo relacionado

Mais procurados

TR-069 클라이언트 검토 자료 2편
TR-069 클라이언트 검토 자료 2편TR-069 클라이언트 검토 자료 2편
TR-069 클라이언트 검토 자료 2편ymtech
 
TR-069 클라이언트 검토 자료 1편
TR-069 클라이언트 검토 자료 1편TR-069 클라이언트 검토 자료 1편
TR-069 클라이언트 검토 자료 1편ymtech
 
자동화빌드서버
자동화빌드서버자동화빌드서버
자동화빌드서버성기 홍
 
HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드- 19장 배포시스템HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드- 19장 배포시스템박 민규
 
TR- 069 클라이언트 검토자료 1편
TR- 069 클라이언트 검토자료 1편TR- 069 클라이언트 검토자료 1편
TR- 069 클라이언트 검토자료 1편ymtech
 
HTTP 완벽가이드 4장 커넥션관리
HTTP 완벽가이드 4장 커넥션관리HTTP 완벽가이드 4장 커넥션관리
HTTP 완벽가이드 4장 커넥션관리박 민규
 
구글의 분산스토리지
구글의 분산스토리지구글의 분산스토리지
구글의 분산스토리지juhyun
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민종민 김
 
Redis From 2.8 to 4.x
Redis From 2.8 to 4.xRedis From 2.8 to 4.x
Redis From 2.8 to 4.xDaeMyung Kang
 
2017년 10월 파밍 악성코드 분석 보고서
2017년 10월 파밍 악성코드 분석 보고서2017년 10월 파밍 악성코드 분석 보고서
2017년 10월 파밍 악성코드 분석 보고서poisoneye
 
How to patch linux kernel
How to patch linux kernelHow to patch linux kernel
How to patch linux kernelKangmin Park
 
클린코드 16장
클린코드 16장클린코드 16장
클린코드 16장진화 손
 
HTTP 완벽가이드 10장 http2.0, 11장_클라이언트식별과쿠키
HTTP 완벽가이드 10장 http2.0, 11장_클라이언트식별과쿠키HTTP 완벽가이드 10장 http2.0, 11장_클라이언트식별과쿠키
HTTP 완벽가이드 10장 http2.0, 11장_클라이언트식별과쿠키박 민규
 
패킷의 전달과정
패킷의 전달과정패킷의 전달과정
패킷의 전달과정성연 김
 
Elasticsearch 한글 형태소 분석기 Nori 노리
Elasticsearch 한글 형태소 분석기 Nori 노리Elasticsearch 한글 형태소 분석기 Nori 노리
Elasticsearch 한글 형태소 분석기 Nori 노리종민 김
 
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초JinuNoh
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍Seungbeom Shim
 
Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기JangHyuk You
 

Mais procurados (20)

TR-069 클라이언트 검토 자료 2편
TR-069 클라이언트 검토 자료 2편TR-069 클라이언트 검토 자료 2편
TR-069 클라이언트 검토 자료 2편
 
TR-069 클라이언트 검토 자료 1편
TR-069 클라이언트 검토 자료 1편TR-069 클라이언트 검토 자료 1편
TR-069 클라이언트 검토 자료 1편
 
자동화빌드서버
자동화빌드서버자동화빌드서버
자동화빌드서버
 
HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드- 19장 배포시스템HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드- 19장 배포시스템
 
TR- 069 클라이언트 검토자료 1편
TR- 069 클라이언트 검토자료 1편TR- 069 클라이언트 검토자료 1편
TR- 069 클라이언트 검토자료 1편
 
HTTP 완벽가이드 4장 커넥션관리
HTTP 완벽가이드 4장 커넥션관리HTTP 완벽가이드 4장 커넥션관리
HTTP 완벽가이드 4장 커넥션관리
 
구글의 분산스토리지
구글의 분산스토리지구글의 분산스토리지
구글의 분산스토리지
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민
 
Redis From 2.8 to 4.x
Redis From 2.8 to 4.xRedis From 2.8 to 4.x
Redis From 2.8 to 4.x
 
Basic git-commands
Basic git-commandsBasic git-commands
Basic git-commands
 
2017년 10월 파밍 악성코드 분석 보고서
2017년 10월 파밍 악성코드 분석 보고서2017년 10월 파밍 악성코드 분석 보고서
2017년 10월 파밍 악성코드 분석 보고서
 
How to patch linux kernel
How to patch linux kernelHow to patch linux kernel
How to patch linux kernel
 
클린코드 16장
클린코드 16장클린코드 16장
클린코드 16장
 
Soma search
Soma searchSoma search
Soma search
 
HTTP 완벽가이드 10장 http2.0, 11장_클라이언트식별과쿠키
HTTP 완벽가이드 10장 http2.0, 11장_클라이언트식별과쿠키HTTP 완벽가이드 10장 http2.0, 11장_클라이언트식별과쿠키
HTTP 완벽가이드 10장 http2.0, 11장_클라이언트식별과쿠키
 
패킷의 전달과정
패킷의 전달과정패킷의 전달과정
패킷의 전달과정
 
Elasticsearch 한글 형태소 분석기 Nori 노리
Elasticsearch 한글 형태소 분석기 Nori 노리Elasticsearch 한글 형태소 분석기 Nori 노리
Elasticsearch 한글 형태소 분석기 Nori 노리
 
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
[HTTP 101] 웹 개발자라면 반드시 알아야하는 HTTP의 기초
 
고급시스템프로그래밍
고급시스템프로그래밍고급시스템프로그래밍
고급시스템프로그래밍
 
Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기Mongo DB 완벽가이드 - 4장 쿼리하기
Mongo DB 완벽가이드 - 4장 쿼리하기
 

Semelhante a Whats new rails 7

Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1Jungsu Heo
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQLI Goo Lee
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin GuideJEONGPHIL HAN
 
Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x(unstable)Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x(unstable)DaeMyung Kang
 
중고나라 거래 통계 서비스 1차 개발 완료 보고
중고나라 거래 통계 서비스 1차 개발 완료 보고중고나라 거래 통계 서비스 1차 개발 완료 보고
중고나라 거래 통계 서비스 1차 개발 완료 보고embian
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱NAVER D2
 
Pg report 20161010_02
Pg report 20161010_02Pg report 20161010_02
Pg report 20161010_02PgDay.Seoul
 
03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)Hankyo
 
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기PgDay.Seoul
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드cranbe95
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & BeyondJay Lee
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]MongoDB
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기Kenu, GwangNam Heo
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우NAVER D2
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxNeoClova
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는Taegon Kim
 

Semelhante a Whats new rails 7 (20)

Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
Web Analytics at Scale with Elasticsearch @ naver.com - Part 1
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin Guide
 
Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x(unstable)Redis From 2.8 to 4.x(unstable)
Redis From 2.8 to 4.x(unstable)
 
중고나라 거래 통계 서비스 1차 개발 완료 보고
중고나라 거래 통계 서비스 1차 개발 완료 보고중고나라 거래 통계 서비스 1차 개발 완료 보고
중고나라 거래 통계 서비스 1차 개발 완료 보고
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
Pg report 20161010_02
Pg report 20161010_02Pg report 20161010_02
Pg report 20161010_02
 
03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)03.실행환경 교육교재(배치처리)
03.실행환경 교육교재(배치처리)
 
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
[Pgday.Seoul 2017] 8. PostgreSQL 10 새기능 소개 - 김상기
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
Rx java essentials
Rx java essentialsRx java essentials
Rx java essentials
 
Java 8 & Beyond
Java 8 & BeyondJava 8 & Beyond
Java 8 & Beyond
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
 
[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우[112]rest에서 graph ql과 relay로 갈아타기 이정우
[112]rest에서 graph ql과 relay로 갈아타기 이정우
 
Place site Design
Place site DesignPlace site Design
Place site Design
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 

Mais de Jae-yeol Lee

[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발
[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발
[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발Jae-yeol Lee
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Jae-yeol Lee
 
HI-ARC Number Theory
HI-ARC Number TheoryHI-ARC Number Theory
HI-ARC Number TheoryJae-yeol Lee
 
HI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute ForceHI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute ForceJae-yeol Lee
 
HI-ARC PS 102 Bitmask
HI-ARC PS 102 BitmaskHI-ARC PS 102 Bitmask
HI-ARC PS 102 BitmaskJae-yeol Lee
 
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)Jae-yeol Lee
 
HI-ARC ACM-ICPC 준비반 - KMP algorithm
HI-ARC ACM-ICPC 준비반 - KMP algorithmHI-ARC ACM-ICPC 준비반 - KMP algorithm
HI-ARC ACM-ICPC 준비반 - KMP algorithmJae-yeol Lee
 
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화Jae-yeol Lee
 
HI-ARC 정기모임 #7 BFS
HI-ARC 정기모임 #7 BFSHI-ARC 정기모임 #7 BFS
HI-ARC 정기모임 #7 BFSJae-yeol Lee
 
HI-ARC 정기모임 #6 dfs
HI-ARC 정기모임 #6 dfsHI-ARC 정기모임 #6 dfs
HI-ARC 정기모임 #6 dfsJae-yeol Lee
 
[APL OJT] REST API TEST
[APL OJT] REST API TEST[APL OJT] REST API TEST
[APL OJT] REST API TESTJae-yeol Lee
 
Embedded project presentation
Embedded project presentationEmbedded project presentation
Embedded project presentationJae-yeol Lee
 

Mais de Jae-yeol Lee (13)

[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발
[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발
[PyCon KR 2023 Lightning talk day1] 개밥먹기 주도 개발
 
Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]Backtracking [ICPC Sinchon]
Backtracking [ICPC Sinchon]
 
HI-ARC Number Theory
HI-ARC Number TheoryHI-ARC Number Theory
HI-ARC Number Theory
 
HI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute ForceHI-ARC PS 102 Brute Force
HI-ARC PS 102 Brute Force
 
HI-ARC PS 102 Bitmask
HI-ARC PS 102 BitmaskHI-ARC PS 102 Bitmask
HI-ARC PS 102 Bitmask
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
HI-ARC ACM ICPC TF #5 (ADVANCED DFS)
 
HI-ARC ACM-ICPC 준비반 - KMP algorithm
HI-ARC ACM-ICPC 준비반 - KMP algorithmHI-ARC ACM-ICPC 준비반 - KMP algorithm
HI-ARC ACM-ICPC 준비반 - KMP algorithm
 
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
 
HI-ARC 정기모임 #7 BFS
HI-ARC 정기모임 #7 BFSHI-ARC 정기모임 #7 BFS
HI-ARC 정기모임 #7 BFS
 
HI-ARC 정기모임 #6 dfs
HI-ARC 정기모임 #6 dfsHI-ARC 정기모임 #6 dfs
HI-ARC 정기모임 #6 dfs
 
[APL OJT] REST API TEST
[APL OJT] REST API TEST[APL OJT] REST API TEST
[APL OJT] REST API TEST
 
Embedded project presentation
Embedded project presentationEmbedded project presentation
Embedded project presentation
 

Whats new rails 7

  • 1. Rails 7에는 무엇이 들어갈까요? Jaeyeol Lee(@malkoG) @ Petner Inc. Ruby Korea (Unofficial) Meetup
  • 2. About This MeetUp ● Not Official Ruby Meetup ● No Organizer ● 수요가 생기면 그 때 모이는 밋업 ● Discord 많이 이용해주세요 https://discord.com/invite/uHQj7X68Mf
  • 3. Table Of Contents ● 개선된 점 ○ ActiveStorage ○ ActiveSupport ○ ActiveJob ● 눈에 띄는 변화들 ○ ActiveRecord ● Javascript related issue ○ importmap-rails
  • 5. 다루지 않을 내용 ● ActionCable ○ ActionCable javascript 클라이언트 위주의 패치내용 밖에 없음. ○ JS 클라이언트는 웹소켓 서버 연결 종료 후 재접속하는 알고리즘이 변경되었음. ■ https://github.com/rails/rails/pull/40229 ● ActionText, ActionMailbox ○ Rails way로 Rich Text, Email을 다루기는 하지만, 그렇게 많이 쓰이지도 않을 뿐더러 이렇다 할 변경사항도 없음. ● ActionView, ActionPack, ActiveModel ○ 변경사항이 있긴 하지만, 그렇게 임팩트있는 변화는 아님. ○ (9/18) ActiveModel::API 라는 module이 추가됨. (ActiveModel::Model은 하위호환성 제공)
  • 6. ActiveStorage (1) ● Add ability to use pre-defined variants. 모델에 첨부하는 이미지에 variant를 지정할 수 있도록 프레임워크 차원에서 ability를 제공 기존에는 module mixin으로 해결하는 경우가 많았음.
  • 7. ActiveStorage (2) ● variant processor로는 mini_magick 대신 vips가 쓰일 예정 ○ Mini_magick은 deprecated 되지 않고, rails 7에서도 계속 호환될 예정 ● Audio Analyzer가 추가됨. (duration, bit_rate 등의 속성을 추출할 수 있음) ○ pdf analyzer도 추가될 수 있음(아직은 pr 대기 상태)
  • 8. ActiveSupport (1) ● 좀 더 간결해진 Rails Credentials 변수 접근 Before Rails.application.credentials.aws[:production][:access_key_id] After Rails.application.credentials.aws.production.access_key_id
  • 9. ActiveSupport (2) ● rails app:update 명령으로 버전 업그레이드할 때, en.yml, storage.yml, puma.rb, routes.rb 파일을 덮어씌우지 않게 됨 ● Enumerable 클래스에 편의 메서드 제공 Enumerable#sole Enumerable#maximum Enumerable#minimum Enumerable#in_order_of
  • 10. ActiveJob (1) ● 반드시 끝내야 하는 background job이라면 retry_on 메서드의 attempts 파라미터에 :unlimited 옵션을 넘겨줄 수 있게 됨.
  • 11. ActiveJob (2) ● perform_later 메서드 실행 직후, 성공/실패 여부에 따라 추가적인 명령을 수행하도록 block을 넘겨줄 수 있게 됨.
  • 12. ActiveRecord (1) ● 전화번호, 주민등록번호, 주소 등 민감한 필드를 암호화해서 저장할 수 있게 됨. (ability to perform application level encryption) https://edgeguides.rubyonrails.org/active_record_encryption.html
  • 13. ActiveRecord (2) - Query ● 컨트롤러에서 SQL 쿼리가 실행될때마다 쿼리에 대한 로그가 남게 됨 https://github.com/rails/rails/pull/42240 -> https://github.com/basecamp/marginalia 가 Rails에 디폴트로 포함됨
  • 14. ActiveRecord (3-1) - Query ● ActiveRecord::QueryMethods#in_order_of 조회하고자 하는 레코드들의 순서를 보장하는 메서드 Post.where(id: [3, 5, 1]) # => [Post(id: 1), Post(id: 3), Post(id: 5)]
  • 15. ActiveRecord (3-2) - Query ● Implementation of ActiveRecord::QueryMethod#in_order_of (without Rails 7)
  • 16. ActiveRecord (4) - Query ● ActiveRecord::QueryMethods#invert_where
  • 17. ActiveRecord (5) - Query ● ActiveRecord::QueryMethods#associated Reservation.where.associated(:user) # => Reservation.where.not(user_id: nil) ● ActiveRecord::QueryMethods#missing Reservation.where.missing(:user) # => Reservation.where(user_id: nil)
  • 18. ActiveRecord (6) - Query ● ActiveRecord::Relation#load_async Database에서 Table을 조회하는 작업을 스레드에서 비동기적으로 처리한다. 서로 독립적인 테이블을 조회하는 작업이라면, 성능 개선에 도움이 될 수 있음.
  • 19. ActiveRecord - 다루지 못한 내용 ● Multiple Database 지원 ○ 개인적인 경험의 부재로 깊이 있게 알아볼 여력이 없었음.
  • 21. Javascript Bundling without Webpacker ● Rails 7부터 webpacker가 아닌 importmap이 들어갑니다. This frees you from needing Webpack, Yarn, npm, or any other part of the JavaScript toolchain. All you need is the asset pipeline that's already included in Rails. https://twitter.com/yarotheslav/status/1427589848400072704
  • 22. Importmap-rails : import JS modules with Ruby DSL package.json, webpacker.yml, [environment].js 등의 파일을 건드릴 필요없이, importmap.rb 파일만 수정해도 JS module import가 손쉽게 된다! Alpha preview: Modern JavaScript in Rails 7 without Webpack : https://www.youtube.com/watch?v=PtxZvFnL2i0
  • 23. Inside of importmap-rails https://wicg.github.io/import-maps/ : 아직까지는 공식적인 표준은 아닙니다. https://world.hey.com/dhh/modern-web-apps-without-javascript-bundling-or-transpi ling-a20f2755 : Hotwire, Trix, ActionCable.js 등의 JS 라이브러리가 레일즈에 포함되고 있는 맥락에서 읽어보면 도움될만한 글 Alpha preview: Modern JavaScript in Rails 7 without Webpack : https://www.youtube.com/watch?v=PtxZvFnL2i0
  • 24. (9/6) JS bundling with different ways https://world.hey.com/dhh/rails-7-will-have-three-great-answers-to-javascript-in-20 21-8d68191b https://github.com/rails/jsbundling-rails
  • 25. (9/7) CSS bundling ● Rails 프로젝트를 생성할때 CSS 전처리기를 Tailwindcss, postcss, sass 중 선택할 수 있게 옵션을 제공하도록 패치될 예정 https://github.com/rails/cssbundling-rails
  • 26. Rails 7 Release Date Rails 4 - 2013년, Rails 5 - 2016년, Rails 6 - 2019년, Rails 7 - 2022년...?
  • 27. 첨언 ● 내가 주로 사용하는 프레임워크의 릴리즈 노트를 읽어보면서 정리해보니, 내부의 동작원리를 좀 더 잘 이해할 수 있게 되었습니다. ● 릴리즈노트를 간혹 보다보면, 추상적으로 설명된 부분이 종종 보이는데 관련 내용이 언급되어 있는 PR을 찾아보는게 이해에 도움이 됩니다.