1 Rails 6.1로 업그레이드하기
기존 애플리케이션을 업그레이드하는 경우, 업그레이드하기 전에 좋은 테스트 커버리지를 갖는 것이 좋습니다. 또한, Rails 6.0으로 먼저 업그레이드하고 애플리케이션이 예상대로 작동하는지 확인한 후에 Rails 6.1로 업데이트를 시도하십시오. 업그레이드할 때 주의해야 할 사항은 Ruby on Rails 업그레이드 가이드에서 확인할 수 있습니다.
2 주요 기능
2.1 데이터베이스별 연결 전환
Rails 6.1은 데이터베이스별 연결 전환 기능을 제공합니다. 6.0에서 reading
역할로 전환하면 모든 데이터베이스 연결도 읽기 전용 역할로 전환되었습니다. 이제 6.1에서는 설정에서 legacy_connection_handling
을 false
로 설정하면 해당 추상 클래스에 대해 connected_to
를 호출하여 단일 데이터베이스의 연결을 전환할 수 있도록 합니다.
2.2 수평 샤딩
Rails 6.0은 데이터베이스를 기능적으로 분할(다중 파티션, 다른 스키마)할 수 있지만 수평 샤딩(동일한 스키마, 다중 파티션)을 지원하지 못했습니다. Rails는 Active Record의 모델에서 클래스당 한 번의 연결만 가질 수 있기 때문에 수평 샤딩을 지원할 수 없었습니다. 이제 이 문제가 해결되어 Rails에서 수평 샤딩이 가능합니다.
2.3 엄격한 로딩 연관 관계
엄격한 로딩 연관 관계를 사용하면 모든 연관 관계가 이른바 N+1 문제가 발생하기 전에 이른 시기에 로드되도록 보장할 수 있습니다.
2.4 위임된 타입
위임된 타입은 단일 테이블 상속의 대안입니다. 이를 통해 클래스 계층 구조를 나타낼 수 있으며, 슈퍼클래스는 자체 테이블로 표현되는 구체적인 클래스가 될 수 있습니다. 각 하위 클래스는 추가 속성을 위한 자체 테이블을 갖습니다.
2.5 연관 관계 비동기 삭제
연관 관계 비동기 삭제는 애플리케이션이 백그라운드 작업에서 연관 관계를 destroy
할 수 있는 기능을 추가합니다. 이를 통해 데이터를 삭제할 때 타임아웃 및 성능 문제를 피할 수 있습니다.
3 Railties
자세한 변경 사항은 변경 로그를 참조하십시오.
3.1 제거 사항
폐기된
rake notes
작업 제거.rails dbconsole
명령에서 폐기된connection
옵션 제거.rails notes
에서SOURCE_ANNOTATION_DIRECTORIES
환경 변수 지원 제거.rails server
명령에서 폐기된server
인수 제거.서버 IP를 지정하기 위해
HOST
환경 변수 사용을 폐기.폐기된
rake dev:cache
작업 제거.폐기된
rake routes
작업 제거.폐기된
rake initializers
작업 제거.
3.2 폐기 사항
3.3 주요 변경 사항
4 Action Cable
자세한 변경 사항은 변경 로그를 참조하십시오.
4.1 제거 사항
4.2 폐기 사항
4.3 주요 변경 사항
5 Action Pack
자세한 변경 사항은 변경 로그를 참조하십시오.
5.1 제거 사항
폐기된
ActionDispatch::Http::ParameterFilter
제거.컨트롤러 수준에서 폐기된
force_ssl
제거.
5.2 폐기 사항
-
config.action_dispatch.return_only_media_type_on_content_type
폐기.
5.3 주요 변경 사항
-
ActionDispatch::Response#content_type
을 전체 Content-Type 헤더를 반환하도록 변경.
6 Action View
자세한 변경 사항은 변경 로그를 참조하십시오.
6.1 제거 사항
ActionView::Template::Handlers::ERB
에서 폐기된escape_whitelist
제거.ActionView::Resolver
에서 폐기된find_all_anywhere
제거.ActionView::Template::HTML
에서 폐기된formats
제거.ActionView::Template::RawFile
에서 폐기된formats
제거.ActionView::Template::Text
에서 폐기된formats
제거.ActionView::PathSet
에서 폐기된find_file
제거.ActionView::LookupContext
에서 폐기된rendered_format
제거.ActionView::ViewPaths
에서 폐기된find_file
제거.ActionView::Base#initialize
의 첫 번째 인수로ActionView::LookupContext
가 아닌 객체를 전달하는 것을 폐기.ActionView::Base#initialize
에서 폐기된format
인수.ActionView::Template#refresh
폐기.ActionView::Template#original_encoding
폐기.ActionView::Template#variants
폐기.ActionView::Template#formats
를 삭제합니다.ActionView::Template#virtual_path=
를 삭제합니다.ActionView::Template#updated_at
를 삭제합니다.ActionView::Template#initialize
에서 필요한updated_at
인수를 삭제합니다.ActionView::Template.finalize_compiled_template_methods
를 삭제합니다.config.action_view.finalize_compiled_template_methods
를 삭제합니다.블록을 사용하여
ActionView::ViewPaths#with_fallback
를 호출하는 지원을 삭제합니다.render template:
에 절대 경로를 전달하는 지원을 삭제합니다.render file:
에 상대 경로를 전달하는 지원을 삭제합니다.두 개의 인수를 받지 않는 템플릿 핸들러를 지원하지 않습니다.
ActionView::Template::PathResolver
에서 패턴 인수를 삭제합니다.일부 뷰 헬퍼에서 객체에서 비공개 메서드를 호출하는 지원을 삭제합니다.
6.2 폐기
6.3 주요 변경 사항
ActionView::Base
하위 클래스가#compiled_method_container
를 구현해야 합니다.ActionView::Template#initialize
에서locals
인수가 필요합니다.javascript_include_tag
및stylesheet_link_tag
자산 도우미는 자산 사전로드에 대한 힌트를 현대적인 브라우저에 제공하는Link
헤더를 생성합니다. 이 기능은config.action_view.preload_links_header
를false
로 설정하여 비활성화할 수 있습니다.
7 액션 메일러
자세한 변경 사항은 Changelog를 참조하십시오.
7.1 삭제
- Action Mailbox를 선호하는 방식으로 폐기된
ActionMailer::Base.receive
를 삭제합니다.
7.2 폐기
7.3 주요 변경 사항
8 액티브 레코드
자세한 변경 사항은 Changelog를 참조하십시오.
8.1 삭제
ActiveRecord::ConnectionAdapters::DatabaseLimits
에서 폐기된 메서드를 삭제합니다.column_name_length
table_name_length
columns_per_table
indexes_per_table
columns_per_multicolumn_index
sql_query_length
joins_per_query
ActiveRecord::ConnectionAdapters::AbstractAdapter#supports_multi_insert?
를 삭제합니다.ActiveRecord::ConnectionAdapters::AbstractAdapter#supports_foreign_keys_in_create?
를 삭제합니다.ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#supports_ranges?
를 삭제합니다.ActiveRecord::Base#update_attributes
및ActiveRecord::Base#update_attributes!
를 삭제합니다.ActiveRecord::ConnectionAdapter::SchemaStatements#assume_migrated_upto_version
에서migrations_path
인수를 삭제합니다.config.active_record.sqlite3.represent_boolean_as_integer
를 삭제합니다.ActiveRecord::DatabaseConfigurations
에서 폐기된 메서드를 삭제합니다.fetch
each
first
values
[]=
ActiveRecord::Result#to_hash
메서드를 삭제합니다.ActiveRecord::Relation
메서드에서 안전하지 않은 원시 SQL을 사용하는 지원을 삭제합니다.
8.2 폐기
ActiveRecord::Base.allow_unsafe_raw_sql
을 폐기합니다.connected_to
에서database
kwarg를 폐기합니다.legacy_connection_handling
이 false로 설정된 경우connection_handlers
를 폐기합니다.
8.3 주요 변경 사항
MySQL: 고유성 유효성 검사기는 이제 기본 데이터베이스 콜레이션을 준수하며, 기본적으로 대소문자를 구분하지 않습니다.
relation.create
은 초기화 블록 및 콜백에서 클래스 수준의 쿼리 메서드에 스코프를 더 이상 누출하지 않습니다.이전:
User.where(name: "John").create do |john| User.find_by(name: "David") # => nil end
이후:
User.where(name: "John").create do |john| User.find_by(name: "David") # => #<User name: "David", ...> end
네임드 스코프 체인은 이제 클래스 수준의 쿼리 메서드에 스코프를 더 이상 누출하지 않습니다.
class User < ActiveRecord::Base scope :david, -> { User.where(name: "David") } end
이전:
User.where(name: "John").david # SELECT * FROM users WHERE name = 'John' AND name = 'David'
이후:
User.where(name: "John").david # SELECT * FROM users WHERE name = 'David'
where.not
은 이제 NOR 대신 NAND 프리디케이트를 생성합니다.이전:
User.where.not(name: "Jon", role: "admin") # SELECT * FROM users WHERE name != 'Jon' AND role != 'admin'
이후:
User.where.not(name: "Jon", role: "admin") # SELECT * FROM users WHERE NOT (name = 'Jon' AND role = 'admin')
새로운 데이터베이스별 연결 처리를 사용하려면
legacy_connection_handling
을 false로 변경하고connection_handlers
에서 폐기된 접근자를 제거해야 합니다.connects_to
및connected_to
의 공개 메서드는 변경하지 않아도 됩니다.
9 액티브 스토리지
자세한 변경 사항은 Changelog를 참조하십시오.
9.1 삭제
ActiveStorage::Transformers::ImageProcessing
에:combine_options
작업을 전달하는 지원을 삭제합니다.ActiveStorage::Transformers::MiniMagickTransformer
를 삭제합니다.config.active_storage.queue
를 삭제합니다.ActiveStorage::Downloading
을 삭제합니다.
9.2 폐기
Blob.create_after_upload
을Blob.create_and_upload
을 선호하는 방식으로 폐기합니다. (Pull Request)
9.3 주요 변경 사항
Blob.create_and_upload
를 추가하여 새로운 blob을 생성하고 주어진io
를 서비스에 업로드합니다. (Pull Request)ActiveStorage::Blob#service_name
열이 추가되었습니다. 업그레이드 후에 마이그레이션을 실행해야 합니다.bin/rails app:update
를 실행하여 해당 마이그레이션을 생성하십시오.
10 액티브 모델
자세한 변경 사항은 Changelog를 참조하십시오.
10.1 삭제
10.2 폐기
10.3 주요 변경 사항
- 액티브 모델의 오류는 이제 모델에서 발생하는 오류를 더 쉽게 처리하고 상호 작용할 수 있는 인터페이스를 가진 객체입니다. 이 기능은 쿼리 인터페이스를 포함하며, 더 정확한 테스트와 오류 세부 정보에 대한 액세스를 가능하게 합니다. 액티브 서포트 --------------
자세한 변경 사항은 변경 로그를 참조하십시오.
10.4 제거
config.i18n.fallbacks
가 비어 있을 때I18n.default_locale
로의 폴백 제거.LoggerSilence
상수 제거.ActiveSupport::LoggerThreadSafeLevel#after_initialize
제거.Module#parent_name
,Module#parent
및Module#parents
제거.active_support/core_ext/module/reachable
파일 제거.active_support/core_ext/numeric/inquiry
파일 제거.active_support/core_ext/array/prepend_and_append
파일 제거.active_support/core_ext/hash/compact
파일 제거.active_support/core_ext/hash/transform_values
파일 제거.active_support/core_ext/range/include_range
파일 제거.ActiveSupport::Multibyte::Chars#consumes?
및ActiveSupport::Multibyte::Chars#normalize
제거.ActiveSupport::Multibyte::Unicode.pack_graphemes
,ActiveSupport::Multibyte::Unicode.unpack_graphemes
,ActiveSupport::Multibyte::Unicode.normalize
,ActiveSupport::Multibyte::Unicode.downcase
,ActiveSupport::Multibyte::Unicode.upcase
및ActiveSupport::Multibyte::Unicode.swapcase
제거.ActiveSupport::Notifications::Instrumenter#end=
제거.
10.5 폐기
-
ActiveSupport::Multibyte::Unicode.default_normalization_form
폐기.
10.6 주목할만한 변경 사항
11 액티브 잡
자세한 변경 사항은 변경 로그를 참조하십시오.
11.1 제거
11.2 폐기
-
config.active_job.return_false_on_aborted_enqueue
폐기.
11.3 주목할만한 변경 사항
- 작업을 큐에 넣는 것이 중단되면
false
를 반환합니다.
12 액션 텍스트
자세한 변경 사항은 변경 로그를 참조하십시오.
12.1 제거
12.2 폐기
12.3 주목할만한 변경 사항
리치 텍스트 속성의 이름 뒤에
?
를 추가하여 리치 텍스트 콘텐츠의 존재 여부를 확인하는 메서드 추가. (Pull Request)주어진 HTML 콘텐츠로 트릭스 편집기를 찾고 채우는
fill_in_rich_text_area
시스템 테스트 케이스 도우미 추가. (Pull Request)데이터베이스 픽스처에서
<action-text-attachment>
요소를 생성하기 위한ActionText::FixtureSet.attachment
추가. (Pull Request)
13 액션 메일박스
자세한 변경 사항은 변경 로그를 참조하십시오.
13.1 제거
13.2 폐기
-
Rails.application.credentials.action_mailbox.api_key
및MAILGUN_INGRESS_API_KEY
를Rails.application.credentials.action_mailbox.signing_key
및MAILGUN_INGRESS_SIGNING_KEY
로 대체하기 위해Rails.application.credentials.action_mailbox.api_key
및MAILGUN_INGRESS_API_KEY
를 폐기.
13.3 주목할만한 변경 사항
14 루비 온 레일스 가이드
자세한 변경 사항은 변경 로그를 참조하십시오.
14.1 주목할만한 변경 사항
15 크레딧
Rails에 기여한 전체 기여자 목록을 확인하여 Rails를 안정적이고 견고한 프레임워크로 만드는 데 많은 시간을 투자한 많은 사람들에게 감사의 인사를 전합니다.
피드백
이 가이드의 품질을 개선하는 데 도움을 주시기를 권장합니다.
오타나 사실적인 오류를 발견하면 기여해주십시오. 시작하려면 문서 기여 섹션을 읽어보세요.
불완전한 내용이나 최신 정보가 아닌 내용을 발견할 수도 있습니다. 주요한 부분에 누락된 문서를 추가해주세요. Edge 가이드에서 이미 문제가 해결되었는지 확인하세요. 스타일과 규칙은 Ruby on Rails 가이드 지침을 확인하세요.
수정할 내용을 발견했지만 직접 수정할 수 없는 경우 이슈를 열어주세요.
마지막으로, Ruby on Rails 문서에 관한 모든 토론은 공식 Ruby on Rails 포럼에서 환영합니다.