edge
더 많은 정보: rubyonrails.org에서 확인하세요: 더 많은 Ruby on Rails

루비 온 레일즈 5.2 릴리스 노트

Rails 5.2의 주요 기능:

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

1 Rails 5.2로 업그레이드하기

기존 애플리케이션을 업그레이드하는 경우, 업그레이드하기 전에 좋은 테스트 커버리지를 갖는 것이 좋습니다. 또한, Rails 5.2로 업데이트하기 전에 먼저 Rails 5.1로 업그레이드하고 애플리케이션이 예상대로 실행되는지 확인하십시오. 업그레이드 시 주의해야 할 사항은 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 캐시 스토어가 포함되어 있습니다. 이에 대해 더 자세히 알아보려면 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 파일을 추가하여 프로덕션 앱 비밀을 저장합니다. 이를 통해 config/master.key 파일이나 RAILS_MASTER_KEY 환경 변수로 암호화된 저장소에 제3자 서비스의 인증 자격 증명을 저장할 수 있습니다. 이는 결국 Rails 5.1에서 도입된 Rails.application.secrets와 암호화된 비밀을 대체할 것입니다. 또한, Rails 5.2는 Credentials의 기반이 되는 API를 공개하여 다른 암호화된 구성, 키 및 파일을 쉽게 처리할 수 있습니다. 이에 대해 더 자세히 알아보려면 Rails 애플리케이션 보안 가이드를 참조하십시오.

2.5 Content Security Policy

Pull Request

Rails 5.2에는 응용 프로그램에 대한 Content Security Policy를 구성할 수 있는 새로운 DSL이 포함되어 있습니다. 전역 기본 정책을 구성한 다음 리소스별로 재정의하거나 멀티 테넌트 애플리케이션에서 계정 서브도메인과 같은 퍼-리퀘스트 값을 헤더에 주입하기 위해 람다를 사용할 수 있습니다. 이에 대해 더 자세히 알아보려면 Rails 애플리케이션 보안 가이드를 참조하십시오.

3 Railties

자세한 변경 사항은 Changelog를 참조하십시오.

3.1 폐기 예정 기능

  • 생성기 및 템플릿에서 capify! 메서드를 폐기합니다. (Pull Request)

  • rails dbconsolerails console 명령에 환경 이름을 일반 인수로 전달하는 것은 폐기 예정입니다. 대신 -e 옵션을 사용해야 합니다. (Commit)

  • Rails::Application의 하위 클래스를 사용하여 Rails 서버를 시작하는 것을 폐기합니다. (Pull Request)

  • Rails 플러그인 템플릿에서 after_bundle 콜백을 폐기합니다. (Pull Request)

3.2 주목할만한 변경 사항

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

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

  • tmp:clear 작업에서 스크린샷 파일을 지우도록 수정했습니다. (Pull Request)

  • bin/rails app:update를 실행할 때 사용하지 않는 구성 요소를 건너뛰도록 수정했습니다. 초기 앱 생성 시 Action Cable, Active Record 등을 건너뛴 경우 업데이트 작업도 해당 건너뛰기를 따릅니다. (Pull Request)

  • 3단계 데이터베이스 구성을 사용할 때 rails dbconsole 명령에 사용자 정의 연결 이름을 전달할 수 있도록 허용했습니다. 예: 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)

  • 플러그인 생성기에 --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-storageActive Storage를 건너뛸 수 있도록 하고, --skip-active-record를 사용할 때 자동으로 건너뛰도록 합니다. (Pull Request)

4 Action Cable

자세한 변경 사항은 Changelog를 참조하십시오.

4.1 제거된 기능

  • 폐기된 이벤트 기반 Redis 어댑터를 제거했습니다. (Commit)

4.2 주목할만한 변경 사항

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

  • PostgreSQL 어댑터를 사용할 때 긴 스트림 식별자를 해시합니다. (Pull Request)

5 Action Pack

자세한 변경 사항은 Changelog를 참조하십시오.

5.1 삭제 사항

  • ActionController::ParamsParser::ParseError를 삭제합니다. (커밋)

5.2 폐기 사항

  • ActionDispatch::TestResponse#success?, #missing?, #error? 별칭을 폐기합니다. (풀 리퀘스트)

5.3 주목할만한 변경 사항

  • 조각 캐싱에 재활용 가능한 캐시 키 지원을 추가합니다. (풀 리퀘스트)

  • 키 변동을 디버그하기 쉽도록 조각의 캐시 키 형식을 변경합니다. (풀 리퀘스트)

  • GCM을 사용한 AEAD 암호화된 쿠키 및 세션을 추가합니다. (풀 리퀘스트)

  • 기본적으로 위조로부터 보호합니다. (풀 리퀘스트)

  • 서버 측에서 서명/암호화된 쿠키 만료를 강제합니다. (풀 리퀘스트)

  • 쿠키 :expires 옵션은 ActiveSupport::Duration 객체를 지원합니다. (풀 리퀘스트)

  • Capybara 등록된 :puma 서버 구성을 사용합니다. (풀 리퀘스트)

  • 키 회전 지원을 갖춘 쿠키 미들웨어를 단순화합니다. (풀 리퀘스트)

  • HTTP/2를 위한 Early Hints를 활성화할 수 있는 기능을 추가합니다. (풀 리퀘스트)

  • 시스템 테스트에 headless chrome 지원을 추가합니다. (풀 리퀘스트)

  • redirect_back 메서드에 :allow_other_host 옵션을 추가합니다. (풀 리퀘스트)

  • assert_recognizes가 마운트된 엔진을 탐색하도록 변경합니다. (풀 리퀘스트)

  • Content-Security-Policy 헤더를 구성하기 위한 DSL을 추가합니다. (풀 리퀘스트, 커밋, 커밋)

  • 현대 브라우저에서 지원하는 가장 인기 있는 오디오/비디오/폰트 MIME 유형을 등록합니다. (풀 리퀘스트)

  • 시스템 테스트의 기본 스크린샷 출력을 inline에서 simple로 변경합니다. (커밋)

  • 시스템 테스트에 headless firefox 지원을 추가합니다. (풀 리퀘스트)

  • 기본 헤더 세트에 안전한 X-Download-OptionsX-Permitted-Cross-Domain-Policies를 추가합니다. (커밋)

  • 사용자가 다른 서버를 수동으로 지정하지 않은 경우에만 Puma를 기본 서버로 설정하는 시스템 테스트를 변경합니다. (풀 리퀘스트)

  • 기본 헤더 세트에 Referrer-Policy 헤더를 추가합니다. (커밋)

  • ActionController::Parameters#eachHash#each 동작과 일치합니다. (풀 리퀘스트)

  • Rails UJS를 위한 자동 nonce 생성 지원을 추가합니다. (커밋)

  • https://hstspreload.org/의 최소 max-age 요구 사항을 충족하기 위해 기본 HSTS max-age 값을 31536000초(1년)로 업데이트합니다. (커밋)

  • cookiesto_hash의 별칭 메서드 to_h를 추가합니다. sessionto_h의 별칭 메서드 to_hash를 추가합니다. (커밋)

6 Action View

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

6.1 삭제 사항

  • 폐기된 Erubis ERB 핸들러를 삭제합니다. (커밋)

6.2 폐기 사항

  • image_tag로 생성된 이미지에 기본 대체 텍스트를 추가하던 image_alt 도우미를 폐기합니다. (풀 리퀘스트)

6.3 주목할만한 변경 사항

  • JSON Feeds를 지원하기 위해 auto_discovery_link_tag:json 유형을 추가합니다. (풀 리퀘스트)

  • image_tag 도우미에 srcset 옵션을 추가합니다. (풀 리퀘스트)

  • field_error_procoptgroup 및 선택 분할 option을 래핑하는 문제를 수정합니다. (풀 리퀘스트)

  • form_with를 기본적으로 ID를 생성하도록 변경합니다. (커밋)

  • preload_link_tag 도우미를 추가합니다. (풀 리퀘스트)

  • 그룹화된 선택 항목에 그룹 메서드로 호출 가능한 객체 사용을 허용합니다. (풀 리퀘스트)

7 액션 메일러

자세한 변경 사항은 Changelog을 참조하십시오.

7.1 주목할만한 변경 사항

  • 액션 메일러 클래스가 전달 작업을 구성할 수 있도록 허용합니다. (Pull Request)

  • assert_enqueued_email_with 테스트 도우미를 추가합니다. (Pull Request)

8 액티브 레코드

자세한 변경 사항은 Changelog을 참조하십시오.

8.1 제거 사항

  • #migration_keys를 제거합니다. (Pull Request)

  • 액티브 레코드 객체의 형변환 시 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 폐지 사항

  • supports_statement_cache?를 폐지합니다. (Pull Request)

  • ActiveRecord::Calculationscountsum에 동시에 인수와 블록을 전달하는 것을 폐지합니다. (Pull Request)

  • Relation에서 arel로 위임하는 것을 폐지합니다. (Pull Request)

  • TransactionStateset_state 메서드를 폐지합니다. (Commit)

  • 대체 없이 expand_hash_conditions_for_aggregates를 폐지합니다. (Commit)

8.3 주목할만한 변경 사항

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

  • Active Record 속성 리더를 재정의할 때 변경된 속성과의 일관성 문제를 수정합니다. (Pull Request)

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

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

  • 현재 마이그레이션이 존재하지 않을 때 마이그레이션 이동 시 UnknownMigrationVersionError 오류를 발생시킵니다. (Commit)

  • 데이터베이스 구조 덤프를 위한 rake 작업에서 SchemaDumper.ignore_tables을 존중합니다. (Pull Request)

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

  • 캐스팅된 값이 null인 경우 바인드 매개변수를 생성하지 않도록 수정합니다. (Pull Request)

  • 성능을 향상시키기 위해 대량 INSERT를 사용하여 픽스처를 삽입합니다. (Pull Request)

  • 중첩 조인을 나타내는 두 개의 관계를 병합할 때 병합된 관계의 조인을 LEFT OUTER JOIN으로 변환하지 않습니다. (Pull Request)

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

  • 조인을 포함하는 스코프와 함께 이른 로딩/사전 로딩 연관을 수정하십시오. (풀 리퀘스트)

  • sql.active_record 알림 구독자에서 발생하는 오류를 ActiveRecord::StatementInvalid 예외로 변환하지 않도록 방지하십시오. (풀 리퀘스트)

  • 레코드의 일괄 처리(find_each, find_in_batches, in_batches) 작업 시에는 쿼리 캐싱을 건너뛰십시오. (커밋)

  • sqlite3의 부울 직렬화를 1과 0을 사용하도록 변경하십시오. SQLite는 1과 0을 참과 거짓으로 인식하지만, 이전에 직렬화되었던 't'와 'f'를 기본적으로 인식하지 않습니다. (풀 리퀘스트)

  • 다중 매개변수 할당을 사용하여 생성된 값은 이제 단일 필드 형식 입력란에 렌더링될 때 후처리된 값(post-type-cast value)을 사용합니다. (커밋)

  • 모델을 생성할 때 ApplicationRecord가 더 이상 생성되지 않습니다. 생성하려면 rails g application_record를 사용하십시오. (풀 리퀘스트)

  • Relation#or는 이제 references만 다른 두 개의 관계를 인식합니다. referenceswhere에 의해 암묵적으로 호출될 수 있기 때문입니다. (커밋)

  • Relation#or를 사용할 때 공통 조건을 추출하고 OR 조건 앞에 배치하십시오. (풀 리퀘스트)

  • binary 픽스처 도우미 메서드를 추가하십시오. (풀 리퀘스트)

  • STI에 대한 역 관계를 자동으로 추측하십시오. (풀 리퀘스트)

  • 락 대기 시간이 초과될 때 LockWaitTimeout 오류 클래스를 추가하고 발생시킵니다. (풀 리퀘스트)

  • sql.active_record 계측의 페이로드 이름을 더 구체적으로 업데이트하십시오. (풀 리퀘스트)

  • 데이터베이스에서 인덱스를 제거할 때 주어진 알고리즘을 사용하십시오. (풀 리퀘스트)

  • SetRelation#where에 전달하는 것은 이제 배열을 전달하는 것과 동일하게 동작합니다. (커밋)

  • PostgreSQL tsrange는 이제 하위 초 정밀도를 유지합니다. (풀 리퀘스트)

  • 더티 레코드에서 lock!을 호출할 때 예외를 발생시킵니다. (커밋)

  • SQLite 어댑터를 사용할 때 인덱스의 열 순서가 db/schema.rb에 작성되지 않는 버그를 수정하십시오. (풀 리퀘스트)

  • 지정된 VERSION으로 bin/rails db:migrate를 수정하십시오. 빈 VERSION으로 bin/rails db:migrateVERSION 없이 동작합니다. VERSION의 형식을 확인하십시오: 마이그레이션 버전 번호 또는 마이그레이션 파일의 이름을 허용합니다. VERSION의 형식이 잘못된 경우 오류를 발생시킵니다. 대상 마이그레이션이 존재하지 않는 경우 오류를 발생시킵니다. (풀 리퀘스트)

  • 문장 시간 초과가 초과될 때 StatementTimeout 오류 클래스를 추가하고 발생시킵니다. (풀 리퀘스트)

  • update_all은 이제 값을 Type#cast로 전달하기 전에 Type#serialize로 전달합니다. 따라서 update_all(foo: 'true')는 부울 값을 올바르게 유지합니다. (커밋)

  • 관계 쿼리 메서드에서 사용할 때 원시 SQL 조각을 명시적으로 표시해야 합니다. (커밋, 커밋)

  • 데이터베이스 마이그레이션에는 마이그레이션 업 시에만 관련이 있는 코드에 #up_only를 추가하십시오. 예를 들어 새로운 열을 채울 때 사용합니다. (풀 리퀘스트)

  • 사용자 요청으로 인해 문을 취소 할 때 발생하는 새로운 오류 클래스 QueryCanceled 추가 (Pull Request)

  • Relation의 인스턴스 메소드와 충돌하는 스코프 정의를 허용하지 않음 (Pull Request)

  • add_index에 대한 PostgreSQL 연산자 클래스 지원 추가 (Pull Request)

  • 데이터베이스 쿼리 호출자 로깅 (Pull Request, Pull Request, Pull Request)

  • 컬럼 정보 재설정시 하위 클래스에서 속성 메소드 정의 해제 (Pull Request)

  • limit 또는 offset와 함께 delete_all에 대한 서브셀렉트 사용 (Commit)

  • limit()와 함께 사용될 때 first(n)의 일관성 문제 수정 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)

  • has_one/belongs_to 관계에서 dependent: :destroy 문제 수정 자식이 삭제되지 않을 때 부모 클래스가 삭제되는 문제 (Commit)

  • 유휴 데이터베이스 연결 (이전에는 고아 연결만)은 이제 연결 풀 리퍼에 의해 주기적으로 제거됩니다. (Commit)

9 Active Model

자세한 변경 사항은 Changelog를 참조하십시오.

9.1 주목할만한 변경 사항

  • ActiveModel::Errors에서 #keys, #values 메소드 수정 #keys는 빈 메시지가 없는 키만 반환하도록 변경됩니다. #values는 비어 있지 않은 값만 반환하도록 변경됩니다. (Pull Request)

  • ActiveModel::Errors에 대한 #merge! 메소드 추가 (Pull Request)

  • 길이 유효성 검사기 옵션에 Proc 또는 Symbol 전달 허용 (Pull Request)

  • _confirmation의 값이 false인 경우 ConfirmationValidator 유효성 검사 실행 (Pull Request)

  • proc 기본값을 사용하는 속성 API를 사용하는 모델을 마샬 할 수 있도록 수정 (Commit)

  • 직렬화에서 옵션을 포함한 모든 다중 :includes를 잃지 않도록 수정 (Commit)

10 Active Support

자세한 변경 사항은 Changelog를 참조하십시오.

10.1 제거 사항

  • 콜백에 대한 :if:unless 문자열 필터 제거 (Commit)

  • halt_callback_chains_on_return_false 옵션 제거 (Commit)

10.2 폐기 사항

  • Module#reachable? 메서드를 폐기합니다. (풀 리퀘스트)

  • secrets.secret_token을 폐기합니다. (커밋)

10.3 주목할만한 변경 사항

  • HashWithIndifferentAccessfetch_values를 추가합니다. (풀 리퀘스트)

  • Time#change:offset 지원을 추가합니다. (커밋)

  • ActiveSupport::TimeWithZone#change:offset:zone 지원을 추가합니다. (커밋)

  • 폐기 알림에 젬 이름과 폐기 예정 기간을 전달합니다. (풀 리퀘스트)

  • 버전별 캐시 엔트리 지원을 추가합니다. 이를 통해 캐시 스토어가 캐시 키를 재활용하여 저장 공간을 크게 절약할 수 있습니다. Active Record의 #cache_key#cache_version의 분리 및 Action Pack의 프래그먼트 캐싱에서의 사용과 함께 작동합니다. (풀 리퀘스트)

  • 스레드 격리된 속성 싱글톤을 제공하기 위해 ActiveSupport::CurrentAttributes를 추가합니다. 주요 사용 사례는 모든 요청에 대한 속성을 전체 시스템에서 쉽게 사용할 수 있도록 하는 것입니다. (풀 리퀘스트)

  • #singularize#pluralize는 지정된 로케일에 대해 불가산 명사를 존중합니다. (커밋)

  • class_attribute에 기본 옵션을 추가합니다. (풀 리퀘스트)

  • Date#prev_occurringDate#next_occurring을 추가하여 지정된 이전/다음 요일을 반환합니다. (풀 리퀘스트)

  • 모듈 및 클래스 속성 접근자에 기본 옵션을 추가합니다. (풀 리퀘스트)

  • 캐시: write_multi. (풀 리퀘스트)

  • 기본적으로 ActiveSupport::MessageEncryptor가 AES 256 GCM 암호화를 사용하도록 설정합니다. (풀 리퀘스트)

  • 테스트에서 시간을 Time.now로 고정하는 freeze_time 도우미를 추가합니다. (풀 리퀘스트)

  • Hash#reverse_merge!의 순서를 HashWithIndifferentAccess와 일관되게 만듭니다. (풀 리퀘스트)

  • ActiveSupport::MessageVerifierActiveSupport::MessageEncryptor에 목적과 만료 지원을 추가합니다. (풀 리퀘스트)

  • String#camelize를 업데이트하여 잘못된 옵션이 전달될 때 피드백을 제공합니다. (풀 리퀘스트)

  • Module#delegate_missing_to는 이제 대상이 null인 경우 DelegationError를 발생시킵니다. 이는 Module#delegate와 유사합니다. (풀 리퀘스트)

  • ActiveSupport::EncryptedFileActiveSupport::EncryptedConfiguration를 추가합니다. (풀 리퀘스트)

  • 프로덕션 앱 비밀을 저장하기 위해 config/credentials.yml.enc를 추가합니다. (풀 리퀘스트)

  • MessageEncryptorMessageVerifier에 키 회전 지원을 추가합니다. (풀 리퀘스트)

  • HashWithIndifferentAccess#transform_keys에서 HashWithIndifferentAccess의 인스턴스를 반환합니다. (풀 리퀘스트)

  • Hash#slice는 이제 정의되어 있으면 Ruby 2.5+의 내장 정의로 대체됩니다. (커밋)

  • IO#to_json은 이제 배열로 변환하려는 대신 to_s 표현을 반환합니다. 이로 인해 IO#to_json을 읽을 수 없는 개체에 대해 호출하면 IOError가 발생하는 버그가 수정됩니다. (풀 리퀘스트)

  • Date#prev_dayDate#next_day와 일치하는 Time#prev_dayTime#next_day에 동일한 메서드 시그니처를 추가합니다. Time#prev_dayTime#next_day에 인수를 전달할 수 있도록 합니다. (커밋)

  • Date#prev_monthDate#next_month와 일치하는 Time#prev_monthTime#next_month에 동일한 메서드 시그니처를 추가합니다. Time#prev_monthTime#next_month에 인수를 전달할 수 있도록 합니다. (커밋)

  • Date#prev_yearDate#next_year와 일치하는 Time#prev_yearTime#next_year에 동일한 메서드 시그니처를 추가합니다. Time#prev_yearTime#next_year에 인수를 전달할 수 있도록 합니다. (커밋)

  • humanize에서 약어 지원 수정. (커밋)

  • TWZ 범위에서 Range#include? 허용. (풀 리퀘스트)

  • 캐시: 값이 1kB보다 큰 경우에는 압축 기능을 기본으로 활성화. (풀 리퀘스트)

  • Redis 캐시 스토어. (풀 리퀘스트, 풀 리퀘스트)

  • TZInfo::AmbiguousTime 오류 처리. (풀 리퀘스트)

  • MemCacheStore: 만료 카운터 지원. (커밋)

  • ActiveSupport::TimeZone.allActiveSupport::TimeZone::MAPPING에 있는 시간대만 반환하도록 변경. (풀 리퀘스트)

  • ActiveSupport::SecurityUtils.secure_compare의 기본 동작 변경. 가변 길이 문자열에 대해서도 길이 정보가 노출되지 않도록 함. 이전 ActiveSupport::SecurityUtils.secure_comparefixed_length_secure_compare로 이름 변경하고, 전달된 문자열의 길이 불일치 시 ArgumentError를 발생시키도록 함. (풀 리퀘스트)

  • ETag 헤더와 같은 민감하지 않은 다이제스트를 생성하기 위해 SHA-1 사용. (풀 리퀘스트, 풀 리퀘스트)

  • assert_changesfrom:to: 인수 조합에 관계없이 표현식이 변경되었는지 항상 확인함. (풀 리퀘스트)

  • ActiveSupport::Cache::Store에서 read_multi에 대한 누락된 인스트루먼테이션 추가. (풀 리퀘스트)

  • assert_difference의 첫 번째 인수로 해시 지원. 이를 통해 동일한 어설션에서 여러 숫자 차이를 지정할 수 있음. (풀 리퀘스트)

  • 캐싱: MemCache 및 Redis read_multifetch_multi 속도 향상. 백엔드를 확인하기 전에 로컬 인메모리 캐시에서 읽음. (커밋)

11 Active Job

자세한 변경 사항은 변경 로그를 참조하십시오.

11.1 주요 변경 사항

  • ActiveJob::Base.discard_on에 블록을 전달하여 폐기 작업의 사용자 정의 처리를 허용. (풀 리퀘스트)

12 Ruby on Rails 가이드

자세한 변경 사항은 변경 로그를 참조하십시오.

12.1 주요 변경 사항

13 크레딧

Rails에 많은 시간을 투자한 많은 사람들을 위해 Rails 기여자 전체 목록을 참조하십시오. 모든 분들에게 경의를 표합니다.

피드백

이 가이드의 품질을 개선하는 데 도움을 주시기를 권장합니다.

오타나 사실적인 오류를 발견하면 기여해주십시오. 시작하려면 문서 기여 섹션을 읽어보세요.

불완전한 내용이나 최신 정보가 아닌 내용을 발견할 수도 있습니다. 주요한 부분에 누락된 문서를 추가해주세요. Edge 가이드에서 이미 문제가 해결되었는지 확인하세요. 스타일과 규칙은 Ruby on Rails 가이드 지침을 확인하세요.

수정할 내용을 발견했지만 직접 수정할 수 없는 경우 이슈를 열어주세요.

마지막으로, Ruby on Rails 문서에 관한 모든 토론은 공식 Ruby on Rails 포럼에서 환영합니다.