rubyonrails.org에서 더 보기:

GitHub에서 이 파일을 읽지 마세요. 가이드는 https://guides.rubyonrails.org 에서 제공됩니다.

Ruby on Rails 5.2 릴리스 노트

Rails 5.2의 주요 내용:

  • Active Storage
  • Redis Cache Store
  • HTTP/2 Early Hints
  • Credentials
  • Content Security Policy

이 릴리스 노트는 주요 변경사항만을 다룹니다. 다양한 버그 수정과 변경사항을 알아보시려면 변경 로그를 참고하시거나 GitHub의 메인 Rails 저장소에서 커밋 목록을 확인하세요.

1 Rails 5.2로 업그레이드

기존 애플리케이션을 업그레이드하는 경우, 진행하기 전에 충분한 테스트 커버리지를 확보하는 것이 좋습니다. 먼저 아직 하지 않았다면 Rails 5.1로 업그레이드하고 Rails 5.2로 업그레이드를 시도하기 전에 애플리케이션이 예상대로 작동하는지 확인해야 합니다. 업그레이드 시 주의해야 할 사항 목록은 Ruby on Rails 업그레이드하기 가이드에서 확인할 수 있습니다.

2 주요 기능

2.1 Active Storage

Pull Request

Active Storage는 Amazon S3, Google Cloud Storage, Microsoft Azure Storage와 같은 클라우드 스토리지 서비스에 파일을 업로드하고 이러한 파일들을 Active Record 객체에 첨부하는 것을 용이하게 합니다. 개발 및 테스트를 위한 로컬 디스크 기반 서비스가 함께 제공되며, 백업과 마이그레이션을 위해 하위 서비스에 파일을 미러링하는 것을 지원합니다. Active Storage에 대해 더 자세히 알아보시려면 Active Storage 개요 가이드를 참고하세요.

2.2 Redis Cache Store

Pull Request

Rails 5.2는 내장된 Redis cache store와 함께 제공됩니다. 이에 대해 자세히 알아보시려면 Rails의 캐싱: 개요 가이드를 참고하세요.

2.3 HTTP/2 Early Hints

Pull Request

Rails 5.2는 HTTP/2 Early Hints를 지원합니다. Early Hints를 활성화하여 서버를 시작하려면 bin/rails server 명령어에 --early-hints를 전달하세요.

2.4 Credentials

Pull Request

프로덕션 앱 시크릿을 저장하기 위한 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

Pull Request

Rails 5.2는 애플리케이션의 Content Security Policy를 설정할 수 있는 새로운 DSL과 함께 제공됩니다. 전역 기본 정책을 설정하고 리소스별로 이를 재정의할 수 있으며, 멀티테넌트 애플리케이션의 계정 서브도메인과 같은 요청별 값을 헤더에 주입하기 위해 lambda를 사용할 수도 있습니다. 이에 대한 자세한 내용은 Rails 애플리케이션 보안 가이드에서 확인할 수 있습니다.

3 Railties

자세한 변경 사항은 Changelog를 참조해주세요.

3.1 Deprecations

  • 제너레이터와 템플릿에서 capify! 메서드가 Deprecated 되었습니다. (Pull Request)

  • rails dbconsolerails 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)

  • consoledbconsole 명령을 실행할 때 환경 이름의 단축어를 올바르게 확장합니다. (Commit)

  • 기본 Gemfilebootsnap을 추가했습니다. (Pull Request)

  • rails runner에서 stdin으로부터 스크립트를 실행하기 위한 플랫폼 독립적인 방법으로 -를 지원합니다. (Pull Request)

  • 새로운 Rails 애플리케이션이 생성될 때 Gemfileruby x.x.x 버전을 추가하고 현재 Ruby 버전이 포함된 .ruby-version 루트 파일을 생성합니다. (Pull Request)

  • plugin generator에 --skip-action-cable 옵션을 추가했습니다. (Pull Request)

  • plugin generator의 Gemfilegit_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)

  • 기본 Gemfilemini_magick을 주석으로 추가했습니다. (Pull Request)

  • rails newrails plugin new가 기본적으로 Active Storage를 포함합니다. --skip-active-storageActive 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-OptionsX-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 divider option을 감싸는 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_tableinitialize_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::Calculationscountsum에서 인자와 블록을 동시에 전달하는 것이 deprecated 되었습니다. (Pull Request)

  • Relation에서 arel로의 위임이 deprecated 되었습니다. (Pull Request)

  • TransactionStateset_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을 허용. referenceswhere에 의해 암시적으로 호출될 수 있기 때문. (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#whereSet을 전달하는 것이 이제 배열을 전달하는 것과 동일하게 동작.

배열입니다. (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 주목할 만한 변경사항

  • HashWithIndifferentAccessfetch_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_occurringDate#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::MessageVerifierActiveSupport::MessageEncryptor에 목적과 만료 지원을 추가합니다. (Pull Request)

  • 잘못된 옵션이 전달될 때 피드백을 제공하도록 String#camelize를 업데이트합니다. (Pull Request)

  • Module#delegate와 유사하게 Module#delegate_missing_to가 이제 대상이 nil일 때 DelegationError를 발생시킵니다. (Pull Request)

  • ActiveSupport::EncryptedFileActiveSupport::EncryptedConfiguration을 추가합니다. (Pull Request)

  • 프로덕션 앱 시크릿을 저장하기 위해 config/credentials.yml.enc를 추가합니다. (Pull Request)

  • MessageEncryptorMessageVerifier에 키 순환 지원을 추가합니다. (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_dayTime#next_day를 추가합니다. Time#prev_dayTime#next_day에 인자 전달을 허용합니다. (Commit)

  • Date#prev_month, Date#next_month와 동일한 메서드 시그니처로 Time#prev_monthTime#next_month를 추가합니다. Time#prev_monthTime#next_month에 인자 전달을 허용합니다. (Commit)

  • Date#prev_year, Date#next_year와 동일한 메서드 시그니처로 Time#prev_yearTime#next_year를 추가합니다. Time#prev_yearTime#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.allActiveSupport::TimeZone::MAPPING에 있는 시간대만 반환하도록 변경. (Pull Request)

  • ActiveSupport::SecurityUtils.secure_compare의 기본 동작을 변경하여 가변 길이 문자열에 대해서도 길이 정보가 유출되지 않도록 함. 기존 ActiveSupport::SecurityUtils.secure_comparefixed_length_secure_compare로 이름 변경하고, 전달된 문자열의 길이가 일치하지 않을 경우 ArgumentError를 발생시키도록 함. (Pull Request)

  • ETag 헤더와 같은 비민감성 다이제스트를 생성할 때 SHA-1 사용. (Pull Request, Pull Request)

  • assert_changesfrom:to: 인수 조합과 관계없이 항상 표현식의 변경을 검증함. (Pull Request)

  • ActiveSupport::Cache::Storeread_multi에 대한 누락된 계측 기능 추가. (Pull Request)

  • assert_difference에서 해시를 첫 번째 인수로 지원. 이를 통해 하나의 assertion에서 여러 개의 숫자 차이를 지정할 수 있음. (Pull Request)

  • Caching: MemCache와 Redis의 read_multifetch_multi 성능 향상. 백엔드 참조 전에 로컬 인메모리 캐시에서 먼저 읽음. (Commit)

11 Active Job

자세한 변경 사항은 Changelog를 참조하세요.

11.1 주목할만한 변경사항

  • 폐기된 job을 커스텀하게 처리할 수 있도록 ActiveJob::Base.discard_on에 block을 전달할 수 있게 되었습니다. (Pull Request)

12 Ruby on Rails Guides

자세한 변경사항은 Changelog를 참고하세요.

12.1 주목할 만한 변경사항

13 크레딧

Rails를 안정적이고 견고한 프레임워크로 만들기 위해 많은 시간을 투자한 수많은 사람들을 보려면 Rails 기여자 전체 목록을 참고하세요. 이 모든 분들께 찬사를 보냅니다.



맨 위로