1 Rails 5.2로 업그레이드
기존 애플리케이션을 업그레이드하는 경우, 진행하기 전에 충분한 테스트 커버리지를 확보하는 것이 좋습니다. 먼저 아직 하지 않았다면 Rails 5.1로 업그레이드하고 Rails 5.2로 업그레이드를 시도하기 전에 애플리케이션이 예상대로 작동하는지 확인해야 합니다. 업그레이드 시 주의해야 할 사항 목록은 Ruby on Rails 업그레이드하기 가이드에서 확인할 수 있습니다.
2 주요 기능
2.1 Active Storage
Active Storage는 Amazon S3, Google Cloud Storage, Microsoft Azure Storage와 같은 클라우드 스토리지 서비스에 파일을 업로드하고 이러한 파일들을 Active Record 객체에 첨부하는 것을 용이하게 합니다. 개발 및 테스트를 위한 로컬 디스크 기반 서비스가 함께 제공되며, 백업과 마이그레이션을 위해 하위 서비스에 파일을 미러링하는 것을 지원합니다. Active Storage에 대해 더 자세히 알아보시려면 Active Storage 개요 가이드를 참고하세요.
2.2 Redis Cache Store
Rails 5.2는 내장된 Redis cache store와 함께 제공됩니다. 이에 대해 자세히 알아보시려면 Rails의 캐싱: 개요 가이드를 참고하세요.
2.3 HTTP/2 Early Hints
Rails 5.2는 HTTP/2 Early Hints를 지원합니다.
Early Hints를 활성화하여 서버를 시작하려면 bin/rails server
명령어에 --early-hints
를 전달하세요.
2.4 Credentials
프로덕션 앱 시크릿을 저장하기 위한 config/credentials.yml.enc
파일이 추가되었습니다.
이를 통해 서드파티 서비스에 대한 인증 credentials을 config/master.key
파일이나
RAILS_MASTER_KEY
환경 변수의 키로 암호화하여 저장소에 직접 저장할 수 있습니다.
이는 결국 Rails.application.secrets
와 Rails 5.1에서 도입된 암호화된
시크릿을 대체하게 될 것입니다.
또한 Rails 5.2는
Credentials의 기반이 되는 API를 공개하여,
다른 암호화된 설정, 키, 파일들을 쉽게 다룰 수 있게 되었습니다.
이에 대해 더 자세히 알아보려면
Rails 애플리케이션 보안
가이드를 참고하세요.
2.5 Content Security Policy
Rails 5.2는 애플리케이션의 Content Security Policy를 설정할 수 있는 새로운 DSL과 함께 제공됩니다. 전역 기본 정책을 설정하고 리소스별로 이를 재정의할 수 있으며, 멀티테넌트 애플리케이션의 계정 서브도메인과 같은 요청별 값을 헤더에 주입하기 위해 lambda를 사용할 수도 있습니다. 이에 대한 자세한 내용은 Rails 애플리케이션 보안 가이드에서 확인할 수 있습니다.
3 Railties
자세한 변경 사항은 Changelog를 참조해주세요.
3.1 Deprecations
제너레이터와 템플릿에서
capify!
메서드가 Deprecated 되었습니다. (Pull Request)rails dbconsole
과rails console
명령어에 환경 이름을 일반 인자로 전달하는 것이 Deprecated 되었습니다. 대신-e
옵션을 사용해야 합니다. (Commit)Rails 서버를 시작하기 위해
Rails::Application
의 서브클래스를 사용하는 것이 Deprecated 되었습니다. (Pull Request)Rails 플러그인 템플릿에서
after_bundle
콜백이 Deprecated 되었습니다. (Pull Request)
3.2 주목할만한 변경사항
모든 환경에서 로드될
config/database.yml
에 공유 섹션을 추가했습니다. (Pull Request)plugin generator에
railtie.rb
를 추가했습니다. (Pull Request)tmp:clear
task에서 screenshot 파일들을 정리합니다. (Pull Request)bin/rails app:update
실행 시 사용하지 않는 컴포넌트를 건너뜁니다. 초기 앱 생성 시 Action Cable, Active Record 등을 건너뛴 경우, 업데이트 task도 이러한 건너뛰기를 존중합니다. (Pull Request)3단계 데이터베이스 구성을 사용할 때
rails dbconsole
명령에 사용자 지정 connection 이름을 전달할 수 있습니다. 예시:bin/rails dbconsole -c replica
. (Commit)console
과dbconsole
명령을 실행할 때 환경 이름의 단축어를 올바르게 확장합니다. (Commit)기본
Gemfile
에bootsnap
을 추가했습니다. (Pull Request)rails runner
에서 stdin으로부터 스크립트를 실행하기 위한 플랫폼 독립적인 방법으로-
를 지원합니다. (Pull Request)새로운 Rails 애플리케이션이 생성될 때
Gemfile
에ruby x.x.x
버전을 추가하고 현재 Ruby 버전이 포함된.ruby-version
루트 파일을 생성합니다. (Pull Request)plugin generator에
--skip-action-cable
옵션을 추가했습니다. (Pull Request)plugin generator의
Gemfile
에git_source
를 추가했습니다. (Pull Request)Rails plugin에서
bin/rails
실행 시 사용하지 않는 컴포넌트를 건너뜁니다. (Commit)generator 액션의 들여쓰기를 최적화했습니다. (Pull Request)
routes 들여쓰기를 최적화했습니다. (Pull Request)
plugin generator에
--skip-yarn
옵션을 추가했습니다. (Pull Request)Generators의
gem
메서드에서 여러 버전 인수를 지원합니다. (Pull Request)development와 test 환경에서 앱 이름으로부터
secret_key_base
를 도출합니다. (Pull Request)기본
Gemfile
에mini_magick
을 주석으로 추가했습니다. (Pull Request)rails new
와rails plugin new
가 기본적으로Active Storage
를 포함합니다.--skip-active-storage
로Active Storage
를 제외할 수 있으며,--skip-active-record
를 사용할 때는 자동으로 제외됩니다. (Pull Request)
4 Action Cable
자세한 변경사항은 Changelog를 참조하세요.
4.1 제거된 기능
- 더 이상 사용되지 않는 evented redis adapter가 제거되었습니다. (Commit)
4.2 주요 변경사항
cable.yml에서
host
,port
,db
,password
옵션 지원 추가 (Pull Request)PostgreSQL adapter 사용 시 긴 stream 식별자를 해시화 (Pull Request)
5 Action Pack
자세한 변경사항은 Changelog를 참조하세요.
5.1 제거사항
- 더 이상 사용되지 않는
ActionController::ParamsParser::ParseError
를 제거했습니다. (Commit)
5.2 Deprecations
-
ActionDispatch::TestResponse
의#success?
,#missing?
,#error?
alias들이 deprecate 되었습니다. (Pull Request)
5.3 주목할 만한 변경사항
Fragment caching에서 재사용 가능한 cache key 지원을 추가했습니다. (Pull Request)
Fragment의 cache key 형식을 변경하여 key 변동을 디버깅하기 쉽게 만들었습니다. (Pull Request)
GCM을 사용한 AEAD 암호화 쿠키와 세션. (Pull Request)
기본적으로 위조 방지 기능을 제공합니다. (Pull Request)
서버 측에서 서명/암호화된 쿠키 만료를 강제합니다. (Pull Request)
쿠키의
:expires
옵션이ActiveSupport::Duration
객체를 지원합니다. (Pull Request)Capybara에 등록된
:puma
서버 설정을 사용합니다. (Pull Request)Key rotation 지원으로 쿠키 미들웨어를 단순화했습니다. (Pull Request)
HTTP/2를 위한 Early Hints 활성화 기능을 추가했습니다. (Pull Request)
System Tests에 headless chrome 지원을 추가했습니다. (Pull Request)
redirect_back
메서드에:allow_other_host
옵션을 추가했습니다. (Pull Request)assert_recognizes
가 마운트된 엔진을 순회하도록 만들었습니다. (Pull Request)Content-Security-Policy 헤더를 설정하기 위한 DSL을 추가했습니다. (Pull Request, Commit, Commit)
최신 브라우저에서 지원하는 가장 인기 있는 audio/video/font MIME type들을 등록했습니다. (Pull Request)
System test 스크린샷 출력 기본값을
inline
에서simple
로 변경했습니다. (Commit)System Tests에 헤드리스 firefox 지원을 추가했습니다. (Pull Request)
기본 헤더 셋에 안전한
X-Download-Options
와X-Permitted-Cross-Domain-Policies
를 추가했습니다. (Commit)사용자가 수동으로 다른 서버를 지정하지 않은 경우에만 Puma를 기본 서버로 설정하도록 시스템 테스트를 변경했습니다. (Pull Request)
기본 헤더 셋에
Referrer-Policy
헤더를 추가했습니다. (Commit)ActionController::Parameters#each
에서Hash#each
의 동작을 일치시켰습니다. (Pull Request)Rails UJS를 위한 자동 nonce 생성 지원을 추가했습니다. (Commit)
https://hstspreload.org/의 최소 max-age 요구사항을 충족하기 위해 기본 HSTS max-age 값을 31536000초(1년)로 업데이트했습니다. (Commit)
cookies
에 대해to_h
의 별칭 메서드로to_hash
를 추가했습니다.session
에 대해to_hash
의 별칭 메서드로to_h
를 추가했습니다. (Commit)
6 Action View
자세한 변경사항은 Changelog를 참조하세요.
6.1 제거 사항
- 더 이상 사용되지 않는 Erubis ERB handler를 제거했습니다. (Commit)
6.2 Deprecations
-
image_tag
에 의해 생성된 이미지에 기본 alt 텍스트를 추가하는 데 사용되던image_alt
helper를 deprecated 처리합니다. (Pull Request)
6.3 주목할만한 변경사항
JSON Feeds를 지원하기 위해
auto_discovery_link_tag
에:json
type을 추가했습니다. (Pull Request)image_tag
helper에srcset
옵션을 추가했습니다. (Pull Request)optgroup
과 select divideroption
을 감싸는field_error_proc
관련 문제를 수정했습니다. (Pull Request)form_with
가 기본적으로 id를 생성하도록 변경했습니다. (Commit)preload_link_tag
helper를 추가했습니다. (Pull Request)그룹화된 select에서 callable 객체를 그룹 메소드로 사용할 수 있게 했습니다. (Pull Request)
7 Action Mailer
자세한 변경사항은 Changelog를 참조하세요.
7.1 주요 변경사항
Action Mailer 클래스가 자신의 delivery job을 설정할 수 있도록 허용합니다. (Pull Request)
assert_enqueued_email_with
테스트 헬퍼를 추가합니다. (Pull Request)
8 Active Record
자세한 변경사항은 Changelog를 참조하세요.
8.1 Removals
더 이상 사용되지 않는
#migration_keys
제거. (Pull Request)Active Record 객체를 타입캐스팅할 때 더 이상 사용되지 않는
quoted_id
지원 제거. (Commit)index_name_exists?
에서 더 이상 사용되지 않는 인자default
제거. (Commit)연관관계에서
:class_name
에 클래스를 전달하는 더 이상 사용되지 않는 지원 제거. (Commit)더 이상 사용되지 않는 메서드
initialize_schema_migrations_table
과initialize_internal_metadata_table
제거. (Commit)더 이상 사용되지 않는 메서드
supports_migrations?
제거. (Commit)더 이상 사용되지 않는 메서드
supports_primary_key?
제거. (Commit)더 이상 사용되지 않는 메서드
ActiveRecord::Migrator.schema_migrations_table_name
제거. (Commit)#indexes
에서 더 이상 사용되지 않는 인자name
제거. (Commit)#verify!
에서 더 이상 사용되지 않는 인자들 제거. (Commit)더 이상 사용되지 않는 설정
.error_on_ignored_order_or_limit
제거. (Commit)더 이상 사용되지 않는 메서드
#scope_chain
제거. (Commit)더 이상 사용되지 않는 메서드
#sanitize_conditions
제거. (Commit)
8.2 Deprecations
supports_statement_cache?
가 deprecated 되었습니다. (Pull Request)ActiveRecord::Calculations
의count
와sum
에서 인자와 블록을 동시에 전달하는 것이 deprecated 되었습니다. (Pull Request)Relation
에서arel
로의 위임이 deprecated 되었습니다. (Pull Request)TransactionState
의set_state
메서드가 deprecated 되었습니다. (Commit)대체 없이
expand_hash_conditions_for_aggregates
가 deprecated 되었습니다. (Commit)
8.3 주목할만한 변경사항
인자 없이 dynamic fixture accessor 메서드를 호출하면 이제 이 타입의 모든 fixture를 반환합니다. 이전에는 이 메서드가 항상 빈 배열을 반환했습니다. (Pull Request)
Active Record 속성 reader를 오버라이드할 때 변경된 속성의 불일치를 수정했습니다. (Pull Request)
MySQL에 대한 Descending Indexes 지원을 추가했습니다. (Pull Request)
bin/rails db:forward
첫 번째 마이그레이션을 수정했습니다. (Commit)현재 마이그레이션이 존재하지 않을 때 마이그레이션 이동에서
UnknownMigrationVersionError
에러를 발생시킵니다. (Commit)데이터베이스 구조 덤프를 위한 rake 작업에서
SchemaDumper.ignore_tables
를 준수합니다. (Pull Request)ActiveSupport::Cache
의 새로운 버전 관리 항목을 통해 재사용 가능한 캐시 키를 지원하기 위해ActiveRecord::Base#cache_version
을 추가했습니다. 이는ActiveRecord::Base#cache_key
가 이제 타임스탬프를 포함하지 않는 안정적인 키를 반환한다는 것을 의미합니다. (Pull Request)캐스팅된 값이 nil인 경우 bind param 생성을 방지합니다. (Pull Request)
성능 향상을 위해 bulk INSERT를 사용하여 fixture를 삽입합니다. (Pull Request)
중첩된 join을 나타내는 두 relation을 병합할 때 더 이상 병합된 relation의 join을 LEFT OUTER JOIN으로 변환하지 않습니다. (Pull Request)
트랜잭션 상태를 자식 트랜잭션에 적용하도록 수정했습니다. 이전에는 중첩된 트랜잭션이 있고 외부 트랜잭션이 롤백되었을 때, 내부 트랜잭션의 레코드가 여전히 영속된 것으로 표시되었습니다. 부모 트랜잭션이 롤백될 때 부모 트랜잭션의 상태를 자식 트랜잭션에 적용하도록 수정되었습니다. 이를 통해 내부 트랜잭션의 레코드가 영속되지 않은 것으로 올바르게 표시됩니다. (Commit)
joins를 포함하는 scope를 가진 eager loading/preloading association 수정. (Pull Request)
sql.active_record
notification 구독자가 발생시킨 에러가ActiveRecord::StatementInvalid
예외로 변환되는 것을 방지. (Pull Request)레코드 배치 작업 시(
find_each
,find_in_batches
,in_batches
) query caching을 건너뜀. (Commit)sqlite3 boolean 직렬화를 1과 0을 사용하도록 변경. SQLite는 1과 0을 true와 false로 기본 인식하지만, 이전에 직렬화되었던 't'와 'f'는 기본적으로 인식하지 않음. (Pull Request)
다중 파라미터 할당을 사용해 구성된 값들이 이제 단일 필드 폼 입력에서 렌더링할 때 post-type-cast 값을 사용. (Commit)
모델 생성 시 더 이상
ApplicationRecord
가 생성되지 않음. 필요한 경우rails g application_record
로 생성 가능. (Pull Request)Relation#or
가 이제references
값만 다른 두 relation을 허용.references
는where
에 의해 암시적으로 호출될 수 있기 때문. (Commit)Relation#or
사용 시 공통 조건을 추출하여 OR 조건 앞에 배치. (Pull Request)binary
fixture 헬퍼 메소드 추가. (Pull Request)STI에 대한 inverse associations를 자동으로 추측. (Pull Request)
lock wait timeout이 초과될 때 발생하는 새로운 에러 클래스
LockWaitTimeout
추가. (Pull Request)sql.active_record
instrumentation의 payload 이름을 더 설명적으로 업데이트. (Pull Request)데이터베이스에서 인덱스 제거 시 주어진 알고리즘 사용. (Pull Request)
Relation#where
에Set
을 전달하는 것이 이제 배열을 전달하는 것과 동일하게 동작.
배열입니다. (Commit)
PostgreSQL
tsrange
가 이제 subsecond 정밀도를 유지합니다. (Pull Request)더티 레코드에서
lock!
을 호출할 때 예외를 발생시킵니다. (Commit)SQLite adapter를 사용할 때 인덱스의 컬럼 순서가
db/schema.rb
에 기록되지 않던 버그를 수정했습니다. (Pull Request)지정된
VERSION
으로bin/rails db:migrate
를 수정했습니다. 빈 VERSION으로bin/rails db:migrate
를 실행하면VERSION
없이 실행한 것처럼 동작합니다.VERSION
형식을 확인합니다: 마이그레이션 버전 번호나 마이그레이션 파일 이름을 허용합니다.VERSION
형식이 유효하지 않으면 에러를 발생시킵니다. 대상 마이그레이션이 존재하지 않으면 에러를 발생시킵니다. (Pull Request)statement timeout이 초과되었을 때 발생하는 새로운 에러 클래스
StatementTimeout
을 추가했습니다. (Pull Request)update_all
은 이제 값들을Type#serialize
에 전달하기 전에Type#cast
에 전달합니다. 이는update_all(foo: 'true')
가 boolean 값을 올바르게 저장한다는 것을 의미합니다. (Commit)relation 쿼리 메소드에서 사용되는 raw SQL 프래그먼트가 명시적으로 표시되도록 요구합니다. (Commit, Commit)
새로운 컬럼을 채우는 것과 같이 up 마이그레이션에서만 관련있는 코드를 위한
#up_only
를 데이터베이스 마이그레이션에 추가했습니다. (Pull Request)사용자 요청으로 statement를 취소할 때 발생하는 새로운 에러 클래스
QueryCanceled
를 추가했습니다. (Pull Request)Relation
의 인스턴스 메소드와 충돌하는 scope의 정의를 허용하지 않습니다. (Pull Request)add_index
에 PostgreSQL operator class 지원을 추가했습니다. (Pull Request)데이터베이스 쿼리 호출자를 로깅합니다.
(Pull Request, Pull Request, Pull Request)
column 정보를 리셋할 때 자손들의 attribute 메소드를 undefined합니다. (Pull Request)
limit
또는offset
과 함께delete_all
을 사용할 때 subselect를 사용합니다. (Commit)limit()
와 함께 사용되는first(n)
의 불일치를 수정했습니다.first(n)
finder는 이제limit()
를 존중하여relation.to_a.first(n)
와 일관성을 유지하며,last(n)
의 동작과도 일치합니다. (Pull Request)저장되지 않은 부모 인스턴스의 중첩된
has_many :through
연관관계를 수정했습니다. (Commit)through 레코드를 삭제할 때 연관관계 조건을 고려합니다. (Commit)
save
또는save!
가 호출된 후 파괴된 객체의 변경을 허용하지 않습니다. (Commit)left_outer_joins
의 relation merger 이슈를 수정했습니다. (Pull Request)PostgreSQL foreign table 지원. (Pull Request)
Active Record 객체가 복제될 때 트랜잭션 상태를 초기화합니다. (Pull Request)
composed_of
컬럼을 사용하여 where 메소드에 Array 객체를 인자로 전달할 때 확장되지 않는 문제를 수정했습니다. (Pull Request)polymorphic?
가 잘못 사용되지 않도록reflection.klass
가 raise하도록 만듭니다. (Commit)MySQL과 PostgreSQL의
#columns_for_distinct
를 수정하여ORDER BY
컬럼이 다른 테이블의 primary key를 포함하더라도ActiveRecord::FinderMethods#limited_ids_for
가 올바른 primary key 값을 사용하도록 합니다. (Commit)자식이 삭제되지 않았을 때 부모 클래스가 삭제되는 has_one/belongs_to 관계의
dependent: :destroy
이슈를 수정했습니다. (Commit)유휴 데이터베이스 연결(이전에는 단순히 고아가 된 연결)이 이제
periodically connection pool reaper에 의해 정리됩니다. (Commit)
9 Active Model
자세한 변경사항은 Changelog를 참조하세요.
9.1 주목할 만한 변경사항
ActiveModel::Errors
의#keys
,#values
메서드를 수정했습니다.#keys
는 빈 메시지가 없는 key들만 반환하도록 변경되었습니다.#values
는 비어있지 않은 값들만 반환하도록 변경되었습니다. (Pull Request)ActiveModel::Errors
에#merge!
메서드를 추가했습니다. (Pull Request)length validator 옵션에 Proc이나 Symbol을 전달할 수 있게 되었습니다. (Pull Request)
_confirmation
의 값이false
일 때ConfirmationValidator
검증이 실행되도록 했습니다. (Pull Request)proc default를 가진 attributes API를 사용하는 모델들이 이제 marshal화될 수 있습니다. (Commit)
직렬화에서 옵션이 있는 다중
:includes
가 손실되지 않도록 수정했습니다. (Commit)
10 Active Support
자세한 변경사항은 Changelog를 참조하세요.
10.1 제거된 기능
callback을 위한 deprecated된
:if
와:unless
string filter를 제거했습니다. (Commit)deprecated된
halt_callback_chains_on_return_false
옵션을 제거했습니다. (Commit)
10.2 지원 중단 예정
Module#reachable?
메서드가 더 이상 사용되지 않습니다. (Pull Request)secrets.secret_token
이 더 이상 사용되지 않습니다. (Commit)
10.3 주목할 만한 변경사항
HashWithIndifferentAccess
에fetch_values
추가. (Pull Request)Time#change
에:offset
지원 추가. (Commit)ActiveSupport::TimeWithZone#change
에:offset
과:zone
지원 추가. (Commit)deprecation 알림에 gem 이름과 deprecation 시점 전달. (Pull Request)
버전 관리되는 cache 엔트리 지원 추가. 이를 통해 cache store가 cache key를 재사용할 수 있게 되어, 빈번한 변경이 있는 경우 저장 공간을 크게 절약할 수 있습니다. Active Record의
#cache_key
와#cache_version
분리, 그리고 Action Pack의 fragment caching에서의 사용과 함께 작동합니다. (Pull Request)스레드 격리된 속성 싱글톤을 제공하는
ActiveSupport::CurrentAttributes
추가. 주요 사용 사례는 요청별 속성들을 전체 시스템에서 쉽게 사용할 수 있도록 하는 것입니다. (Pull Request)#singularize
와#pluralize
가 이제 지정된 로케일의 불가산 명사를 존중합니다. (Commit)class_attribute
에 기본 옵션 추가. (Pull Request)지정된 다음/이전 요일을 반환하는
Date#prev_occurring
과Date#next_occurring
추가. (Pull Request)모듈과 클래스 속성 접근자에 기본 옵션 추가. (Pull Request)
Cache:
write_multi
추가. (Pull Request)ActiveSupport::MessageEncryptor
가 기본적으로 AES 256 GCM 암호화를 사용하도록 변경. (Pull Request)테스트에서 시간을
Time.now
로 고정하는freeze_time
헬퍼 추가. (Pull Request)Hash#reverse_merge!
의 순서를 일관되게 변경
HashWithIndifferentAccess
로.
(Pull Request)
ActiveSupport::MessageVerifier
와ActiveSupport::MessageEncryptor
에 목적과 만료 지원을 추가합니다. (Pull Request)잘못된 옵션이 전달될 때 피드백을 제공하도록
String#camelize
를 업데이트합니다. (Pull Request)Module#delegate
와 유사하게Module#delegate_missing_to
가 이제 대상이 nil일 때DelegationError
를 발생시킵니다. (Pull Request)ActiveSupport::EncryptedFile
와ActiveSupport::EncryptedConfiguration
을 추가합니다. (Pull Request)프로덕션 앱 시크릿을 저장하기 위해
config/credentials.yml.enc
를 추가합니다. (Pull Request)MessageEncryptor
와MessageVerifier
에 키 순환 지원을 추가합니다. (Pull Request)HashWithIndifferentAccess#transform_keys
에서HashWithIndifferentAccess
의 인스턴스를 반환합니다. (Pull Request)정의되어 있다면
Hash#slice
가 이제 Ruby 2.5+ 내장 정의를 사용합니다. (Commit)IO#to_json
이 이제 배열로 변환을 시도하는 대신to_s
표현을 반환합니다. 이는 읽을 수 없는 객체에서IO#to_json
을 호출할 때IOError
가 발생하는 버그를 수정합니다. (Pull Request)Date#prev_day
,Date#next_day
와 동일한 메서드 시그니처로Time#prev_day
와Time#next_day
를 추가합니다.Time#prev_day
와Time#next_day
에 인자 전달을 허용합니다. (Commit)Date#prev_month
,Date#next_month
와 동일한 메서드 시그니처로Time#prev_month
와Time#next_month
를 추가합니다.Time#prev_month
와Time#next_month
에 인자 전달을 허용합니다. (Commit)Date#prev_year
,Date#next_year
와 동일한 메서드 시그니처로Time#prev_year
와Time#next_year
를 추가합니다.Time#prev_year
와Time#next_year
에 인자 전달을 허용합니다. (Commit)humanize
에서 acronym 지원 개선. (Commit)TWZ 범위에서
Range#include?
허용. (Pull Request)Cache: 1kB 이상 값에 대해 기본적으로 압축 활성화. (Pull Request)
Redis cache store. (Pull Request, Pull Request)
TZInfo::AmbiguousTime
에러 처리. (Pull Request)MemCacheStore: 만료되는 카운터 지원. (Commit)
ActiveSupport::TimeZone.all
이ActiveSupport::TimeZone::MAPPING
에 있는 시간대만 반환하도록 변경. (Pull Request)ActiveSupport::SecurityUtils.secure_compare
의 기본 동작을 변경하여 가변 길이 문자열에 대해서도 길이 정보가 유출되지 않도록 함. 기존ActiveSupport::SecurityUtils.secure_compare
를fixed_length_secure_compare
로 이름 변경하고, 전달된 문자열의 길이가 일치하지 않을 경우ArgumentError
를 발생시키도록 함. (Pull Request)ETag 헤더와 같은 비민감성 다이제스트를 생성할 때 SHA-1 사용. (Pull Request, Pull Request)
assert_changes
는from:
및to:
인수 조합과 관계없이 항상 표현식의 변경을 검증함. (Pull Request)ActiveSupport::Cache::Store
의read_multi
에 대한 누락된 계측 기능 추가. (Pull Request)assert_difference
에서 해시를 첫 번째 인수로 지원. 이를 통해 하나의 assertion에서 여러 개의 숫자 차이를 지정할 수 있음. (Pull Request)Caching: MemCache와 Redis의
read_multi
및fetch_multi
성능 향상. 백엔드 참조 전에 로컬 인메모리 캐시에서 먼저 읽음. (Commit)
11 Active Job
자세한 변경 사항은 Changelog를 참조하세요.
11.1 주목할만한 변경사항
- 폐기된 job을 커스텀하게 처리할 수 있도록
ActiveJob::Base.discard_on
에 block을 전달할 수 있게 되었습니다. (Pull Request)
12 Ruby on Rails Guides
자세한 변경사항은 Changelog를 참고하세요.
12.1 주목할 만한 변경사항
Rails의 Threading과 Code Execution 가이드가 추가되었습니다. (Pull Request)
Active Storage 개요 가이드가 추가되었습니다. (Pull Request)
13 크레딧
Rails를 안정적이고 견고한 프레임워크로 만들기 위해 많은 시간을 투자한 수많은 사람들을 보려면 Rails 기여자 전체 목록을 참고하세요. 이 모든 분들께 찬사를 보냅니다.