Ruby on Rails 6.0 릴리스 노트
Rails 6.0의 주요 기능:
- Action Mailbox
- Action Text
- 병렬 테스팅
- Action Cable 테스팅
이 릴리스 노트에서는 주요 변경 사항만 다룹니다. 다양한 버그 수정 및 변경 사항에 대해서는 변경 로그를 참조하거나 GitHub의 Rails 주 저장소에서 커밋 목록을 확인하세요.
Rails 6.0으로 업그레이드하기
기존 애플리케이션을 업그레이드하는 경우, 업그레이드 전에 충분한 테스트 커버리지를 확보하는 것이 좋습니다. 또한 Rails 5.2로 먼저 업그레이드하고 애플리케이션이 여전히 예상대로 작동하는지 확인한 후에 Rails 6.0으로 업데이트를 시도해야 합니다. Rails 6.0으로 업그레이드할 때 주의해야 할 사항은 Ruby on Rails 업그레이드 가이드에서 확인할 수 있습니다.
주요 기능
Action Mailbox
Action Mailbox를 사용하면 들어오는 이메일을 컨트롤러 유사 메일박스로 라우팅할 수 있습니다. Action Mailbox에 대해 자세히 알아보려면 Action Mailbox 기본 사항 가이드를 참조하세요.
Action Text
Action Text는 Rails에 리치 텍스트 콘텐츠와 편집 기능을 제공합니다. 이는 Trix 편집기를 포함하며, 서식, 링크, 인용, 목록, 임베드된 이미지 및 갤러리 등을 처리합니다. Trix 편집기에서 생성된 리치 텍스트 콘텐츠는 애플리케이션의 기존 Active Record 모델과 연결된 별도의 RichText 모델에 저장됩니다. 포함된 RichText 모델과 연결된 임베드된 이미지(또는 다른 첨부 파일)는 자동으로 Active Storage를 사용하여 저장됩니다.
Action Text에 대해 자세히 알아보려면 Action Text 개요 가이드를 참조하세요.
병렬 테스팅
병렬 테스팅을 통해 테스트 스위트를 병렬로 실행할 수 있습니다. 프로세스 포크가 기본 방법이지만 스레딩도 지원됩니다. 테스트를 병렬로 실행하면 전체 테스트 스위트 실행 시간이 단축됩니다.
Action Cable 테스팅
Action Cable 테스팅 도구를 사용하면 연결, 채널, 브로드캐스트 등 모든 수준에서 Action Cable 기능을 테스트할 수 있습니다.
Railties
자세한 변경 사항은 변경 로그를 참조하세요.
제거
플러그인 템플릿 내부의
after_bundle
헬퍼 제거. (Commit)애플리케이션 클래스를
run
인수로 사용하는config.ru
에 대한 지원 제거. (Commit)environment
인수를 rails 명령에서 제거. (Commit)생성기 및 템플릿에서
capify!
메서드 제거. (Commit)config.secret_token
제거. (Commit)
사용 중단
rails server
명령에 Rack 서버 이름을 일반 인수로 전달하는 것 사용 중단. (Pull Request)HOST
환경을 사용하여 서버 IP를 지정하는 것 사용 중단. (Pull Request)config_for
에서 반환된 해시의 비 기호 키 액세스 사용 중단. (Pull Request)
주요 변경 사항
rails server
명령에 명시적 옵션--using
또는-u
를 추가하여 서버 지정. (Pull Request)rails routes
의 출력을 확장된 형식으로 볼 수 있는 기능 추가. (Pull Request)인라인 Active Job 어댑터를 사용하여 seed 데이터베이스 작업 실행. (Pull Request)
애플리케이션의 데이터베이스를 변경할 수 있는
rails db:system:change
명령 추가. (Pull Request)Action Cable 채널만 테스트하는
rails test:channels
명령 추가. (Pull Request)DNS 리바인딩 공격에 대한 보호 기능 추가. (Pull Request)
생성기 명령 실행 중 실패 시 중단할 수 있는 기능 추가. (Pull Request)
Rails 6의 기본 JavaScript 컴파일러로 Webpacker 설정. (Pull Request)
rails db:migrate:status
명령에 다중 데이터베이스 지원 추가. (Pull Request)생성기에서 다중 데이터베이스의 다른 마이그레이션 경로 사용 기능 추가. (Pull Request)
다중 환경 자격 증명 지원 추가. (Pull Request)
테스트 환경에서
null_store
를 기본 캐시 저장소로 설정. (Pull Request)
Action Cable
자세한 변경 사항은 변경 로그를 참조하세요.
제거
-
ActionCable.startDebugging()
와ActionCable.stopDebugging()
를ActionCable.logger.enabled
로 대체. (Pull Request)
사용 중단
- Action Cable에 대한 사용 중단 사항 없음.
주요 변경 사항
cable.yml
의 PostgreSQL 구독 어댑터에channel_prefix
옵션 추가. (Pull Request)ActionCable::Server::Base
에 사용자 정의 구성 전달 기능 추가. (Pull Request):action_cable_connection
및:action_cable_channel
로드 후크 추가. (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 어댑터 및 로거 어댑터 구성을
ActionCable
속성에서ActionCable.adapters
로 이동. (Pull Request)Redis 어댑터에 Action Cable의 Redis 연결을 구분하기 위한
id
옵션 추가. (Pull Request)
Action Pack
자세한 변경 사항은 변경 로그를 참조하세요.
제거
fragment_cache_key
헬퍼 대신combined_fragment_cache_key
사용. (Commit)ActionDispatch::TestResponse
의 deprecated 메서드 제거:#success?
는#successful?
로,#missing?
은#not_found?
로,#error?
는#server_error?
로 대체. (Commit)
사용 중단
ActionDispatch::Http::ParameterFilter
를ActiveSupport::ParameterFilter
로 대체. (Pull Request)컨트롤러 수준의
force_ssl
을config.force_ssl
로 대체. (Pull Request)
주요 변경 사항
ActionDispatch::Response#content_type
이 Content-Type 헤더 그대로 반환하도록 변경. (Pull Request)리소스 매개변수에 콜론이 포함된 경우
ArgumentError
를 발생시키도록 변경. (Pull Request)ActionDispatch::SystemTestCase.driven_by
에 브라우저 기능을 정의하는 블록을 전달할 수 있도록 변경. (Pull Request)DNS 리바인딩 공격을 방지하는
ActionDispatch::HostAuthorization
미들웨어 추가. (Pull Request)ActionController::TestCase
에서parsed_body
사용 허용. (Pull Request)동일한 컨텍스트에 여러 루트 경로가 있는 경우
as:
명명 지정 없이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)쿠키 값을 다른 쿠키로 복사하는 것을 방지하기 위해 서명/암호화 쿠키에 목적 및 만료 메타데이터 추가. ([네, 번역을 계속하겠습니다.
Action View
자세한 변경 사항은 변경 로그를 참조하세요.
제거
사용 중단
대체 방법 없이
ActionView::Template.finalize_compiled_template_methods
사용 중단. (Pull Request)대체 방법 없이
config.action_view.finalize_compiled_template_methods
사용 중단. (Pull Request)options_from_collection_for_select
뷰 헬퍼에서 비공개 모델 메서드 호출 사용 중단. (Pull Request)
주요 변경 사항
파일 변경 시에만 개발 모드에서 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 생성을 지원하는
nonce: true
옵션을javascript_include_tag
헬퍼에 추가. (Pull Request)action_view.finalize_compiled_template_methods
구성을 추가하여ActionView::Template
finalizer를 비활성화하거나 활성화할 수 있도록 변경. (Pull Request)rails_ujs
에서 JavaScriptconfirm
호출을 별도의 재정의 가능한 메서드로 추출. (Pull Request)action_controller.default_enforce_utf8
구성 옵션을 추가하여 UTF-8 인코딩 적용 여부를 제어할 수 있도록 변경. 기본값은false
. (Pull Request)submit 태그에 대한 I18n 키 스타일 지원 추가. (Pull Request)
Action Mailer
자세한 변경 사항은 변경 로그를 참조하세요.
제거
사용 중단
Action Mailbox를 사용하도록
ActionMailer::Base.receive
사용 중단. (Commit)DeliveryJob
및Parameterized::DeliveryJob
를MailDeliveryJob
로 대체. (Pull Request)
주요 변경 사항
일반 및 매개변수화된 메일 전송을 위한
MailDeliveryJob
추가. (Pull Request)Action Mailer 테스트 어설션에서 사용자 정의 이메일 전송 작업이 작동하도록 변경. (Pull Request)
작업 이름만 사용하는 대신 블록을 사용하여 다중 파트 이메일에 대한 템플릿 이름을 지정할 수 있도록 변경. (Pull Request)
deliver.action_mailer
알림의 페이로드에perform_deliveries
추가. (Pull Request)perform_deliveries
가 false인 경우 이메일 전송이 건너뛰었음을 나타내는 개선된 로깅 메시지 추가. (Pull Request)블록 없이
assert_enqueued_email_with
를 호출할 수 있도록 변경. (Pull Request)assert_emails
블록에서 대기 중인 메일 전송 작업 실행. (Pull Request)ActionMailer::Base
에서 옵저버와 인터셉터를 등록 취소할 수 있도록 변경. (Pull Request)
Active Record
자세한 변경 사항은 변경 로그를 참조하세요.
제거
트랜잭션 객체의 deprecated
#set_state
제거. (Commit)데이터베이스 어댑터의 deprecated
#supports_statement_cache?
제거. (Commit)데이터베이스 어댑터의 deprecated
#insert_fixtures
제거. (Commit)deprecated
ActiveRecord::ConnectionAdapters::SQLite3Adapter#valid_alter_table_type?
제거. (Commit)블록이 전달될 때
sum
에 열 이름을 전달하는 기능 제거. (Commit)블록이 전달될 때
count
에 열 이름을 전달하는 기능 제거. (Commit)관계에서 누락된 메서드를 Arel로 위임하는 기능 제거. (Commit)
관계에서 클래스의 비공개 메서드로 누락된 메서드를 위임하는 기능 제거. (Commit)
#cache_key
에 타임스탬프 이름을 지정하는 기능 제거. (Commit)deprecated
ActiveRecord::Migrator.migrations_path=
제거. (Commit)deprecated
expand_hash_conditions_for_aggregates
제거. (Commit)
사용 중단
고유성 유효성 검사기에 대한 대소문자 구분 불일치 비교 사용 중단. (Commit)
수신기 범위가 누출된 경우 클래스 수준 쿼리 메서드 사용 중단. (Pull Request)
config.active_record.sqlite3.represent_boolean_as_integer
사용 중단. (Commit)connection.assume_migrated_upto_version
에migrations_paths
전달 사용 중단. (Commit)ActiveRecord::Result#to_hash
를ActiveRecord::Result#to_a
로 대체. (Commit)DatabaseLimits
메서드 사용 중단: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
/!
로 대체. (Commit)
주요 변경 사항
sqlite3
젬의 최소 버전을 1.4로 업데이트. (Pull Request)데이터베이스가 존재하지 않는 경우 생성하고 마이그레이션을 실행하는
rails db:prepare
추가. (Pull Request)after_save_commit
콜백을after_commit :hook, on: [ :create, :update ]
의 단축 방식으로 추가. (Pull Request)관련 레코드를 관계에서 추출하는
ActiveRecord::Relation#extract_associated
추가. (Pull Request)Active Record::Relation 쿼리에 SQL 주석을 추가하는
ActiveRecord::Relation#annotate
추가. (Pull Request)데이터베이스에 Optimizer Hints 설정 지원 추가. (Pull Request)
대량 삽입을 위한
insert_all
/insert_all!
/upsert_all
메서드 추가. (Pull Request)현재 환경의 각 데이터베이스 테이블을 잘라내고 시드를 로드하는
rails db:seed:replant
추가. (Pull Request)unscope(:select).select(fields)
의 단축 형태인reselect
메서드 추가. (Pull Request)모든 enum 값에 대한 부정 범위 추가. (Pull Request)
조건부 제거를 위한
#destroy_by
및#delete_by
추가. (Pull Request)데이터베이스 연결을 자동으로 전환할 수 있는 기능 추가. (Pull Request)
블록 기간 동안 데이터베이스 쓰기를 방지할 수 있는 기능 추가. (Pull Request)
다중 데이터베이스를 지원하는 연결 전환 API 추가. (Pull Request)
마이그레이션에서 정밀도가 있는 타임스탬프를 기본값으로 설정. (Pull Request)
MySQL에서
text
및blob
크기를 변경할 수 있는:size
옵션 추가. ([Pull Request](https://github.com/rails/rails/pull/35네, 번역을 계속하겠습니다.
Active Storage
자세한 변경 사항은 변경 로그를 참조하세요.
제거
사용 중단
config.active_storage.queue
를config.active_storage.queues.analysis
및config.active_storage.queues.purge
로 대체. (Pull Request)ActiveStorage::Downloading
을ActiveStorage::Blob#open
으로 대체. (Commit)이미지 변형 생성에
mini_magick
을 직접 사용하는 것을image_processing
으로 대체. (Commit)Active Storage의 ImageProcessing 변환기에서
:combine_options
사용 중단(대체 방법 없음). (Commit)
주요 변경 사항
BMP 이미지 변형 생성 지원 추가. (Pull Request)
TIFF 이미지 변형 생성 지원 추가. (Pull Request)
프로그레시브 JPEG 이미지 변형 생성 지원 추가. (Pull Request)
Active Storage 생성 경로 구성을 위한
ActiveStorage.routes_prefix
추가. (Pull Request)ActiveStorage::DiskController#show
에서 요청된 파일이 디스크 서비스에 없는 경우 404 Not Found 응답 생성. (Pull Request)ActiveStorage::Blob#download
및ActiveStorage::Blob#open
에서 요청된 파일이 없는 경우ActiveStorage::FileNotFoundError
발생. (Pull Request)Active Storage 예외가 상속받는 일반
ActiveStorage::Error
클래스 추가. (Commit)레코드가 저장될 때 레코드에 할당된 업로드된 파일을 즉시 저장하는 대신 지연 저장. (Pull Request)
첨부 파일 컬렉션에 할당할 때 기존 파일을 추가하는 대신 교체할 수 있는 옵션 추가(
config.active_storage.replace_on_assign_to_many
). (Pull Request, Pull Request)기존 Active Record 반영 메커니즘을 사용하여 정의된 첨부 파일을 반영할 수 있는 기능 추가. (Pull Request)
ActiveStorage::Blob#open
을 추가하여 Blob을 디스크의 임시 파일로 다운로드하고 임시 파일을 반환. (Commit)Google Cloud Storage에서 스트리밍 다운로드 지원.
google-cloud-storage
젬 1.11+ 버전 필요. (Pull Request)Active Storage 변형 생성에
mini_magick
대신image_processing
젬 사용. (Pull Request)
Active Model
자세한 변경 사항은 변경 로그를 참조하세요.
제거
사용 중단
주요 변경 사항
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
및Float
의 숫자성 동등성 유효성 검사를BigDecimal
로 캐스팅하여 수정. (Pull Request)다중 매개변수 시간 해시 변환 시 연도 값 수정. (Pull Request)
부울 속성에 거짓 부울 기호를 false로 변환. (Pull Request)
value_from_multiparameter_assignment
에서ActiveModel::Type::Date
에 대한 올바른 날짜 반환. (Pull Request)오류 번역을 가져올 때
:errors
네임스페이스로 폴백하기 전에 부모 로케일로 폴백. (Pull Request)
Active Support
자세한 변경 사항은 변경 로그를 참조하세요.
제거
Inflections
에서 deprecated#acronym_regex
메서드 제거. (Commit)deprecated
Module#reachable?
메서드 제거. (Commit)대체 방법 없이 Kernel#` 제거. (Pull Request)
사용 중단
음수 정수 인수를 사용하는
String#first
및String#last
사용 중단. (Pull Request)String#downcase/upcase/swapcase
로 대체하여ActiveSupport::Multibyte::Unicode#downcase/upcase/swapcase
사용 중단. (Pull Request)String#unicode_normalize
로 대체하여ActiveSupport::Multibyte::Unicode#normalize
및ActiveSupport::Multibyte::Chars#normalize
사용 중단. (Pull Request)String#is_utf8?
로 대체하여ActiveSupport::Multibyte::Chars.consumes?
사용 중단. (Pull Request)array.flatten.pack("U*")
및string.scan(/\X/).map(&:codepoints)
로 대체하여ActiveSupport::Multibyte::Unicode#pack_graphemes(array)
및ActiveSupport::Multibyte::Unicode#unpack_graphemes(string)
사용 중단. (Pull Request)
주요 변경 사항
병렬 테스팅 지원 추가. (Pull Request)
String#strip_heredoc
이 문자열의 동결 상태를 유지하도록 수정. (Pull Request)다국어 문자 또는 그래픽 클러스터를 손상시키지 않고 최대 바이트 크기로 문자열을 자르는
String#truncate_bytes
추가. (Pull Request)delegate
메서드에 비공개 메서드로 위임하는private
옵션 추가. (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 캐시 저장소:
delete_matched
가 더 이상 Redis 서버를 차단하지 않도록 변경. (Pull Request)ActiveSupport::TimeZone.all
이ActiveSupport::TimeZone::MAPPING
에 정의된 모든 타임존에 대한 tzinfo 데이터가 누락된 경우 실패하는 버그 수정. (Pull Request)전달된 블록의 값 또는 기본 인수를 사용하여 열거형에서 해시를 만드는
Enumerable#index_with
추가. (Pull Request)Range#===
및Range#cover?
메서드가Range
인수로 작동하도록 변경. (Pull Request)RedisCacheStore의
increment/decrement
작업에 키 만료 지원 추가. (Pull Request)로그 구독자 이벤트에 CPU 시간, 유휴 시간 및 할당량 기능 추가. (Pull Request)
Active Support 알림 시스템에 이벤트 객체 지원 추가. (Pull Request)
ActiveSupport::Cache#fetch
에skip_nil
옵션 추가하여 nil 항목 캐싱 방지. (Pull Request)블록이 true를 반환하는 요소를 제거하고 반환하는
Array#extract!
메서드 추가. (Pull Request)HTML 안전 문자열을 자른 후에도 HTML 안전 상태 유지. (Pull Request)
로깅을 통한 상수 자동 로드 추적 지원. (Commit)
travel_back
의 별칭으로unfreeze_time
정의. (Pull Request)ActiveSupport::TaggedLogging.new
가 인수로 받은 로거 인스턴스를 변경하는 대신 새 로거 인스턴스를 반환하도록 변경. (Pull Request)#delete_prefix
,#delete_suffix
및#unicode_normalize
메서드를 HTML 안전 메서드로 취급. (Pull Request)기호 인수로
ActiveSupport::HashWithIndifferentAccess#without
가 실패하는 버그 수정. (Pull Request)Module#parent
,Module#parents
,Module#parent_name
을 각각module_parent
,module_parents
, `moduleparent네, 번역을 계속하겠습니다.
Active Job
자세한 변경 사항은 변경 로그를 참조하세요.
제거
- Qu 젬 지원 제거. (Pull Request)
사용 중단
주요 변경 사항
Active Job 인수에 대한 사용자 정의 직렬화기 지원 추가. (Pull Request)
Active Job이 대기열에 추가된 타임존에서 실행되도록 지원 추가. (Pull Request)
retry_on
/discard_on
에 여러 예외 전달 허용. (Commit)블록 없이
assert_enqueued_with
및assert_enqueued_email_with
호출 허용. (Pull Request)after_enqueue
콜백 대신around_enqueue
콜백에서enqueue
및enqueue_at
알림 래핑. (Pull Request)블록 없이
perform_enqueued_jobs
호출 허용. (Pull Request)블록 없이
assert_performed_with
호출 허용. (Pull Request)작업 어설션 및 헬퍼에
:queue
옵션 추가. (Pull Request)작업 재시도 및 폐기에 대한 후크 추가. (Pull Request)
작업 수행 시 인수 부분 집합 테스트 방법 추가. (Pull Request)
Active Job 테스트 헬퍼에서 역직렬화된 인수 포함. (Pull Request)
only
키워드에 Proc을 전달할 수 있도록 Active Job 어설션 헬퍼 변경. (Pull Request)어설션 헬퍼에서 작업 인수의 마이크로초와 나노초 제거. (Pull Request)
Ruby on Rails 가이드
자세한 변경 사항은 변경 로그를 참조하세요.
주요 변경 사항
Active Record를 사용한 다중 데이터베이스 가이드 추가. (Pull Request)
자동 로드 문제 해결에 대한 섹션 추가. (Commit)
Action Mailbox 기본 사항 가이드 추가. (Pull Request)
Action Text 개요 가이드 추가. (Pull Request)
크레딧
Rails에 많은 시간을 보내 안정적이고 견고한 프레임워크로 만든 많은 기여자들의 전체 목록을 참조하세요. 모든 분들께 박수를 보냅니다.