1 Rails 6.0으로 업그레이드
기존 애플리케이션을 업그레이드하는 경우, 시작하기 전에 충분한 테스트 커버리지를 확보하는 것이 좋습니다. 아직 하지 않았다면 먼저 Rails 5.2로 업그레이드하고, Rails 6.0으로 업데이트를 시도하기 전에 애플리케이션이 예상대로 동작하는지 확인해야 합니다. 업그레이드 시 주의해야 할 사항 목록은 Ruby on Rails 업그레이드 가이드에서 확인할 수 있습니다.
2 주요 기능
2.1 Action Mailbox
Action Mailbox를 사용하면 수신되는 이메일을 controller와 유사한 mailbox로 라우팅할 수 있습니다. Action Mailbox에 대해 더 자세히 알아보려면 Action Mailbox 기초 가이드를 참고하세요.
2.2 Action Text
Action Text는 Rails에 리치 텍스트 콘텐츠와 편집 기능을 제공합니다. 서식, 링크, 인용구, 목록, 이미지 및 갤러리 삽입 등 모든 것을 처리하는 Trix editor를 포함합니다. Trix editor로 생성된 리치 텍스트 콘텐츠는 애플리케이션의 모든 기존 Active Record 모델과 연결될 수 있는 자체 RichText 모델에 저장됩니다. 삽입된 이미지(또는 기타 첨부파일)는 Active Storage를 사용하여 자동으로 저장되며 포함된 RichText 모델과 연결됩니다.
Action Text에 대해 더 자세히 알아보려면 Action Text 개요 가이드를 참조하세요.
2.3 Parallel Testing
Parallel Testing을 사용하면 테스트 스위트를 병렬로 실행할 수 있습니다. 프로세스 포크가 기본 방식이지만, threading도 지원됩니다. 테스트를 병렬로 실행하면 전체 테스트 스위트를 실행하는 데 걸리는 시간을 줄일 수 있습니다.
2.4 Action Cable Testing
Action Cable testing 도구를 사용하면 connection, channel, broadcast 등 모든 수준에서 Action Cable 기능을 테스트할 수 있습니다.
3 Railties
자세한 변경 사항은 Changelog를 참조하세요.
3.1 제거된 기능
plugins templates 내의 더 이상 사용되지 않는
after_bundle
helper를 제거했습니다. (Commit)application 클래스를
run
의 인자로 사용하는config.ru
에 대한 더 이상 사용되지 않는 지원을 제거했습니다. (Commit)rails 명령어에서 더 이상 사용되지 않는
environment
인자를 제거했습니다. (Commit)generators와 templates에서 더 이상 사용되지 않는
capify!
메소드를 제거했습니다. (Commit)더 이상 사용되지 않는
config.secret_token
을 제거했습니다. (Commit)
3.2 지원 중단 예정
rails server
에 Rack server 이름을 일반 인자로 전달하는 것이 지원 중단될 예정입니다. (Pull Request)서버 IP를 지정하기 위해
HOST
환경 변수를 사용하는 것이 지원 중단될 예정입니다. (Pull Request)config_for
가 반환하는 hash를 symbol이 아닌 키로 접근하는 것이 지원 중단될 예정입니다. (Pull Request)
3.3 주요 변경사항
rails server
명령어에서 server를 지정하기 위한 명시적 옵션--using
또는-u
를 추가했습니다. (Pull Request)rails routes
출력을 확장된 형식으로 볼 수 있는 기능을 추가했습니다. (Pull Request)inline Active Job adapter를 사용하여 seed 데이터베이스 태스크를 실행합니다. (Pull Request)
애플리케이션의 데이터베이스를 변경하기 위한
rails db:system:change
명령어를 추가했습니다. (Pull Request)Action Cable channels만 테스트하기 위한
rails test:channels
명령어를 추가했습니다. (Pull Request)DNS rebinding 공격에 대한 보호를 도입했습니다. (Pull Request)
generator 명령어 실행 중 실패 시 중단할 수 있는 기능을 추가했습니다. (Pull Request)
Rails 6에서 Webpacker를 기본 JavaScript 컴파일러로 지정했습니다. (Pull Request)
rails db:migrate:status
명령어에 다중 데이터베이스 지원을 추가했습니다. (Pull Request)generator에서 여러 데이터베이스의 서로 다른 migration 경로를 사용할 수 있는 기능을 추가했습니다. (Pull Request)
다중 환경 credentials 지원을 추가했습니다. (Pull Request)
test 환경에서
null_store
를 기본 cache store로 지정했습니다. (Pull Request)
4 Action Cable
자세한 변경사항은 Changelog를 참조하세요.
4.1 삭제 항목
ActionCable.startDebugging()
과ActionCable.stopDebugging()
을ActionCable.logger.enabled
로 대체되었습니다. (Pull Request)
4.2 폐기 예정
- Rails 6.0의 Action Cable에는 폐기 예정인 기능이 없습니다.
4.3 주요 변경 사항
cable.yml
에서 PostgreSQL subscription adapter를 위한channel_prefix
옵션 지원을 추가했습니다. (Pull Request)ActionCable::Server::Base
에 사용자 정의 설정을 전달할 수 있게 되었습니다. (Pull Request):action_cable_connection
과:action_cable_channel
load hook을 추가했습니다. (Pull Request)Channel::Base#broadcast_to
와Channel::Base.broadcasting_for
를 추가했습니다. (Pull Request)ActionCable::Connection
에서reject_unauthorized_connection
을 호출할 때 연결을 종료하도록 했습니다. (Pull Request)Action Cable JavaScript 패키지를 CoffeeScript에서 ES2015로 변환하고 npm 배포판에 소스 코드를 공개했습니다. (Pull Request)
WebSocket adapter와 logger adapter의 설정을
ActionCable
의 속성에서ActionCable.adapters
로 이동했습니다. (Pull Request)Action Cable의 Redis 연결을 구분하기 위해 Redis adapter에
id
옵션을 추가했습니다. (Pull Request)
5 Action Pack
자세한 변경 사항은 Changelog를 참조하세요.
5.1 제거된 기능
더 이상 사용되지 않는
fragment_cache_key
헬퍼를 제거하고combined_fragment_cache_key
를 사용하도록 변경되었습니다. (Commit)ActionDispatch::TestResponse
에서 더 이상 사용되지 않는 다음 메서드들이 제거되었습니다:#success?
는#successful?
로,#missing?
는#not_found?
로,#error?
는#server_error?
로 대체되었습니다. (Commit)
5.2 Deprecations
ActiveSupport::ParameterFilter
을 위해ActionDispatch::Http::ParameterFilter
가 Deprecate 되었습니다. (Pull Request)config.force_ssl
을 위해 컨트롤러 레벨의force_ssl
이 Deprecate 되었습니다. (Pull Request)
5.3 주목할 만한 변경사항
ActionDispatch::Response#content_type
이 Content-Type 헤더를 그대로 반환하도록 변경되었습니다. (Pull Request)resource 파라미터에 콜론이 포함된 경우
ArgumentError
를 발생시킵니다. (Pull Request)특정 브라우저 기능을 정의하기 위해 블록과 함께
ActionDispatch::SystemTestCase.driven_by
를 호출할 수 있습니다. (Pull Request)DNS 리바인딩 공격을 방어하는
ActionDispatch::HostAuthorization
미들웨어가 추가되었습니다. (Pull Request)ActionController::TestCase
에서parsed_body
사용이 가능해졌습니다. (Pull Request)동일한 컨텍스트에서
as:
네이밍 지정 없이 여러 root 라우트가 존재할 경우ArgumentError
를 발생시킵니다. (Pull Request)파라미터 파싱 오류를 처리하기 위한
#rescue_from
사용이 가능해졌습니다. (Pull Request)파라미터를 반복하기 위한
ActionController::Parameters#each_value
가 추가되었습니다. (Pull Request)send_data
와send_file
에서 Content-Disposition 파일명을 인코딩합니다. (Pull Request)ActionController::Parameters#each_key
가 노출되었습니다. (Pull Request)서명/암호화된 쿠키 간에 값이 복사되는 것을 방지하기 위해 쿠키 내부에 용도와 만료 메타데이터를 추가했습니다. (Pull Request)
충돌하는
respond_to
호출에 대해ActionController::RespondToMismatchError
를 발생시킵니다. (Pull Request)요청 포맷에 대한 템플릿이 누락된 경우를 위한 명시적인 오류 페이지가 추가되었습니다. (Pull Request)
DebugExceptions에 연결하여 렌더링 전에 예외를 처리하는 방법인
ActionDispatch::DebugExceptions.register_interceptor
가 도입되었습니다. (Pull Request)요청당 하나의 Content-Security-Policy nonce 헤더 값만 출력합니다. (Pull Request)
컨트롤러에서 명시적으로 포함할 수 있는 Rails 기본 헤더 설정을 위한 모듈을 추가합니다. (Pull Request)
ActionDispatch::Request::Session
에#dig
를 추가합니다. (Pull Request)
6 Action View
자세한 변경사항은 Changelog를 참조하세요.
6.1 제거
지원 중단된
image_alt
helper를 제거했습니다. (Commit)기능이 이미
record_tag_helper
gem으로 이동된 빈RecordTagHelper
모듈을 제거했습니다. (Commit)
6.2 Deprecations
ActionView::Template.finalize_compiled_template_methods
를 대체 없이 deprecate합니다. (Pull Request)config.action_view.finalize_compiled_template_methods
를 대체 없이 deprecate합니다. (Pull Request)options_from_collection_for_select
view helper에서 private 모델 메서드를 호출하는 것을 deprecate합니다. (Pull Request)
6.3 주목할만한 변경사항
개발 모드의 속도를 높이기 위해 파일 변경 시에만 Action View 캐시를 초기화합니다. (Pull Request)
모든 Rails npm 패키지를
@rails
스코프로 이동했습니다. (Pull Request)등록된 MIME 타입의 포맷만 허용합니다. (Pull Request, Pull Request)
템플릿과 부분 렌더링 서버 출력에 할당을 추가했습니다. (Pull Request)
date_select
태그에year_format
옵션을 추가하여 연도 이름을 커스터마이징할 수 있게 되었습니다. (Pull Request)Content Security Policy를 위한 자동 nonce 생성을 지원하기 위해
javascript_include_tag
헬퍼에nonce: true
옵션을 추가했습니다. (Pull Request)ActionView::Template
finalizer를 비활성화하거나 활성화하기 위한action_view.finalize_compiled_template_methods
설정을 추가했습니다. (Pull Request)rails_ujs
에서 JavaScriptconfirm
호출을 재정의 가능한 별도의 메서드로 추출했습니다. (Pull Request)UTF-8 인코딩 적용을 처리하기 위한
action_controller.default_enforce_utf8
설정 옵션을 추가했습니다. 기본값은false
입니다. (Pull Request)submit 태그에 로케일 키를 위한 I18n 키 스타일 지원을 추가했습니다. (Pull Request)
7 Action Mailer
자세한 변경사항은 Changelog를 참조하세요.
7.1 제거
- The
ActionDispatch::Response.default_charset
class attribute has been removed. You can now configure throughconfig.action_dispatch.default_charset
.
Rafael Mendonça França
- The
config.action_dispatch.return_only_media_type_on_content_type
option has been removed. This configuration value defaulted to false and was planned to be changed to true in Rails 7.0.
Rafael Mendonça França
- Removed deprecated
config.action_mailer.deliver_later_queue_name
, useconfig.action_mailer.deliver_later_queue
instead.
Rafael Mendonça França
- Removed deprecated
config.action_mailbox.queues.incineration
in favor ofconfig.action_mailbox.incinerate_after
.
Rafael Mendonça França
- Removed deprecated
config.action_mailbox.queues.routing
in favor ofconfig.action_mailbox.routing_after
.
Rafael Mendonça França
- Removed deprecated
ActionMailer::Base.receive
in favor of Action Mailbox.
Rafael Mendonça França
- Removed deprecated
config.action_view.raise_on_missing_translations
in favor ofconfig.i18n.raise_on_missing_translations
.
Rafael Mendonça França
- Remove deprecated support to passing a path to
fixture_file_upload
relative tofixture_path
.
Rafael Mendonça França
7.2 지원 중단 예정
Action Mailbox를 사용하는 것이 권장되어
ActionMailer::Base.receive
는 지원 중단될 예정입니다. (Commit)DeliveryJob
과Parameterized::DeliveryJob
대신MailDeliveryJob
을 사용하는 것이 권장되어 지원 중단될 예정입니다. (Pull Request)
7.3 주목할만한 변경사항
일반 메일과 매개변수화된 메일을 전달하기 위한
MailDeliveryJob
추가. (Pull Request)Action Mailer 테스트 assertion들이 커스텀 이메일 전송 job들과 함께 작동하도록 허용. (Pull Request)
액션 이름만 사용하는 대신 블록이 있는 멀티파트 이메일에 대한 템플릿 이름 지정 허용. (Pull Request)
deliver.action_mailer
알림의 payload에perform_deliveries
추가. (Pull Request)perform_deliveries
가 false일 때 이메일 전송이 건너뛰어졌음을 표시하도록 로깅 메시지 개선. (Pull Request)블록 없이
assert_enqueued_email_with
호출 허용. (Pull Request)assert_emails
블록에서 대기 중인 메일 전송 job 실행. (Pull Request)ActionMailer::Base
가 observer와 interceptor를 등록 해제할 수 있도록 허용. (Pull Request)
8 Active Record
자세한 변경사항은 Changelog를 참조하세요.
8.1 제거된 기능
transaction 객체에서 deprecated된
#set_state
제거. (Commit)database adapter에서 deprecated된
#supports_statement_cache?
제거. (Commit)database adapter에서 deprecated된
#insert_fixtures
제거. (Commit)deprecated된
ActiveRecord::ConnectionAdapters::SQLite3Adapter#valid_alter_table_type?
제거. (Commit)block이 전달될 때
sum
에 column 이름을 전달하는 기능 지원 제거. (Commit)block이 전달될 때
count
에 column 이름을 전달하는 기능 지원 제거. (Commit)relation에서 누락된 메서드를 Arel로 위임하는 기능 지원 제거. (Commit)
relation에서 누락된 메서드를 클래스의 private 메서드로 위임하는 기능 지원 제거. (Commit)
#cache_key
에 timestamp 이름을 지정하는 기능 지원 제거. (Commit)deprecated된
ActiveRecord::Migrator.migrations_path=
제거. (Commit)deprecated된
expand_hash_conditions_for_aggregates
제거. (Commit)
8.2 Deprecations
uniqueness validator에서 대소문자 구분 collation 비교가 일치하지 않는 경우를 deprecated 처리합니다. (Commit)
receiver scope가 유출된 경우 클래스 레벨 쿼리 메소드 사용을 deprecated 처리합니다. (Pull Request)
config.active_record.sqlite3.represent_boolean_as_integer
를 deprecated 처리합니다. (Commit)connection.assume_migrated_upto_version
에migrations_paths
를 전달하는 것을 deprecated 처리합니다. (Commit)ActiveRecord::Result#to_hash
를ActiveRecord::Result#to_a
사용을 권장하며 deprecated 처리합니다. (Commit)DatabaseLimits
의 다음 메소드들을 deprecated 처리합니다:column_name_length
,table_name_length
,columns_per_table
,indexes_per_table
,columns_per_multicolumn_index
,sql_query_length
,joins_per_query
. (Commit)update_attributes
/!
를update
/!
사용을 권장하며 deprecated 처리합니다. (Commit)
8.3 주목할만한 변경사항
sqlite3
gem의 최소 버전을 1.4로 올림. (Pull Request)데이터베이스가 존재하지 않을 경우 생성하고 migration을 실행하는
rails db:prepare
추가. (Pull Request)after_commit :hook, on: [ :create, :update ]
의 단축어로after_save_commit
callback 추가. (Pull Request)relation에서 관련 레코드를 추출하는
ActiveRecord::Relation#extract_associated
추가. (Pull Request)ActiveRecord::Relation 쿼리에 SQL 주석을 추가하는
ActiveRecord::Relation#annotate
추가. (Pull Request)데이터베이스에 Optimizer Hints 설정 지원 추가. (Pull Request)
대량 삽입을 위한
insert_all
/insert_all!
/upsert_all
메서드 추가. (Pull Request)현재 환경의 각 데이터베이스 테이블을 truncate하고 seed를 로드하는
rails db:seed:replant
추가. (Pull Request)unscope(:select).select(fields)
의 단축어인reselect
메서드 추가. (Pull Request)모든 enum 값에 대한 negative scope 추가. (Pull Request)
조건부 삭제를 위한
#destroy_by
와#delete_by
추가. (Pull Request)데이터베이스 연결을 자동으로 전환하는 기능 추가. (Pull Request)
블록 동안 데이터베이스 쓰기를 방지하는 기능 추가. (Pull Request)
다중 데이터베이스를 지원하기 위한 연결 전환 API 추가. (Pull Request)
migration에서 precision이 있는 timestamps를 기본값으로 설정. (Pull Request)
MySQL에서 text와 blob 크기를 변경하기 위한
:size
옵션 지원. (Pull Request)dependent: :nullify
전략에서 polymorphic associations를 위한 foreign key와 foreign type 컬럼을 모두 NULL로 설정합니다. (Pull Request)ActiveRecord::Relation#exists?
의 인자로 허용된ActionController::Parameters
인스턴스를 전달할 수 있도록 합니다. (Pull Request)Ruby 2.6에서 도입된 endless ranges를
#where
에서 지원합니다. (Pull Request)MySQL에서 테이블 생성 시
ROW_FORMAT=DYNAMIC
을 기본 옵션으로 설정합니다. (Pull Request)ActiveRecord.enum
에 의해 생성된 scopes를 비활성화할 수 있는 기능을 추가합니다. (Pull Request)컬럼에 대한 암시적 정렬을 구성 가능하도록 만듭니다. (Pull Request)
최소 PostgreSQL 버전을 9.3으로 올리고, 9.1과 9.2 지원을 중단합니다. (Pull Request)
enum의 값들을 frozen으로 만들어, 수정 시도 시 에러를 발생시킵니다. (Pull Request)
ActiveRecord::StatementInvalid
에러의 SQL을 독립된 에러 속성으로 만들고, SQL binds를 별도의 에러 속성으로 포함시킵니다. (Pull Request)create_table
에:if_not_exists
옵션을 추가합니다. (Pull Request)rails db:schema:cache:dump
와rails db:schema:cache:clear
에 다중 데이터베이스 지원을 추가합니다. (Pull Request)ActiveRecord::Base.connected_to
의 데이터베이스 해시에 hash와 url 설정 지원을 추가합니다. (Pull Request)MySQL에 대한 default expressions와 expression indexes 지원을 추가합니다. (Pull Request)
migration 헬퍼
change_table
에index
옵션을 추가합니다. (Pull Request)migration의
transaction
되돌리기를 수정합니다. 이전에는 되돌려진 migration의transaction
내부 명령어들이 반전되지 않고 실행되었습니다. 이 변경사항이 이를 수정합니다. (Pull Request)ActiveRecord::Base.configurations=
가 심볼화된 해시로 설정되는 것을 허용합니다. (Pull Request)레코드가 실제로 저장될 때만 counter cache를 업데이트하도록 수정했습니다. (Pull Request)
SQLite adapter에 expression indexes 지원을 추가했습니다. (Pull Request)
하위 클래스가 연관된 레코드에 대한 autosave 콜백을 재정의할 수 있도록 허용합니다. (Pull Request)
최소 MySQL 버전을 5.5.8로 올렸습니다. (Pull Request)
MySQL에서 기본 문자셋으로 utf8mb4를 사용합니다. (Pull Request)
#inspect
에서 민감한 데이터를 필터링하는 기능을 추가했습니다. (Pull Request, Pull Request)ActiveRecord::Base.configurations
가 해시 대신 객체를 반환하도록 변경했습니다. (Pull Request)advisory locks를 비활성화하는 데이터베이스 설정을 추가했습니다. (Pull Request)
SQLite3 adapter의
alter_table
메소드를 foreign keys를 복원하도록 업데이트했습니다. (Pull Request)remove_foreign_key
의:to_table
옵션을 역전 가능하도록 허용합니다. (Pull Request)지정된 precision을 가진 MySQL time 타입의 기본값을 수정했습니다. (Pull Request)
touch
옵션이Persistence#touch
메소드와 일관되게 동작하도록 수정했습니다. (Pull Request)Migrations에서 중복된 컬럼 정의에 대해 예외를 발생시킵니다. (Pull Request)
최소 SQLite 버전을 3.8로 올렸습니다. (Pull Request)
부모 레코드가 중복된 자식 레코드와 함께 저장되지 않도록 수정했습니다. (Pull Request)
Associations::CollectionAssociation#size
와Associations::CollectionAssociation#empty?
가
로드된 association ID가 있으면 사용합니다. (Pull Request)
모든 레코드가 요청된 association을 가지고 있지 않을 때 polymorphic association의 association을 preload하는 기능을 추가합니다. (Commit)
ActiveRecord::Relation
에touch_all
메서드를 추가합니다. (Pull Request)ActiveRecord::Base.base_class?
predicate를 추가합니다. (Pull Request)ActiveRecord::Store.store_accessor
에 커스텀 prefix/suffix 옵션을 추가합니다. (Pull Request)데이터베이스의 unique constraint를 활용하여
ActiveRecord::Base.find_or_create_by
/!
의 SELECT/INSERT 경쟁 상태를 다루기 위한ActiveRecord::Base.create_or_find_by
/!
를 추가합니다. (Pull Request)단일 값 pluck의 단축형으로
Relation#pick
을 추가합니다. (Pull Request)
9 Active Storage
자세한 변경 사항은 Changelog를 참조하세요.
9.1 제거
9.2 Deprecations
config.active_storage.queue
는config.active_storage.queues.analysis
와config.active_storage.queues.purge
를 대신 사용하도록 deprecate 되었습니다. (Pull Request)ActiveStorage::Downloading
은ActiveStorage::Blob#open
을 대신 사용하도록 deprecate 되었습니다. (Commit)이미지 variant를 생성하기 위해
mini_magick
을 직접 사용하는 것은image_processing
을 대신 사용하도록 deprecate 되었습니다. (Commit)Active Storage의 ImageProcessing transformer에서
:combine_options
는 대체 없이 deprecate 되었습니다. (Commit)
9.3 주목할 만한 변경사항
BMP 이미지 variant 생성 지원 추가. (Pull Request)
TIFF 이미지 variant 생성 지원 추가. (Pull Request)
Progressive JPEG 이미지 variant 생성 지원 추가. (Pull Request)
Active Storage 생성 라우트를 설정하기 위한
ActiveStorage.routes_prefix
추가. (Pull Request)요청된 파일이 disk service에 없을 때
ActiveStorage::DiskController#show
에서 404 Not Found 응답 생성. (Pull Request)ActiveStorage::Blob#download
와ActiveStorage::Blob#open
에서 요청된 파일이 없을 때ActiveStorage::FileNotFoundError
발생. (Pull Request)Active Storage 예외들이 상속받는 일반적인
ActiveStorage::Error
클래스 추가. (Commit)레코드에 할당된 업로드된 파일들을 즉시가 아닌 레코드가 저장될 때 storage에 유지. (Pull Request)
attachment 컬렉션에 할당할 때(예:
@user.update!(images: [ … ])
) 기존 파일들에 추가하는 대신 선택적으로 교체. 이 동작을 제어하려면config.active_storage.replace_on_assign_to_many
를 사용. (Pull Request, Pull Request)기존 Active Record reflection 메커니즘을 사용하여 정의된 attachment들을 reflection할 수 있는 기능 추가. (Pull Request)
blob을 디스크의 tempfile로 다운로드하고 tempfile을 yield하는
ActiveStorage::Blob#open
추가. (Commit)Google Cloud Storage에서 스트리밍 다운로드 지원.
google-cloud-storage
gem 버전 1.11 이상 필요. (Pull Request)Active Storage variant를 위해
image_processing
gem 사용. 이는 직접적인mini_magick
사용을 대체. (Pull Request)
10 Active Model
자세한 변경 사항은 Changelog를 참고하세요.
10.1 제거사항
- Removed support for the
delete_all
method with conditions. You'll need to usewhere
withdelete_all
instead. - Removed support for the
:conditions
,:include
options in association and query methods. - Removed support for the
find(:first)
andfind(:all)
syntax. UseModel.first
andModel.all
instead. - Removed support for custom timestamp names. You'll need to configure them using config options rather than setting them on the model.
- Removed support for using
has_and_belongs_to_many
associations without a join model. Always use a standard model as a join model. - Removed support for calling
ActiveRecord::Base#set_timestamps_for_create
andActiveRecord::Base#set_timestamps_for_update
directly. - Removed
queue_adapter
fromrails/all
. You'll need to explicitly requireactive_job/railtie
if you want to use Active Job with Rails. - Removed access to the
ThreadCurrent.active_queries
counter which was just used for internal Active Record bookkeeping.
10.2 지원 중단(Deprecation)
AbstractController::Helpers::MissingHelperError
는 Ruby on Rails 6.1에서 지원이 중단되었으며 7.0에서 제거되었습니다.LoadError
나NameError
를 대신 사용하세요. (Pull Request)경로 helper에 대한
compact_blank
의 기본값이 false로 변경되었습니다. 이는 helper가 빈 key/value pair를 유지하도록 합니다. (Pull Request)Named routes에 대한
*args
지원이 지원 중단되었습니다. 대신 키워드 인자를 사용하세요. (Pull Request)ActionDispatch::SystemTesting::Server::DEFAULT_PORT
상수가 지원 중단되어 7.1에서 제거될 예정입니다. (Pull Request)config.action_dispatch.return_only_request_media_type_on_content_type
configuration이 지원 중단되어 7.1에서 제거될 예정입니다. (Pull Request)URL helper에서
only_path
옵션이 지원 중단되었으며 Rails 7.1에서 제거될 예정입니다. (Pull Request)
10.3 주목할만한 변경사항
ActiveModel::Errors#full_message
의 포맷을 커스터마이징할 수 있는 설정 옵션을 추가했습니다. (Pull Request)has_secure_password
의 속성 이름을 설정할 수 있도록 지원을 추가했습니다. (Pull Request)ActiveModel::Errors
에#slice!
메소드를 추가했습니다. (Pull Request)특정 에러의 존재 여부를 확인하기 위한
ActiveModel::Errors#of_kind?
를 추가했습니다. (Pull Request)타임스탬프에 대한
ActiveModel::Serializers::JSON#as_json
메소드를 수정했습니다. (Pull Request)Active Record를 제외하고 타입 변환 이전의 값을 계속 사용하도록 숫자 유효성 검사기를 수정했습니다. (Pull Request)
유효성 검사의 양쪽 끝에서
BigDecimal
로 캐스팅하여BigDecimal
과Float
의 숫자 동등성 유효성 검사를 수정했습니다. (Pull Request)다중 파라미터 시간 해시를 캐스팅할 때 연도 값을 수정했습니다. (Pull Request)
boolean 속성에서 falsy한 boolean 심볼을 false로 타입 캐스팅하도록 수정했습니다. (Pull Request)
ActiveModel::Type::Date
에서value_from_multiparameter_assignment
의 파라미터를 변환할 때 올바른 날짜를 반환하도록 수정했습니다. (Pull Request)에러 번역을 가져올 때
:errors
네임스페이스로 폴백하기 전에 상위 로케일로 폴백하도록 수정했습니다. (Pull Request)
11 Active Support
자세한 변경사항은 Changelog를 참조하세요.
11.1 Removals
Inflections
에서 deprecated된#acronym_regex
메서드를 제거했습니다. (Commit)deprecated된
Module#reachable?
메서드를 제거했습니다. (Commit)대체 없이
Kernel#`
를 제거했습니다. (Pull Request)
11.2 Deprecations
String#first
와String#last
에서 음수 정수 인수 사용을 deprecated 처리합니다. (Pull Request)String#downcase/upcase/swapcase
를 선호하여ActiveSupport::Multibyte::Unicode#downcase/upcase/swapcase
를 deprecated 처리합니다. (Pull Request)String#unicode_normalize
를 선호하여ActiveSupport::Multibyte::Unicode#normalize
와ActiveSupport::Multibyte::Chars#normalize
를 deprecated 처리합니다. (Pull Request)String#is_utf8?
를 선호하여ActiveSupport::Multibyte::Chars.consumes?
를 deprecated 처리합니다. (Pull Request)각각
array.flatten.pack("U*")
와string.scan(/\X/).map(&:codepoints)
를 선호하여ActiveSupport::Multibyte::Unicode#pack_graphemes(array)
와ActiveSupport::Multibyte::Unicode#unpack_graphemes(string)
를 deprecated 처리합니다. (Pull Request)
11.3 주목할 만한 변경사항
병렬 테스팅을 위한 지원 추가. (Pull Request)
String#strip_heredoc
가 문자열의 frozen 상태를 보존하도록 수정. (Pull Request)멀티바이트 문자나 그래핌 클러스터를 깨트리지 않고 문자열을 최대 바이트 크기로 자르는
String#truncate_bytes
추가. (Pull Request)private 메소드에 위임할 수 있도록
delegate
메소드에private
옵션 추가. 이 옵션은true/false
값을 받습니다. (Pull Request)ActiveSupport::Inflector#ordinal
과ActiveSupport::Inflector#ordinalize
에 I18n을 통한 번역 지원 추가. (Pull Request)Date
,DateTime
,Time
,TimeWithZone
에before?
와after?
메소드 추가. (Pull Request)유니코드와 이스케이프된 문자가 혼합된 입력에서
URI.unescape
가 실패하는 버그 수정. (Pull Request)압축이 활성화되었을 때
ActiveSupport::Cache
가 저장 크기를 과도하게 증가시키는 버그 수정. (Pull Request)Redis cache store:
delete_matched
가 더 이상 Redis 서버를 차단하지 않음. (Pull Request)ActiveSupport::TimeZone::MAPPING
에 정의된 타임존의 tzinfo 데이터가 누락되었을 때ActiveSupport::TimeZone.all
이 실패하는 버그 수정. (Pull Request)전달된 블록이나 기본 인자의 값으로 열거형에서 해시를 생성할 수 있는
Enumerable#index_with
추가. (Pull Request)Range#===
와Range#cover?
메소드가Range
인자와 함께 작동하도록 허용. (Pull Request)RedisCacheStore의
increment/decrement
작업에서 키 만료 지원. (Pull Request)로그 구독자 이벤트에 CPU 시간, 유휴 시간, 할당 기능 추가.
Active Support notification system에 event object 지원 추가. (Pull Request)
ActiveSupport::Cache#fetch
에 새로운 옵션skip_nil
을 도입하여nil
항목을 캐시하지 않는 기능 지원 추가. (Pull Request)block이 true 값을 반환하는 요소들을 제거하고 반환하는
Array#extract!
메서드 추가. (Pull Request)HTML-safe 문자열을 슬라이싱 후에도 HTML-safe로 유지. (Pull Request)
로깅을 통한 constant autoload 추적 지원 추가. (Commit)
travel_back
의 별칭으로unfreeze_time
정의. (Pull Request)ActiveSupport::TaggedLogging.new
가 인자로 받은 logger를 변경하는 대신 새로운 logger 인스턴스를 반환하도록 변경. (Pull Request)#delete_prefix
,#delete_suffix
,#unicode_normalize
메서드를 non HTML-safe 메서드로 처리. (Pull Request)ActiveSupport::HashWithIndifferentAccess
의#without
이 symbol 인자와 함께 실패하는 버그 수정. (Pull Request)Module#parent
,Module#parents
,Module#parent_name
을module_parent
,module_parents
,module_parent_name
으로 이름 변경. (Pull Request)ActiveSupport::ParameterFilter
추가. (Pull Request)float가 duration에 추가될 때 duration이 정수 초로 반올림되는 문제 수정. (Pull Request)
ActiveSupport::HashWithIndifferentAccess
에서#to_options
를#symbolize_keys
의 별칭으로 만들기. (Pull Request)동일한 block이 여러 번 포함되어도 더 이상 예외를 발생시키지 않음
Concern에 대한 것입니다.
ActiveSupport::CacheStore#fetch_multi
에 전달된 키의 순서를 유지합니다. (Pull Request)잘못된 케이스의 상수 참조에 대해
LoadError
를 발생시키지 않도록String#safe_constantize
를 수정했습니다. (Pull Request)Hash#deep_transform_values
와Hash#deep_transform_values!
를 추가했습니다. (Commit)ActiveSupport::HashWithIndifferentAccess#assoc
를 추가했습니다. (Pull Request)CurrentAttributes
에before_reset
콜백을 추가하고 대칭성을 위해resets
의 별칭으로after_reset
을 정의했습니다. (Pull Request)Regex 또는 다른 다중 패턴 구독자를 올바르게 처리하도록
ActiveSupport::Notifications.unsubscribe
를 수정했습니다. (Pull Request)Zeitwerk를 사용하는 새로운 autoloading 메커니즘을 추가했습니다. (Commit)
컬렉션을 편리하게 확장하기 위해
Array#including
과Enumerable#including
을 추가했습니다. (Commit)Array#without
과Enumerable#without
을Array#excluding
과Enumerable#excluding
으로 이름을 변경했습니다. 이전 메서드 이름은 별칭으로 유지됩니다. (Commit)transliterate
와parameterize
에locale
제공 지원을 추가했습니다. (Pull Request)1001-03-07 이전 날짜에 대해서도 작동하도록
Time#advance
를 수정했습니다. (Pull Request)블록을 전달하지 않아도 되도록
ActiveSupport::Notifications::Instrumenter#instrument
를 업데이트했습니다. (Pull Request)익명 서브클래스가 가비지 컬렉션될 수 있도록 descendants 트래커에서 weak references를 사용합니다. (Pull Request)
minitest-hooks를 허용하기 위해
with_info_handler
메서드로 테스트 메서드를 호출합니다.
플러그인이 작동하도록 합니다. (Commit)
-
ActiveSupport::SafeBuffer#*
에서html_safe?
상태를 유지합니다. (Pull Request)
12 Active Job
자세한 변경사항은 Changelog를 참조하세요.
12.1 제거사항
- Qu gem 지원이 제거되었습니다. (Pull Request)
12.2 Deprecation(지원 중단)
- 메소드가 private 액세서를 통해 정의된 경우, attribute writer에 private access를 설정하는 것은 더 이상 무시되지 않습니다. Rails 7.1에서는 오류가 발생합니다.
private
attr_writer :foo # 이는 foo=를 private로 만듭니다
Active Storage URL binding parameterization이 제거되었습니다.
rescue_from with Exception
핸들러가 제거되었습니다.Range query annotation이 제거되었습니다.
Rails.application.config.action_mailbox.queue_name
이 제거되었습니다.Rails.application.config.action_mailer.deliver_later_queue_name
이 제거되었습니다.Rails.application.config.active_storage.queue
가 제거되었습니다.구성 파일에서 engine의
self.loaded_config_version
을 정의하는 것이 제거되었습니다.respond_to
에서:json
제외를 사용하는 것이 제거되었습니다.Application의
self.loaded_config_version
을 정의하는 것이 제거되었습니다.ActiveStorage::Current#host
가 제거되었습니다.ActiveStorage::Current#host=
가 제거되었습니다.config.active_storage.resolve_model_to_route
가 제거되었습니다.config.active_storage.replace_on_assign_to_many
가 제거되었습니다.ActiveStorage::Attached::One#attachment
가 제거되었습니다.ActiveStorage::Attached::Many#attachments
가 제거되었습니다.ActiveStorage::Attachment#download
이 제거되었습니다.ActiveStorage::Blob#download
이 제거되었습니다.ActiveStorage::Blob#open
이 제거되었습니다.Rails 7.1에서는
config.active_support.use_rfc4122_namespaced_uuids
가 더 이상 선택 사항이 아닐 것이며, 모든 UUID namespace가 RFC 4122를 준수하게 될 것입니다. 이 변경사항에 대한 자세한 내용은 rails/rails#49477을 참조하세요.AbstractController::Helpers::MissingHelperError
가LoadError
가 아닌NameError
를 상속하도록 변경되었습니다.config.action_dispatch.return_only_request_media_type_on_content_type
가 제거되었습니다.
12.3 주요 변경사항
Active Job arguments를 위한 커스텀 serializer 지원을 추가했습니다. (Pull Request)
Active Job이 enqueue된 시간대에서 실행되도록 지원을 추가했습니다. (Pull Request)
retry_on
/discard_on
에 여러 exception을 전달할 수 있도록 했습니다. (Commit)블록 없이
assert_enqueued_with
와assert_enqueued_email_with
를 호출할 수 있도록 했습니다. (Pull Request)enqueue
와enqueue_at
의 notifications을after_enqueue
callback 대신around_enqueue
callback으로 감쌌습니다. (Pull Request)블록 없이
perform_enqueued_jobs
를 호출할 수 있도록 했습니다. (Pull Request)블록 없이
assert_performed_with
를 호출할 수 있도록 했습니다. (Pull Request)job assertions와 helpers에
:queue
옵션을 추가했습니다. (Pull Request)Active Job의 retry와 discard 주변에 hooks를 추가했습니다. (Pull Request)
job 수행 시 arguments의 부분집합을 테스트하는 방법을 추가했습니다. (Pull Request)
Active Job 테스트 helpers가 반환하는 jobs에 역직렬화된 arguments를 포함했습니다. (Pull Request)
Active Job assertion helpers가
only
키워드에 대해 Proc을 받을 수 있도록 했습니다. (Pull Request)assertion helpers의 job arguments에서 마이크로초와 나노초를 제거했습니다. (Pull Request)
13 Ruby on Rails 가이드
자세한 변경사항은 Changelog를 참조하세요.
13.1 주목할 만한 변경사항
Active Record로 다중 데이터베이스를 사용하는 가이드를 추가했습니다. (Pull Request)
상수 자동로딩 문제해결에 대한 섹션을 추가했습니다. (Commit)
Action Mailbox 기초 가이드를 추가했습니다. (Pull Request)
Action Text 개요 가이드를 추가했습니다. (Pull Request)
14 감사의 말
Rails를 안정적이고 견고한 프레임워크로 만들기 위해 많은 시간을 투자한 수많은 사람들은 Rails 기여자 전체 목록에서 확인할 수 있습니다. 이 모든 분들께 감사드립니다.