Ruby on Rails 7.0 릴리스 노트

Rails 7.0의 주요 기능:

  • Ruby 2.7.0+ 필수, Ruby 3.0+ 선호

Rails 7.0으로 업그레이드하기

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

주요 기능

Railties

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

제거된 기능

  • dbconsoleconfig 제거.

사용 중단된 기능

주목할 만한 변경 사항

  • Sprockets는 이제 선택적 종속성

    rails gem은 더 이상 sprockets-rails에 의존하지 않습니다. 애플리케이션에서 여전히 Sprockets를 사용해야 하는 경우 Gemfile에 sprockets-rails를 추가해야 합니다.

    gem "sprockets-rails"
    

Action Cable

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

제거된 기능

사용 중단된 기능

주목할 만한 변경 사항

Action Pack

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

제거된 기능

  • ActionDispatch::Response.return_only_media_type_on_content_type 제거.

  • Rails.config.action_dispatch.hosts_response_app 제거.

  • ActionDispatch::SystemTestCase#host! 제거.

  • fixture_file_uploadfixture_path를 상대 경로로 전달하는 기능 제거.

사용 중단된 기능

주목할 만한 변경 사항

Action View

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

제거된 기능

  • Rails.config.action_view.raise_on_missing_translations 제거.

사용 중단된 기능

주목할 만한 변경 사항

  • button_to가 Active Record 객체를 사용하여 URL을 생성할 때 HTTP 동사 [method]를 유추합니다.

    button_to("Do a POST", [:do_post_action, Workshop.find(1)])
    # 이전
    #=>   <input type="hidden" name="_method" value="post" autocomplete="off" />
    # 이후
    #=>   <input type="hidden" name="_method" value="patch" autocomplete="off" />
    

Action Mailer

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

제거된 기능

  • ActionMailer::DeliveryJobActionMailer::Parameterized::DeliveryJobActionMailer::MailDeliveryJob로 대체.

사용 중단된 기능

주목할 만한 변경 사항

Active Record

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

제거된 기능

  • connected_to에서 database 키워드 인수 제거.

  • ActiveRecord::Base.allow_unsafe_raw_sql 제거.

  • configs_for 메서드의 :spec_name 옵션 제거.

  • Rails 4.2 및 4.1 형식의 ActiveRecord::Base 인스턴스 YAML 로드 지원 제거.

  • PostgreSQL 데이터베이스에서 :interval 열을 사용할 때 발생하는 사용 중단 경고 제거.

    이제 interval 열은 문자열 대신 ActiveSupport::Duration 객체를 반환합니다.

    이전 동작을 유지하려면 모델에 다음 줄을 추가할 수 있습니다:

    attribute :column, :string
    
  • "primary"를 연결 사양 이름으로 사용하여 연결을 해결하는 사용 중단 지원 제거.

  • ActiveRecord::Base 객체 인용 지원 제거.

  • ActiveRecord::Base 객체에 대한 데이터베이스 값 형변환 지원 제거.

  • type_cast에 열을 전달하는 사용 중단 지원 제거.

  • DatabaseConfig#config 메서드 제거.

  • 다음 Rake 작업 제거:

    • db:schema:load_if_ruby
    • db:structure:dump
    • db:structure:load
    • db:structure:load_if_sql
    • db:structure:dump:#{name}
    • db:structure:load:#{name}
    • db:test:load_structure
    • db:test:load_structure:#{name}
  • Model.reorder(nil).first를 사용하여 비결정적 순서로 검색하는 사용 중단 지원 제거.

  • Tasks::DatabaseTasks.schema_up_to_date?에서 environmentname 인수 제거.

  • Tasks::DatabaseTasks.dump_filename 제거.

  • Tasks::DatabaseTasks.schema_file 제거.

  • Tasks::DatabaseTasks.spec 제거.

  • Tasks::DatabaseTasks.current_config 제거.

  • ActiveRecord::Connection#allowed_index_name_length 제거.

  • ActiveRecord::Connection#in_clause_length 제거.

  • ActiveRecord::DatabaseConfigurations::DatabaseConfig#spec_name 제거.

  • ActiveRecord::Base.connection_config 제거.

  • ActiveRecord::Base.arel_attribute 제거.

  • ActiveRecord::Base.configurations.default_hash 제거.

  • ActiveRecord::Base.configurations.to_h 제거.

  • ActiveRecord::Result#map!ActiveRecord::Result#collect! 제거.

  • ActiveRecord::Base#remove_connection 제거.

사용 중단된 기능

  • Tasks::DatabaseTasks.schema_file_type 사용 중단.

주목할 만한 변경 사항

  • 블록이 예상보다 빨리 반환될 때 트랜잭션 롤백.

    이 변경 전에는 트랜잭션 블록이 빨리 반환되면 트랜잭션이 커밋되었습니다.

    문제는 트랜잭션 블록 내부에서 발생한 시간 초과가 불완전한 트랜잭션을 커밋하게 만들었다는 것입니다. 이를 방지하기 위해 트랜잭션 블록이 롤백됩니다.

  • 동일한 열에 대한 조건 병합이 더 이상 두 조건을 유지하지 않고 후자 조건으로 일관되게 대체됩니다.

    # Rails 6.1 (IN 절이 병합 측 등호 조건으로 대체됨)
    Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob]
    # Rails 6.1 (두 충돌 조건이 모두 존재, 사용 중단됨)
    Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => []
    # Rails 6.1에서 rewhere를 사용하여 Rails 7.0의 동작으로 마이그레이션
    Author.where(id: david.id..mary.id).merge(Author.where(id: bob), rewhere: true) # => [bob]
    # Rails 7.0 (IN 절과 동일한 동작, 병합 측 조건이 일관되게 대체됨)
    Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob]
    Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => [bob]
    

Active Storage

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

제거된 기능

사용 중단된 기능

주목할 만한 변경 사항

Active Model

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

제거된 기능

  • ActiveModel::Errors 인스턴스를 해시로 열거하는 기능 제거.

  • ActiveModel::Errors#to_h 제거.

  • ActiveModel::Errors#slice! 제거.

  • ActiveModel::Errors#values 제거.

  • ActiveModel::Errors#keys 제거.

  • ActiveModel::Errors#to_xml 제거.

  • ActiveModel::Errors#messages에 오류를 연결하는 기능 제거.

  • ActiveModel::Errors#messages에서 오류를 clear하는 기능 제거.

  • ActiveModel::Errors#messages에서 오류를 delete하는 기능 제거.

  • ActiveModel::Errors#messages에서 []=를 사용하는 기능 제거.

  • Rails 5.x 오류 형식의 Marshal 및 YAML 로드 지원 제거.

  • Rails 5.x ActiveModel::AttributeSet 형식의 Marshal 로드 지원 제거.

사용 중단된 기능

주목할 만한 변경 사항

Active Support

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

제거된 기능

  • config.active_support.use_sha1_digests 제거.

  • URI.parser 제거.

  • 날짜 시간 범위에 값이 포함되는지 확인하기 위해 Range#include?를 사용하는 기능 제거.

  • ActiveSupport::Multibyte::Unicode.default_normalization_form 제거.

사용 중단된 기능

  • Array, Range, Date, DateTime, Time, BigDecimal, Float, Integer에서 #to_s에 형식을 전달하는 대신 #to_fs를 사용하도록 사용 중단.

    이 사용 중단은 Ruby 3.1의 최적화를 활용하여 일부 유형의 객체 보간 속도를 높이기 위한 것입니다.

    새 애플리케이션에서는 이러한 클래스에서 #to_s 메서드가 재정의되지 않을 것이며, 기존 애플리케이션은 config.active_support.disable_to_s_conversion을 사용할 수 있습니다.

주목할 만한 변경 사항

Active Job

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

제거된 기능

  • 이전 콜백이 throw :abort로 중단된 경우 after_enqueue/after_perform 콜백이 중단되지 않는 사용 중단된 동작 제거.

  • :return_false_on_aborted_enqueue 옵션 제거.

사용 중단된 기능

  • Rails.config.active_job.skip_after_callbacks_if_terminated 사용 중단.

주목할 만한 변경 사항

Action Text

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

제거된 기능

사용 중단된 기능

주목할 만한 변경 사항

Action Mailbox

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

제거된 기능

  • Rails.application.credentials.action_mailbox.mailgun_api_key 제거.

  • 환경 변수 MAILGUN_INGRESS_API_KEY 제거.

사용 중단된 기능

주목할 만한 변경 사항

Ruby on Rails 가이드

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

주목할 만한 변경 사항

크레딧

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

[action계속해서 텍스트를 한국어로 번역하겠습니다: