Ruby on Rails 5.2 릴리스 노트

Rails 5.2의 주요 기능:

  • Active Storage
  • Redis 캐시 스토어
  • HTTP/2 Early Hints
  • 자격 증명
  • 콘텐츠 보안 정책

이 릴리스 노트에서는 주요 변경 사항만 다룹니다. 다양한 버그 수정 및 변경 사항에 대해서는 변경 로그를 참조하거나 GitHub의 Rails 주 저장소에서 커밋 목록을 확인하세요.


Rails 5.2로 업그레이드하기

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

주요 기능

Active Storage

Pull Request

Active Storage는 Amazon S3, Google Cloud Storage, Microsoft Azure Storage와 같은 클라우드 스토리지 서비스에 파일을 업로드하고 Active Record 객체에 연결하는 기능을 제공합니다. 개발 및 테스트를 위한 로컬 디스크 기반 서비스와 백업 및 마이그레이션을 위한 하위 서비스 미러링을 지원합니다. Active Storage에 대한 자세한 내용은 “Active Storage 개요” 가이드에서 확인할 수 있습니다.

Redis 캐시 스토어

Pull Request

Rails 5.2에는 내장 Redis 캐시 스토어가 포함되어 있습니다. 이에 대한 자세한 내용은 “Rails의 캐싱: 개요” 가이드에서 확인할 수 있습니다.

HTTP/2 Early Hints

Pull Request

Rails 5.2는 HTTP/2 Early Hints를 지원합니다. Early Hints를 활성화하려면 bin/rails server--early-hints 옵션을 전달하면 됩니다.

자격 증명

Pull Request

프로덕션 앱 비밀번호를 저장하기 위한 config/credentials.yml.enc 파일이 추가되었습니다. config/master.key 파일 또는 RAILS_MASTER_KEY 환경 변수로 암호화된 이 파일에 타사 서비스의 인증 자격 증명을 저장할 수 있습니다. 이는 결국 Rails.application.secrets와 Rails 5.1에서 도입된 암호화된 비밀번호를 대체할 것입니다. 또한 Rails 5.2에서는 Credentials의 기반이 되는 API를 공개하여 다른 암호화된 구성, 키 및 파일을 쉽게 다룰 수 있습니다. 이에 대한 자세한 내용은 “Rails 애플리케이션 보안” 가이드에서 확인할 수 있습니다.

콘텐츠 보안 정책

Pull Request

Rails 5.2에는 애플리케이션에 대한 콘텐츠 보안 정책을 구성할 수 있는 새로운 DSL이 포함되어 있습니다. 전역 기본 정책을 구성하고 리소스별로 이를 재정의할 수 있으며, 다중 테넌트 애플리케이션의 계정 하위 도메인과 같은 요청별 값을 헤더에 삽입할 수 있는 람다를 사용할 수 있습니다. 이에 대한 자세한 내용은 “Rails 애플리케이션 보안” 가이드에서 확인할 수 있습니다.

Railties

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

사용 중단

  • 생성기와 템플릿에서 capify! 메서드 사용 중단. (Pull Request)

  • rails dbconsolerails console 명령에 환경 이름을 일반 인수로 전달하는 것이 사용 중단되었습니다. 대신 -e 옵션을 사용해야 합니다. (Commit)

  • Rails::Application 하위 클래스를 사용하여 Rails 서버를 시작하는 것이 사용 중단되었습니다. (Pull Request)

  • Rails 플러그인 템플릿에서 after_bundle 콜백 사용 중단. (Pull Request)

주목할 만한 변경 사항

  • 모든 환경에 대해 config/database.yml에 공유 섹션을 추가했습니다. (Pull Request)

  • 플러그인 생성기에 railtie.rb를 추가했습니다. (Pull Request)

  • tmp:clear 작업에서 스크린샷 파일을 정리합니다. (Pull Request)

  • bin/rails app:update를 실행할 때 사용되지 않는 구성 요소를 건너뜁니다. 초기 앱 생성 시 Action Cable, Active Record 등이 생략된 경우 업데이트 작업에서도 해당 생략이 유지됩니다. (Pull Request)

  • rails dbconsole 명령에 사용자 지정 연결 이름을 전달할 수 있습니다. 3단계 데이터베이스 구성을 사용하는 경우 예: bin/rails dbconsole -c replica. (Commit)

  • consoledbconsole 명령에서 환경 이름에 대한 단축키를 제대로 확장합니다. (Commit)

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

  • rails runner에서 stdin에서 스크립트를 실행할 수 있도록 -를 지원합니다. (Pull Request)

  • 새로 생성된 Rails 애플리케이션에 Gemfileruby x.x.x 버전과 루트 디렉토리에 .ruby-version 파일이 포함되어 있습니다. (Pull Request)

  • 플러그인 생성기에 --skip-action-cable 옵션을 추가했습니다. (Pull Request)

  • 플러그인 생성기에 git_sourceGemfile에 추가했습니다. (Pull Request)

  • Rails 플러그인에서 사용되지 않는 구성 요소를 건너뛰도록 bin/rails를 수정했습니다. (Commit)

  • 생성기 작업의 들여쓰기를 최적화했습니다. (Pull Request)

  • 라우트 들여쓰기를 최적화했습니다. (Pull Request)

  • 플러그인 생성기에 --skip-yarn 옵션을 추가했습니다. (Pull Request)

  • 생성기의 gem 메서드에 여러 버전 인수를 지원했습니다. (Pull Request)

  • 개발 및 테스트 환경에서 secret_key_base를 앱 이름에서 파생했습니다. (Pull Request)

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

  • rails newrails plugin new에서 기본적으로 Active Storage를 사용합니다. --skip-active-storage 옵션으로 건너뛸 수 있으며, --skip-active-record를 사용할 때 자동으로 건너뜁니다. (Pull Request)

Action Cable

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

제거

  • 사용되지 않는 evented redis 어댑터를 제거했습니다. (Commit)

주목할 만한 변경 사항

  • cable.yml에서 host, port, dbpassword 옵션을 지원합니다. (Pull Request)

  • PostgreSQL 어댑터에서 긴 스트림 식별자를 해시합니다. (Pull Request)

Action Pack

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

제거

  • ActionController::ParamsParser::ParseError를 제거했습니다. (Commit)

사용 중단

  • ActionDispatch::TestResponse#success?, #missing?#error? 별칭을 사용 중단했습니다. (Pull Request)

주목할 만한 변경 사항

  • 조각 캐싱에 재사용 가능한 캐시 키 지원을 추가했습니다. (Pull Request)

  • 조각 캐시 키 형식을 디버깅하기 쉽게 변경했습니다. (Pull Request)

  • 쿠키와 세션에 AEAD 암호화(GCM)를 사용했습니다. (Pull Request)

  • 기본적으로 위조 방지를 적용했습니다. (Pull Request)

  • 서버 측에서 서명/암호화된 쿠키 만료를 적용했습니다. (Pull Request)

  • 쿠키의 :expires 옵션에 ActiveSupport::Duration 객체를 지원했습니다. (Pull Request)

  • Capybara에 등록된 :puma 서버 구성을 사용했습니다. (Pull Request)

  • 쿠키 미들웨어를 단순화하고 키 교체 지원을 추가했습니다. (Pull Request)

  • HTTP/2에 대한 Early Hints 기능을 추가했습니다. (Pull Request)

  • System Tests에 헤드리스 Chrome 지원을 추가했습니다. (Pull Request)

  • redirect_back 메네, 계속해서 Rails 5.2 릴리스 노트의 한국어 번역을 제공하겠습니다.

Action Pack

  • redirect_back 메서드에 :allow_other_host 옵션을 추가했습니다. (Pull Request)

  • assert_recognizes가 마운트된 엔진을 탐색하도록 수정했습니다. (Pull Request)

  • Content-Security-Policy 헤더를 구성하기 위한 DSL을 추가했습니다. (Pull Request, Commit, Commit)

  • 현대 브라우저에서 지원되는 가장 일반적인 오디오/비디오/폰트 MIME 유형을 등록했습니다. (Pull Request)

  • 시스템 테스트 스크린샷 출력을 기본값인 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)

  • 기본 HSTS max-age 값을 31536000초(1년)로 업데이트하여 https://hstspreload.org/의 최소 max-age 요구 사항을 충족하도록 했습니다. (Commit)

  • cookies에 대해 to_hash 별칭 메서드를, session에 대해 to_h 별칭 메서드를 추가했습니다. (Commit)

Action View

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

제거

  • 사용되지 않는 Erubis ERB 핸들러를 제거했습니다. (Commit)

사용 중단

  • image_alt 헬퍼가 사용 중단되었습니다. 이 헬퍼는 image_tag로 생성된 이미지에 기본 alt 텍스트를 추가했습니다. (Pull Request)

주목할 만한 변경 사항

  • JSON Feeds를 지원하기 위해 auto_discovery_link_tag:json 유형을 추가했습니다. (Pull Request)

  • image_tag 헬퍼에 srcset 옵션을 추가했습니다. (Pull Request)

  • field_error_procoptgroup과 선택 구분자 option을 래핑하는 문제를 수정했습니다. (Pull Request)

  • form_with가 기본적으로 id를 생성하도록 변경했습니다. (Commit)

  • preload_link_tag 헬퍼를 추가했습니다. (Pull Request)

  • 그룹화된 선택에 대해 호출 가능한 객체를 그룹 메서드로 사용할 수 있게 했습니다. (Pull Request)

Action Mailer

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

주목할 만한 변경 사항

  • Action Mailer 클래스에서 배달 작업을 구성할 수 있게 했습니다. (Pull Request)

  • assert_enqueued_email_with 테스트 헬퍼를 추가했습니다. (Pull Request)

Active Record

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

제거

  • #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)

  • #indexesname 인수를 제거했습니다. (Commit)

  • #verify!의 인수를 제거했습니다. (Commit)

  • .error_on_ignored_order_or_limit 구성을 제거했습니다. (Commit)

  • #scope_chain 메서드를 제거했습니다. (Commit)

  • #sanitize_conditions 메서드를 제거했습니다. (Commit)

사용 중단

  • supports_statement_cache?가 사용 중단되었습니다. (Pull Request)

  • ActiveRecord::Calculationscountsum에 인수와 블록을 동시에 전달하는 것이 사용 중단되었습니다. (Pull Request)

  • Relation에서 arel에 위임하는 것이 사용 중단되었습니다. (Pull Request)

  • TransactionStateset_state 메서드가 사용 중단되었습니다. (Commit)

  • expand_hash_conditions_for_aggregates가 대체 없이 사용 중단되었습니다. (Commit)

주목할 만한 변경 사항

  • 동적 픽스처 접근자 메서드를 인수 없이 호출하면 이 유형의 모든 픽스처를 반환합니다. 이전에는 항상 빈 배열을 반환했습니다. (Pull Request)

  • Active Record 속성 리더를 재정의할 때 변경된 속성의 일관성을 수정했습니다. (Pull Request)

  • MySQL에 대한 내림차순 인덱스 지원을 추가했습니다. (Pull Request)

  • bin/rails db:forward의 첫 번째 마이그레이션을 수정했습니다. (Commit)

  • 현재 마이그레이션이 존재하지 않는 경우 UnknownMigrationVersionError 오류를 발생시키도록 마이그레이션 이동 동작을 수정했습니다. (Commit)

  • SchemaDumper.ignore_tables를 데이터베이스 구조 덤프 rake 작업에서 존중하도록 했습니다. (Pull Request)

  • 새로운 버전화된 항목을 통해 재사용 가능한 캐시 키를 지원하도록 ActiveRecord::Base#cache_version을 추가했습니다. 이에 따라 ActiveRecord::Base#cache_key는 더 이상 타임스탬프를 포함하지 않는 안정적인 키를 반환합니다. (Pull Request)

  • 캐스팅된 값이 nil인 경우 바인딩 매개변수 생성을 방지했습니다. (Pull Request)

  • 픽스처 로드 성능 향상을 위해 일괄 INSERT를 사용했습니다. (Pull Request)

  • 병합된 관계의 조인이 LEFT OUTER JOIN으로 변환되지 않도록 수정했습니다. (Pull Request)

  • 트랜잭션 상태를 자식 트랜잭션에 적용하도록 수정했습니다. 이전에는 중첩 트랜잭션에서 외부 트랜잭션이 롤백되면 내부 트랜잭션의 레코드가 여전히 지속된 것으로 표시되었습니다. 이를 수정하여 부모 트랜잭션이 롤백될 때 자식 트랜잭네, 계속해서 Rails 5.2 릴리스 노트의 한국어 번역을 제공하겠습니다.

Active Record

주목할 만한 변경 사항

  • 트랜잭션 상태를 자식 트랜잭션에 적용하도록 수정했습니다. 이전에는 중첩 트랜잭션에서 외부 트랜잭션이 롤백되면 내부 트랜잭션의 레코드가 여전히 지속된 것으로 표시되었습니다. 이를 수정하여 부모 트랜잭션이 롤백될 때 자식 트랜잭션의 레코드도 지속되지 않은 것으로 표시되도록 했습니다. (Commit)

  • 조인을 포함하는 범위로 eager loading/preloading 연관 관계를 수정했습니다. (Pull Request)

  • sql.active_record 알림 구독자에 의해 발생한 오류가 ActiveRecord::StatementInvalid 예외로 변환되지 않도록 방지했습니다. (Pull Request)

  • 레코드 일괄 처리(find_each, find_in_batches, in_batches)에서 쿼리 캐싱을 건너뛰도록 수정했습니다. (Commit)

  • SQLite의 부울 직렬화를 1과 0을 사용하도록 변경했습니다. SQLite는 네이티브로 1과 0을 각각 true와 false로 인식하지만, 이전에는 ‘t'와 'f'를 직렬화했습니다. (Pull Request)

  • 다중 매개변수 할당을 사용하여 구성된 값은 이제 단일 필드 폼 입력에 대한 렌더링에 유형 변환된 값을 사용합니다. (Commit)

  • 모델 생성 시 더 이상 ApplicationRecord가 생성되지 않습니다. 필요한 경우 rails g application_record로 생성할 수 있습니다. (Pull Request)

  • Relation#or는 이제 references만 다른 두 관계를 허용합니다. referenceswhere에 의해 암시적으로 호출될 수 있기 때문입니다. (Commit)

  • Relation#or를 사용할 때 공통 조건을 추출하고 OR 조건 앞에 배치합니다. (Pull Request)

  • binary 픽스처 헬퍼 메서드를 추가했습니다. (Pull Request)

  • STI에 대한 역 연관 관계를 자동으로 추측하도록 수정했습니다. (Pull Request)

  • LockWaitTimeout 새 오류 클래스를 추가했습니다. 이 오류는 잠금 대기 시간 초과 시 발생합니다. (Pull Request)

  • sql.active_record 계측을 위한 페이로드 이름을 더 설명적으로 업데이트했습니다. (Pull Request)

  • 데이터베이스에서 인덱스를 제거할 때 제공된 알고리즘을 사용하도록 수정했습니다. (Pull Request)

  • Relation#whereSet을 전달하는 것이 배열을 전달하는 것과 동일하게 동작하도록 수정했습니다. (Commit)

  • PostgreSQL tsrange가 이제 하위 초 정밀도를 유지합니다. (Pull Request)

  • 더러운 레코드에서 lock!을 호출하면 오류를 발생시키도록 수정했습니다. (Commit)

  • SQLite 어댑터를 사용할 때 db/schema.rb에 인덱스 열 순서가 올바르게 작성되지 않는 버그를 수정했습니다. (Pull Request)

  • bin/rails db:migrate에서 지정된 VERSION을 수정했습니다. bin/rails db:migrate에 빈 VERSION을 전달하면 VERSION 없이 동작합니다. VERSION 형식을 확인: 마이그레이션 버전 번호 또는 마이그레이션 파일 이름을 허용합니다. 형식이 잘못된 경우 오류를 발생시킵니다. 대상 마이그레이션이 존재하지 않는 경우 오류를 발생시킵니다. (Pull Request)

  • StatementTimeout 새 오류 클래스를 추가했습니다. 이 오류는 문장 시간 초과 시 발생합니다. (Pull Request)

  • update_all이 이제 값을 Type#serialize에 전달하기 전에 Type#cast를 통과시킵니다. 따라서 update_all(foo: 'true')가 부울을 올바르게 지속시킬 수 있습니다. (Commit)

  • 관계 쿼리 메서드에서 사용되는 원시 SQL 조각을 명시적으로 표시하도록 요구합니다. (Commit, Commit)

  • 새 열을 채우는 등 마이그레이션 시 위쪽으로만 관련된 코드를 위해 #up_only를 추가했습니다. (Pull Request)

  • QueryCanceled 새 오류 클래스를 추가했습니다. 이 오류는 사용자 요청으로 인해 문장이 취소될 때 발생합니다. (Pull Request)

  • Relation의 인스턴스 메서드와 충돌하는 범위를 정의할 수 없도록 수정했습니다. (Pull Request)

  • add_index에 PostgreSQL 연산자 클래스 지원을 추가했습니다. (Pull Request)

  • 데이터베이스 쿼리 호출자 로깅을 추가했습니다. (Pull Request, Pull Request, Pull Request)

  • 열 정보를 재설정할 때 자식 클래스의 속성 메서드를 정의 해제했습니다. (Pull Request)

  • limit 또는 offset이 있는 delete_all에 하위 쿼리를 사용했습니다. (Commit)

  • first(n)limit()의 불일치를 수정했습니다. first(n) 찾기 메서드는 이제 limit()을 존중하여 relation.to_a.first(n)last(n)의 동작과 일치합니다. (Pull Request)

  • 저장되지 않은 부모 인스턴스의 중첩 has_many :through 연관 관계를 수정했습니다. (Commit)

  • 연관 관계 조건을 고려하여 연결된 레코드를 삭제했습니다. (Commit)

  • save 또는 save!가 호출된 후에도 파괴된 객체 변경을 허용하지 않도록 수정했습니다. (Commit)

  • left_outer_joins와 관련된 관계 병합 문제를 수정했습니다. (Pull Request)

  • PostgreSQL 외부 테이블 지원을 추가했습니다. (Pull Request)

  • Active Record 객체를 복제할 때 트랜잭션 상태를 지웠습니다. (Pull Request)

  • composed_of 열을 사용하여 where 메서드에 Array 객체를 전달할 때 발생하는 확장 문제를 수정했습니다. (Pull Request)

  • reflection.klasspolymorphic?가 아닌 경우 오류를 발생시키도록 수정했습니다. (Commit)

  • MySQL 및 PostgreSQL의 #columns_for_distinct를 수정하여 ActiveRecord::FinderMethods#limited_ids_for가 다른 테이블의 기본 키를 포함하는 ORDER BY 열에도 올바른 기본 키 값을 사용할 수 있도록 했습니다. (Commit)

  • 부모 클래스가 삭제되지 않도록 dependent: :destroy 문제를 수정했습니다. (Commit)

  • 이전에는 단순히 버려진 연결만 주기적으로 정리되었지만, 이제 유휴 데이터베이스 연결도 연결 풀 정리기에 의해 정리됩니다. (Commit)

Active Model

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

주목할 만한 변경 사항

  • ActiveModel::Errors#keys#values 메서드를 수정했습니다. #keys는 이제 비어 있지 않은 메시지만 반환하고, #values는 비어 있지 않은 값만 반환합니다. (Pull Request)

  • ActiveModel::Errors#merge! 메서드를 추가했습니다. (Pull Request)

  • 길이 유효성 검사기 옵션에 Proc 또는 Symbol을 전달할 수 있게 했습니다. (Pull Request)

  • _confirmation의 값이 false인 경우에도 ConfirmationValidator 유효성 검사를 실행하도록 수정했습니다. (Pull Request)

  • 속성 API를 사용하는 모델에서 프로시저 기본값을 사네, 계속해서 Rails 5.2 릴리스 노트의 한국어 번역을 제공하겠습니다.

Active Model

주목할 만한 변경 사항

  • 속성 API를 사용하는 모델에서 프로시저 기본값을 사용할 때 마샬링할 수 있도록 수정했습니다. (Commit)

  • 직렬화 중 여러 :includes와 옵션을 모두 유지하도록 수정했습니다. (Commit)

Active Support

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

제거

  • 콜백에 대한 문자열 필터 :if:unless를 제거했습니다. (Commit)

  • halt_callback_chains_on_return_false 옵션을 제거했습니다. (Commit)

사용 중단

  • Module#reachable? 메서드가 사용 중단되었습니다. (Pull Request)

  • secrets.secret_token이 사용 중단되었습니다. (Commit)

주목할 만한 변경 사항

  • HashWithIndifferentAccessfetch_values를 추가했습니다. (Pull Request)

  • Time#change:offset 지원을 추가했습니다. (Commit)

  • ActiveSupport::TimeWithZone#change:offset:zone 지원을 추가했습니다. (Commit)

  • 감가 상각 알림에 gem 이름과 감가 상각 기한을 전달했습니다. (Pull Request)

  • 버전화된 캐시 항목을 지원했습니다. 이를 통해 캐시 저장소가 캐시 키를 재활용할 수 있어 빈번한 변경이 있는 경우 저장 공간을 크게 절약할 수 있습니다. Active Record의 #cache_key#cache_version 분리 및 Action Pack의 조각 캐싱에서의 사용과 함께 작동합니다. (Pull Request)

  • 스레드 격리된 속성 싱글톤을 제공하는 ActiveSupport::CurrentAttributes를 추가했습니다. 주요 사용 사례는 전체 시스템에서 쉽게 사용할 수 있도록 모든 요청별 속성을 유지하는 것입니다. (Pull Request)

  • #singularize#pluralize가 이제 지정된 로케일의 불가산 명사를 존중합니다. (Commit)

  • class_attribute에 기본값 옵션을 추가했습니다. (Pull Request)

  • Date#prev_occurringDate#next_occurring을 추가하여 지정된 다음/이전 요일을 반환할 수 있습니다. (Pull Request)

  • 모듈 및 클래스 속성 접근자에 기본값 옵션을 추가했습니다. (Pull Request)

  • 캐시: write_multi. (Pull Request)

  • ActiveSupport::MessageEncryptor의 기본 암호화를 AES 256 GCM으로 변경했습니다. (Pull Request)

  • 테스트에서 Time.now를 고정하는 freeze_time 헬퍼를 추가했습니다. (Pull Request)

  • HashWithIndifferentAccess와 일관되게 Hash#reverse_merge!의 순서를 변경했습니다. (Pull Request)

  • ActiveSupport::MessageVerifierActiveSupport::MessageEncryptor에 목적 및 만료 지원을 추가했습니다. (Pull Request)

  • 잘못된 옵션이 전달된 경우 String#camelize가 피드백을 제공하도록 수정했습니다. (Pull Request)

  • Module#delegate_missing_to가 이제 대상이 nil인 경우 DelegationError를 발생시킵니다. Module#delegate와 유사합니다. (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_jsonIOError를 발생시키는 버그가 수정되었습니다. (Pull Request)

  • Date#prev_day, Date#next_day와 일치하도록 Time#prev_dayTime#next_day의 메서드 서명을 추가했습니다. 인수를 전달할 수 있도록 했습니다. (Commit)

  • Date#prev_month, Date#next_month와 일치하도록 Time#prev_monthTime#next_month의 메서드 서명을 추가했습니다. 인수를 전달할 수 있도록 했습니다. (Commit)

  • Date#prev_year, Date#next_year와 일치하도록 Time#prev_yearTime#next_year의 메서드 서명을 추가했습니다. 인수를 전달할 수 있도록 했습니다. (Commit)

  • humanize의 두문자어 지원을 수정했습니다. (Commit)

  • TWZ 범위에서 Range#include?를 허용했습니다. (Pull Request)

  • 캐시: 기본적으로 1kB 이상의 값에 대해 압축을 활성화했습니다. (Pull Request)

  • Redis 캐시 스토어. (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_comparefixed_length_secure_compare로 이름이 변경되었으며, 전달된 문자열의 길이가 일치하지 않는 경우 ArgumentError를 발생시킵니다. (Pull Request)

  • ETag 헤더와 같은 비민감 디지스트 생성에 SHA-1을 사용하도록 변경했습니다. (Pull Request, Pull Request)

  • assert_changes는 이제 from:to: 인수 조합에 관계없이 표현식이 변경되었음을 항상 어설션합니다. (Pull Request)

  • ActiveSupport::Cache::Storeread_multi에 대한 계측을 추가했습니다. (Pull Request)

  • assert_difference의 첫 번째 인수로 해시를 지원했습니다. 이를 통해 동일한 어설션에서 여러 숫자 차이를 지정할 수 있습니다. (Pull Request)

  • MemCache 및 Redis의 read_multifetch_multi 속도 향상. 백엔드를 조회하기 전에 로컬 메모리 캐시에서 읽습니다. (Commit)

Active Job

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

주목할 만한 변경 사항

  • ActiveJob::Base.discard_on에 사용자 지정 처리를 허용하는 블록을 전달할 수 있게 했습니다. (Pull Request)

Ruby on Rails 가이드

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

주목할 만한 변경 사항

크레딧

Rails에 많은 시간을 보내 안정적이고 견고한 프레임워크로 만든 많은 기여자들의 전체 목록을 참조하세요. 모든 분들께 박수를 보냅니다.

action-view: https://github.com/rails/rails/blob/5-2-stable/actionview/네, 계속해서 Rails 5.2 릴리스 노트의 한국어 번역을 제공하겠습니다.

Ruby on Rails 가이드

주목할 만한 변경 사항

크레딧

Rails에 많은 시간을 보내 안정적이고 견고한 프레임워크로 만든 많은 기여자들의 전체 목록을 참조하세요. 모든 분들께 박수를 보냅니다.