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

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

Rails 7.0의 주요 기능:

1 Rails 7.0으로 업그레이드하기

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

2 주요 기능

3 Railties

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

3.1 제거 사항

  • dbconsole에서 사용되는 config를 제거했습니다.

3.2 폐기 예정 사항

3.3 주요 변경 사항

  • Sprockets는 이제 선택적 종속성입니다.

    rails 젬은 더 이상 sprockets-rails에 의존하지 않습니다. 여전히 Sprockets를 사용해야 하는 경우, Gemfile에 sprockets-rails를 추가해야 합니다.

    gem "sprockets-rails"
    

4 Action Cable

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

4.1 제거 사항

4.2 폐기 예정 사항

4.3 주요 변경 사항

5 Action Pack

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

5.1 제거 사항

  • ActionDispatch::Response.return_only_media_type_on_content_type를 제거했습니다.

  • Rails.config.action_dispatch.hosts_response_app을 제거했습니다.

  • ActionDispatch::SystemTestCase#host!를 제거했습니다.

  • fixture_path와 관련하여 fixture_file_upload에 상대 경로를 전달하는 것을 폐기했습니다.

5.2 폐기 예정 사항

5.3 주요 변경 사항

6 Action View

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

6.1 제거 사항

  • Rails.config.action_view.raise_on_missing_translations를 제거했습니다.

6.2 폐기 예정 사항

6.3 주요 변경 사항

  • button_to는 URL을 구성하는 데 Active Record 객체가 사용되는 경우 [method]에서 HTTP 동사를 추론합니다.

    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" />
    

7 Action Mailer

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

7.1 제거 사항

  • ActionMailer::DeliveryJobActionMailer::Parameterized::DeliveryJobActionMailer::MailDeliveryJob로 대체했습니다.

7.2 폐기 예정 사항

7.3 주요 변경 사항

8 Active Record

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

8.1 제거 사항

  • 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 객체를 인용하는 것을 폐기했습니다.

  • 데이터베이스 값으로 형변환하는 것을 폐기했습니다.

  • 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을 폐기했습니다.

8.2 폐기 예정 사항

  • Tasks::DatabaseTasks.schema_file_type을 폐기했습니다.

8.3 주요 변경 사항

  • 블록이 예상보다 일찍 반환될 때 트랜잭션을 롤백합니다.

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

    문제는 트랜잭션 블록 내에서 트랜잭션을 유발하는 시간 초과도 미완료된 트랜잭션을 커밋하게 만들었기 때문에, 이러한 실수를 피하기 위해 트랜잭션 블록이 롤백됩니다.

  • 동일한 열에 대한 조건을 병합할 때 이제 두 조건을 모두 유지하지 않고 후행 조건으로 일관되게 대체합니다.

    # 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에서 Rails 7.0의 동작으로 마이그레이션하기 위한 rewhere
    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]
    

    액티브 스토리지

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

8.4 제거 사항

8.5 폐기 예정 사항

8.6 주요 변경 사항

9 액티브 모델

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

9.1 제거 사항

  • 해시로 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로드하는 지원을 제거하십시오.

9.2 폐기 예정 사항

9.3 주요 변경 사항

10 액티브 서포트

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

10.1 제거 사항

  • 폐기 예정인 config.active_support.use_sha1_digests를 제거하십시오.

  • 폐기 예정인 URI.parser를 제거하십시오.

  • 날짜 시간 범위에 값이 포함되어 있는지 확인하기 위해 Range#include?을 사용하는 지원이 폐기 예정되었습니다.

  • 폐기 예정인 ActiveSupport::Multibyte::Unicode.default_normalization_form을 제거하십시오.

10.2 폐기 예정 사항

  • Array, Range, Date, DateTime, Time, BigDecimal, Float, Integer에서 #to_s에 형식을 전달하는 것을 #to_fs를 선호하는 것으로 폐기 예정입니다.

    이 폐기 예정은 Rails 애플리케이션이 일부 유형의 객체의 보간을 더 빠르게 만드는 Ruby 3.1 최적화를 활용할 수 있도록하기 위한 것입니다.

    새로운 애플리케이션에서는 해당 클래스에 대해 #to_s 메서드가 재정의되지 않습니다. 기존 애플리케이션에서는 config.active_support.disable_to_s_conversion을 사용할 수 있습니다.

10.3 주요 변경 사항

11 액티브 잡

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

11.1 제거 사항

  • 이전 콜백이 throw :abort로 중단되었을 때 after_enqueue/after_perform 콜백을 중단하지 않았던 폐기 예정 동작을 제거하십시오.

  • 폐기 예정인 :return_false_on_aborted_enqueue 옵션을 제거하십시오.

11.2 폐기 예정 사항

  • Rails.config.active_job.skip_after_callbacks_if_terminated을 폐기 예정입니다.

11.3 주요 변경 사항

12 액션 텍스트

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

12.1 제거 사항

12.2 폐기 예정 사항

12.3 주요 변경 사항

13 액션 메일박스

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

13.1 제거 사항

  • 폐기 예정인 Rails.application.credentials.action_mailbox.mailgun_api_key를 제거하십시오.

  • 폐기 예정인 환경 변수 MAILGUN_INGRESS_API_KEY를 제거하십시오.

13.2 폐기 예정 사항

13.3 주요 변경 사항

14 Ruby on Rails 가이드

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

14.1 주요 변경 사항

15 크레딧

Rails에 많은 시간을 투자한 많은 사람들에게 감사드립니다. Rails를 안정적이고 견고한 프레임워크로 만들어준 모든 사람들에게 경의를 표합니다.

피드백

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

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

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

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

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