Ruby on Rails 4.2 릴리스 노트
Rails 4.2의 주요 기능:
- Active Job
- 비동기 메일
- Adequate Record
- Web Console
- 외래키 지원
이 릴리스 노트에는 주요 변경 사항만 포함되어 있습니다. 다른 기능, 버그 수정 및 변경 사항에 대해서는 변경 로그를 참조하거나 GitHub의 Rails 주 저장소에서 커밋 목록을 확인하십시오.
Rails 4.2로 업그레이드하기
기존 애플리케이션을 업그레이드하는 경우, 업그레이드 전에 충분한 테스트 커버리지를 확보하는 것이 좋습니다. 또한 Rails 4.1로 먼저 업그레이드하고 애플리케이션이 예상대로 작동하는지 확인한 후에 Rails 4.2로 업그레이드를 시도해야 합니다. Rails 4.1에서 Rails 4.2로 업그레이드할 때 주의해야 할 사항은 Ruby on Rails 업그레이드 가이드에서 확인할 수 있습니다.
주요 기능
Active Job
Active Job은 Rails 4.2의 새로운 프레임워크입니다. 이는 Resque, Delayed Job, Sidekiq 등 다양한 큐 시스템 위에 구축된 공통 인터페이스입니다.
Active Job API로 작성된 작업은 해당 어댑터를 통해 지원되는 모든 큐에서 실행될 수 있습니다. Active Job에는 작업을 즉시 실행하는 인라인 러너가 사전 구성되어 있습니다.
작업은 종종 Active Record 객체를 인수로 취해야 합니다. Active Job은 객체 자체를 직렬화하는 대신 URI(Uniform Resource Identifier)로 객체 참조를 전달합니다. 새로운 Global ID 라이브러리는 URI를 구축하고 참조된 객체를 조회합니다. Global ID를 내부적으로 사용하여 Active Record 객체를 작업 인수로 전달하는 것이 가능합니다.
예를 들어 trashable
이 Active Record 객체인 경우 직렬화 없이도 다음과 같은 작업이 실행됩니다:
class TrashableCleanupJob < ActiveJob::Base def perform(trashable, depth) trashable.cleanup(depth) end end
자세한 내용은 Active Job 기본 사항 가이드를 참조하십시오.
비동기 메일
Active Job 위에 구축된 Action Mailer는 deliver_later
메서드를 제공하여 큐를 통해 이메일을 보낼 수 있습니다. 이를 통해 비동기 큐(기본 인라인 큐는 차단)를 사용할 때 컨트롤러나 모델을 차단하지 않습니다.
즉시 이메일을 보내려면 deliver_now
를 사용할 수 있습니다.
Adequate Record
Adequate Record는 Active Record의 성능 향상 기능으로, 일반적인 find
및 find_by
호출과 일부 연관 쿼리를 최대 2배 빠르게 만듭니다.
이는 일반적인 SQL 쿼리를 준비된 문으로 캐싱하고 유사한 호출에서 이를 재사용하여 후속 호출에서 대부분의 쿼리 생성 작업을 건너뛰는 방식으로 작동합니다. 자세한 내용은 Aaron Patterson의 블로그 게시물을 참조하십시오.
Active Record는 사용자 개입이나 코드 변경 없이도 이 기능을 자동으로 활용합니다. 지원되는 작업의 예는 다음과 같습니다:
Post.find(1) # 첫 번째 호출에서 준비된 문 생성 및 캐싱 Post.find(2) # 후속 호출에서 캐시된 준비된 문 재사용 Post.find_by_title('first post') Post.find_by_title('second post') Post.find_by(title: 'first post') Post.find_by(title: 'second post') post.comments post.comments(true)
중요한 점은 위의 예에서 보듯이 준비된 문이 메서드 호출에 전달된 값을 캐시하는 것이 아니라 이를 위한 자리 표시자를 가진다는 것입니다.
다음과 같은 시나리오에서는 캐싱이 사용되지 않습니다:
- 모델에 기본 범위가 있는 경우
- 모델이 단일 테이블 상속을 사용하는 경우
find
에 ID 목록을 전달하는 경우, 예:# 캐시되지 않음 Post.find(1, 2, 3) Post.find([1,2])
SQL 조각을 사용하는
find_by
, 예:Post.find_by('published_at < ?', 2.weeks.ago)
Web Console
Rails 4.2로 생성된 새 애플리케이션에는 기본적으로 Web Console gem이 포함됩니다. Web Console은 모든 오류 페이지에 대화형 Ruby 콘솔을 추가하고 console
뷰 및 컨트롤러 헬퍼를 제공합니다.
오류 페이지의 대화형 콘솔을 통해 예외가 발생한 곳의 컨텍스트에서 코드를 실행할 수 있습니다. console
헬퍼를 호출하면 렌더링이 완료된 후 최종 컨텍스트에서 대화형 콘솔이 실행됩니다.
외래키 지원
마이그레이션 DSL에 외래키 추가 및 제거 기능이 추가되었습니다. 외래키는 schema.rb
에도 덤프됩니다. 현재 mysql
, mysql2
및 postgresql
어댑터만 외래키를 지원합니다.
# `articles.author_id`를 `authors.id`를 참조하는 외래키 추가 add_foreign_key :articles, :authors # `articles.author_id`를 `users.lng_id`를 참조하는 외래키 추가 add_foreign_key :articles, :users, column: :author_id, primary_key: "lng_id" # `accounts.branch_id`에 대한 외래키 제거 remove_foreign_key :accounts, :branches # `accounts.owner_id`에 대한 외래키 제거 remove_foreign_key :accounts, column: :owner_id
addforeignkey 및 removeforeignkey API 문서에서 전체 설명을 확인할 수 있습니다.
호환성 문제
이전에 사용되던 기능이 제거되었습니다. 각 구성 요소의 새로운 사용 중단 사항을 참조하십시오.
다음과 같은 변경 사항으로 인해 즉각적인 조치가 필요할 수 있습니다.
render
에 문자열 인수 사용
이전에는 컨트롤러 작업에서 render "foo/bar"
를 호출하면 render file: "foo/bar"
와 동일했습니다. Rails 4.2에서는 이것이 render template: "foo/bar"
를 의미하도록 변경되었습니다. 파일을 렌더링해야 하는 경우 명시적 형식(render file: "foo/bar"
)을 사용하십시오.
respond_with
/ 클래스 수준 respond_to
respond_with
와 해당 클래스 수준 respond_to
는 responders gem으로 이동되었습니다. 이를 사용하려면 Gemfile
에 gem "responders", "~> 2.0"
을 추가하십시오:
# app/controllers/users_controller.rb class UsersController < ApplicationController respond_to :html, :json def show @user = User.find(params[:id]) respond_with @user end end
인스턴스 수준 respond_to
는 영향을 받지 않습니다:
# app/controllers/users_controller.rb class UsersController < ApplicationController def show @user = User.find(params[:id]) respond_to do |format| format.html format.json { render json: @user } end end end
rails server
의 기본 호스트
Rack의 변경으로 인해 rails server
가 이제 기본적으로 localhost
에서 수신 대기합니다. 이는 표준 개발 워크플로에 최소한의 영향을 미치므로 http://127.0.0.1:3000
및 http://localhost:3000
을 계속 사용할 수 있습니다.
그러나 이 변경으로 인해 가상 머신의 개발 환경에서 호스트 머신에서 Rails 서버에 액세스할 수 없게 됩니다. 이러한 경우 rails server -b 0.0.0.0
으로 서버를 시작하여 이전 동작을 복원할 수 있습니다.
이렇게 하는 경우 신뢰할 수 있는 네트워크의 머신만 개발 서버에 액세스할 수 있도록 방화벽을 적절히 구성해야 합니다.
render
의 상태 옵션 기호 변경
Rack의 변경으로 인해 render
메서드에서 :status
옵션에 허용되는 기호가 변경되었습니다:
- 306:
:reserved
가 제거되었습니다. - 413:
:request_entity_too_large
가:payload_too_large
로 이름이 변경되었습니다. - 414:
:request_uri_too_long
이:uri_too_long
으로 이름이 변경되었습니다. - 416:
:requested_range_not_satisfiable
가:range_not_satisfiable
로 이름이 변경되었습니다.
알 수 없는 기호로 render
를 호출하면 응답 상태가 기본적으로 500이 됨을 유의하십시오.
HTML 세니타이저
HTML 세니타이저가 Loofah와 Nokogiri를 기반으로 한 새로운 강력한 구현으로 교체되었습니다. 새로운 세니타이저는 더 안전하고 세니타이즈 기능이 더 강력하고 유연합니다.
새로운 알고리즘으로 인해 특정 병리적 입력에 대한 세니타이즈된 출력이 달라질 수 있습니다.
이전 세니타이저의 정확한 출력이 필요한 경우 rails-deprecated_sanitizer gem을 Gemfile
에 추가하여 이전 동작을 사용할 수 있습니다. 이 gem은 사용자 선택 사항이므로 사용 중단 경고를 발생시키지 않습니다.
rails-deprecated_sanitizer
는 Rails 4.2에서만 지원되며 Rails 5.0에서는 유지되지 않습니다.
새로운 세니타이저에 대한 자세한 내용은 이 블로그 게시물을 참조하십시오.
assert_select
assert_select
는 이제 [Nok네, 번역을 계속하겠습니다.
assert_select
assert_select
는 이제 Nokogiri를 기반으로 합니다. 그 결과 이전에는 유효했던 일부 선택기가 더 이상 지원되지 않습니다. 애플리케이션에서 이러한 구문을 사용하는 경우 이를 업데이트해야 합니다:
속성 선택기의 값에 비alphanumeric 문자가 포함된 경우 인용부호로 묶어야 합니다.
# 이전 a[href=/] a[href$=/] # 현재 a[href="/"] a[href$="/"]
잘못 중첩된 요소가 포함된 HTML 소스에서 빌드된 DOM은 달라질 수 있습니다.
예를 들어:
# 내용: <div><i><p></i></div> # 이전: assert_select('div > i') # => true assert_select('div > p') # => false assert_select('i > p') # => true # 현재: assert_select('div > i') # => true assert_select('div > p') # => true assert_select('i > p') # => false
선택된 데이터에 엔티티가 포함된 경우 비교를 위해 선택된 값은 이전에는 원시(예:
AT&T
)였지만 이제는 평가됩니다(예:AT&T
).# 내용: <p>AT&T</p> # 이전: assert_select('p', 'AT&T') # => true assert_select('p', 'AT&T') # => false # 현재: assert_select('p', 'AT&T') # => true assert_select('p', 'AT&T') # => false
또한 대체 구문이 변경되었습니다.
이제 :match
CSS 선택기를 사용해야 합니다:
assert_select ":match('id', ?)", 'comment_1'
또한 어설션 실패 시 정규식 대체의 모양이 달라졌습니다.
여기서 /hello/
는:
assert_select(":match('id', ?)", /hello/)
"(?-mix:hello)"
가 됩니다:
Expected at least 1 element matching "div:match('id', "(?-mix:hello)")", found 0.. Expected 0 to be >= 1.
assert_select
에 대한 자세한 내용은 Rails Dom Testing 문서를 참조하십시오.
Railties
자세한 변경 사항은 변경 로그를 참조하십시오.
제거
--skip-action-view
옵션이 앱 생성기에서 제거되었습니다. (Pull Request)rails application
명령이 대체 없이 제거되었습니다. (Pull Request)
사용 중단
프로덕션 환경에 대한
config.log_level
누락이 사용 중단되었습니다. (Pull Request)rake test:all
이rake test
로 대체되어test
폴더의 모든 테스트를 실행합니다. (Pull Request)rake test:all:db
가rake test:db
로 대체되었습니다. (Pull Request)Rails::Rack::LogTailer
가 대체 없이 사용 중단되었습니다. (Commit)
주요 변경 사항
기본 애플리케이션
Gemfile
에web-console
이 도입되었습니다. (Pull Request)모델 생성기에 연관 관계에 대한
required
옵션이 추가되었습니다. (Pull Request)사용자 정의 구성 옵션을 정의하기 위해
x
네임스페이스가 도입되었습니다:# config/environments/production.rb config.x.payment_processing.schedule = :daily config.x.payment_processing.retries = 3 config.x.super_debugger = true
이러한 옵션은 구성 개체를 통해 사용할 수 있습니다:
Rails.configuration.x.payment_processing.schedule # => :daily Rails.configuration.x.payment_processing.retries # => 3 Rails.configuration.x.super_debugger # => true
(Commit)
현재 환경에 대한 구성을 로드하는
Rails::Application.config_for
가 도입되었습니다.# config/exception_notification.yml production: url: http://127.0.0.1:8080 namespace: my_app_production development: url: http://localhost:3001 namespace: my_app_development
# config/environments/production.rb Rails.application.configure do config.middleware.use ExceptionNotifier, config_for(:exception_notification) end
앱 생성기에 터보링크 통합을 생성하지 않는
--skip-turbolinks
옵션이 도입되었습니다. (Commit)애플리케이션을 부트스트랩할 때 자동화된 설정 코드에 대한
bin/setup
스크립트가 도입되었습니다. (Pull Request)개발 환경에서
config.assets.digest
의 기본값이true
로 변경되었습니다. (Pull Request)rake notes
에 대한 새 확장을 등록하는 API가 도입되었습니다. (Pull Request)Rails 템플릿에 대한
after_bundle
콜백이 도입되었습니다. (Pull Request)Rails.gem_version
이Gem::Version.new(Rails.version)
을 반환하는 편의 메서드로 도입되었습니다. (Pull Request)
Action Pack
자세한 변경 사항은 변경 로그를 참조하십시오.
제거
respond_with
와 클래스 수준respond_to
가 Rails에서 제거되고responders
gem(버전 2.0)으로 이동되었습니다. 이 기능을 계속 사용하려면Gemfile
에gem "responders", "~> 2.0"
을 추가하십시오. (Pull Request, 자세한 내용)AbstractController::Helpers::ClassMethods::MissingHelperError
가AbstractController::Helpers::MissingHelperError
로 대체되었습니다. (Commit)
사용 중단
*_path
헬퍼에 대한only_path
옵션이 사용 중단되었습니다. (Commit)assert_tag
,assert_no_tag
,find_tag
및find_all_tag
가assert_select
로 사용 중단되었습니다. (Commit)라우터의
:to
옵션에 대한 지원이 심볼 또는#
문자를 포함하지 않는 문자열로 사용 중단되었습니다:get '/posts', to: MyRackApp => (변경 필요 없음) get '/posts', to: 'post#index' => (변경 필요 없음) get '/posts', to: 'posts' => get '/posts', controller: :posts get '/posts', to: :index => get '/posts', action: :index
(Commit)
URL 헬퍼에서 문자열 키 사용이 사용 중단되었습니다:
# 나쁨 root_path('controller' => 'posts', 'action' => 'index') # 좋음 root_path(controller: 'posts', action: 'index')
주요 변경 사항
*_filter
메서드 계열이 문서에서 제거되었습니다. 이 사용은*_action
메서드 계열로 대체하는 것이 좋습니다:after_filter => after_action append_after_filter => append_after_action append_around_filter => append_around_action append_before_filter => append_before_action around_filter => around_action before_filter => before_action prepend_after_filter => prepend_after_action prepend_around_filter => prepend_around_action prepend_before_filter => prepend_before_action skip_after_filter => skip_after_action skip_around_filter => skip_around_action skip_before_filter => skip_before_action skip_filter => skip_action_callback
애플리케이션이 현재 이러한 메서드에 의존하는 경우 대체
*_action
메서드를 사용해야 합니다. 이 메서드는 향후 사용 중단되고 Rails에서 제거될 것입니다.render nothing: true
또는nil
본문 렌더링은 더 이상 단일 공백 패딩을 추가하지 않습니다. (Pull Request)Rails는 이제 템플릿의 다이제스트를 ETag에 자동으로 포함합니다. (Pull Request)
URL 헬퍼에 전달된 세그먼트가 이제 자동으로 이스케이프됩니다. (Commit)
전역적으로 허용되는 매개변수를 구성하는
always_permitted_parameters
옵션이 도입되었습니다. 이 구성의 기본값은['controller', 'action']
입니다. (Pull Request)RFC 4791에서 정의된 HTTP 메서드
MKCALENDAR
가 추가되었습니다. (Pull Request)*_fragment.action_controller
알림에 컨트롤러 및 작업 이름이 페이로드에 포함되도록 개선되었습니다. (Pull Request)CSRF 실패 로깅을 비활성화하는 옵션이 추가되었습니다. (Pull Request)
Rails 서버가 정적 자산을 제공하도록 설정된 경우 클라이언트가 gzip을 지원하고 디스크에
.gz
파일이 있는 경우 gzip 파일이 제공됩니다. 기본적으로 자산 파이프라인은 모든 압축 가능한 자산에 대해.gz
파일을 생성합니다. gzip 파일 제공은 데이터 전송을 최소화하고 네, 번역을 계속하겠습니다.
Action View
자세한 변경 사항은 변경 로그를 참조하십시오.
사용 중단
AbstractController::Base.parent_prefixes
가 사용 중단되었습니다. 보기를 찾을 위치를 변경하려면AbstractController::Base.local_prefixes
를 재정의하십시오. (Pull Request)ActionView::Digestor#digest(name, format, finder, options = {})
가 사용 중단되었습니다. 인수는 대신 해시로 전달되어야 합니다. (Pull Request)
주요 변경 사항
render "foo/bar"
는 이제render file: "foo/bar"
가 아닌render template: "foo/bar"
로 확장됩니다. (Pull Request)폼 헬퍼가 더 이상 숨겨진 필드를 둘러싸는
<div>
요소를 생성하지 않습니다. (Pull Request)컬렉션으로 렌더링된 부분에 대한
#{partial_name}_iteration
이라는 특수 로컬 변수가 도입되었습니다. 이를 통해index
,size
,first?
및last?
메서드를 통해 현재 반복 상태에 액세스할 수 있습니다. (Pull Request)자리 표시자 I18n은
label
I18n과 동일한 규칙을 따릅니다. (Pull Request)
Action Mailer
자세한 변경 사항은 변경 로그를 참조하십시오.
사용 중단
메일러에서
*_path
헬퍼가 사용 중단되었습니다. 항상*_url
헬퍼를 사용하십시오. (Pull Request)deliver
/deliver!
가deliver_now
/deliver_now!
로 사용 중단되었습니다. (Pull Request)
주요 변경 사항
템플릿에서
link_to
및url_for
는 기본적으로 절대 URL을 생성합니다. 더 이상only_path: false
를 전달할 필요가 없습니다. (Commit)deliver_later
가 도입되어 애플리케이션의 큐에 작업을 예약하여 이메일을 비동기적으로 전송할 수 있습니다. (Pull Request)개발 환경 외부에서 메일러 미리보기를 활성화하는
show_previews
구성 옵션이 추가되었습니다. (Pull Request)
Active Record
자세한 변경 사항은 변경 로그를 참조하십시오.
제거
cache_attributes
와 관련 기능이 제거되었습니다. 모든 속성이 캐시됩니다. (Pull Request)사용 중단된 메서드
ActiveRecord::Base.quoted_locking_column
이 제거되었습니다. (Pull Request)사용 중단된
ActiveRecord::Migrator.proper_table_name
이 제거되었습니다. 대신ActiveRecord::Migration
인스턴스 메서드proper_table_name
을 사용하십시오. (Pull Request)사용되지 않는
:timestamp
유형이 제거되었습니다. 모든 경우에 투명하게:datetime
으로 별칭됩니다. Active Record 외부로 보내지는 열 유형(예: XML 직렬화)의 일관성 문제를 해결합니다. (Pull Request)
사용 중단
after_commit
및after_rollback
내부의 오류 삼킴이 사용 중단되었습니다. (Pull Request)has_many :through
연관 관계의 카운터 캐시 자동 감지에 대한 지원이 사용 중단되었습니다. 대신has_many
및belongs_to
연관 관계에 대해 수동으로 카운터 캐시를 지정해야 합니다. (Pull Request)Active Record 객체를
.find
또는.exists?
에 전달하는 것이 사용 중단되었습니다. 먼저 객체의id
를 호출하십시오. (Commit 1, 2)PostgreSQL 범위 값의 시작 부분을 제외하는 것에 대한 부분적인 지원이 사용 중단되었습니다. 현재 PostgreSQL 범위를 Ruby 범위에 매핑합니다. 이 변환은 Ruby 범위가 시작 부분을 제외하는 것을 지원하지 않기 때문에 완전히 가능하지 않습니다.
현재 솔루션인 시작 부분을 증가시키는 것은 올바르지 않으며 이제 사용 중단되었습니다.
succ
가 정의되지 않는 등의 이유로 증가 방법을 알 수 없는 하위 유형의 경우 시작 부분을 제외하는 범위에 대해ArgumentError
가 발생합니다. (Commit)연결 없이
DatabaseTasks.load_schema
를 호출하는 것이 사용 중단되었습니다. 대신DatabaseTasks.load_schema_current
를 사용하십시오. (Commit)sanitize_sql_hash_for_conditions
가 대체 없이 사용 중단되었습니다. 쿼리 및 업데이트를 수행하는 데Relation
을 사용하는 것이 선호되는 API입니다. (Commit):null
옵션을 전달하지 않고add_timestamps
및t.timestamps
가 사용 중단되었습니다. Rails 5에서 기본값이null: true
에서null: false
로 변경됩니다. (Pull Request)더 이상 필요하지 않으므로
Reflection#source_macro
가 대체 없이 사용 중단되었습니다. (Pull Request)serialized_attributes
가 대체 없이 사용 중단되었습니다. (Pull Request)열이 없는 경우
column_for_attribute
에서nil
을 반환하는 것이 사용 중단되었습니다. Rails 5.0에서는 null 객체를 반환할 것입니다. (Pull Request)인스턴스 상태에 따라 정의된 연관 관계(인수를 사용하는 범위로 정의된 연관 관계)에 대한
.joins
,.preload
및.eager_load
의 사용이 대체 없이 사용 중단되었습니다. (Commit)
주요 변경 사항
SchemaDumper
가force: :cascade
를 사용하여create_table
을 사용합니다. 이를 통해 외래키가 있는 경우에도 스키마를 다시 로드할 수 있습니다.단일 연관 관계에 대한
:required
옵션이 추가되어 연관 관계에 대한 존재 유효성 검사를 정의합니다. (Pull Request)ActiveRecord::Dirty
가 이제 변경 가능한 값의 현장 변경을 감지합니다. Active Record 모델의 직렬화된 속성이 변경되지 않은 경우 더 이상 저장되지 않습니다. 이는 문자열 열과 PostgreSQL의 JSON 열과 같은 다른 유형에서도 작동합니다. (Pull Requests 1, 2, 3)현재 환경의 데이터베이스를 비우는
db:purge
Rake 작업이 도입되었습니다. (Commit)ActiveRecord::Base#validate!
가 도입되어 레코드가 잘못된 경우ActiveRecord::RecordInvalid
를 발생시킵니다. (Pull Request)validate
가valid?
의 별칭으로 도입되었습니다. (Pull Request)touch
가 한 번에 여러 속성을 터치할 수 있습니다. (Pull Request)PostgreSQL 어댑터가 이제 PostgreSQL 9.4 이상에서
jsonb
데이터 유형을 지원합니다. (Pull Request)PostgreSQL 및 SQLite 어댑터가 더 이상 문자열 열에 기본 제한 255자를 추가하지 않습니다. (Pull Request)
PostgreSQL 어댑터에
citext
열 유형에 대한 지원이 추가되었습니다. (Pull Request)PostgreSQL 어댑터에 사용자 정의 범위 유형에 대한 지원이 추가되었습니다. (Commit)
sqlite3:///some/path
가 이제 절대 시스템 경로/some/path
를 가리킵니다. 상대 경로의 경우sqlite3:some/path
를 사용하십시오. (이전에는sqlite3:///some/path
가 상대 경로some/path
를 가리켰습니다. 이 동작은 Rails 4.1에서 사용 중단되었습니다.) (Pull Request)ActiveRecord::Base#pretty_print
가 모델을 예쁘게 출력하도록 추가되었습니다. (Pull Request)ActiveRecord::Base#reload
가 이제m = Model.find(m.id)
와 동일하게 동작하므로 사용자 정의SELECT
에서 추가 속성을 더 이상 유지하지 않습니다. (Pull Request)ActiveRecord::Base#reflections
가 이제 기호 키 대신 문자열 키를 반환합니다. (Pull Request)마이그레이션의
references
메서드에 외래키의 유형(예::uuid
)을 지정하는type
옵션이 추가되네, 번역을 계속하겠습니다.
Active Model
자세한 변경 사항은 변경 로그를 참조하십시오.
제거
- 대체 없이 사용 중단된
Validator#setup
이 제거되었습니다. (Pull Request)
사용 중단
reset_#{attribute}
가restore_#{attribute}
로 사용 중단되었습니다. (Pull Request)ActiveModel::Dirty#reset_changes
가clear_changes_information
로 사용 중단되었습니다. (Pull Request)
주요 변경 사항
validate
가valid?
의 별칭으로 도입되었습니다. (Pull Request)ActiveModel::Dirty
에 변경된(더러운) 속성을 이전 값으로 복원하는restore_attributes
메서드가 도입되었습니다. (Pull Request 1, 2)has_secure_password
가 더 이상 기본적으로 빈 암호(공백만 포함)를 허용하지 않습니다. (Pull Request)has_secure_password
가 이제 유효성 검사가 활성화된 경우 암호가 72자 미만인지 확인합니다. (Pull Request)
Active Support
자세한 변경 사항은 변경 로그를 참조하십시오.
제거
사용 중단된
Numeric#ago
,Numeric#until
,Numeric#since
,Numeric#from_now
가 제거되었습니다. (Commit)ActiveSupport::Callbacks
에 대한 문자열 기반 종료자가 제거되었습니다. (Pull Request)
사용 중단
대체 없이
Kernel#silence_stderr
,Kernel#capture
및Kernel#quietly
가 사용 중단되었습니다. (Pull Request)Class#superclass_delegating_accessor
가 사용 중단되었습니다. 대신Class#class_attribute
를 사용하십시오. (Pull Request)ActiveSupport::SafeBuffer#prepend!
가 사용 중단되었습니다.ActiveSupport::SafeBuffer#prepend
가 동일한 기능을 수행합니다. (Pull Request)
주요 변경 사항
테스트 케이스 실행 순서를 지정하는 새 구성 옵션
active_support.test_order
가 도입되었습니다. 이 옵션은 현재:sorted
로 기본 설정되어 있지만 Rails 5.0에서는:random
으로 변경될 것입니다. (Commit)Object#try
및Object#try!
에서 명시적 수신기 없이 블록을 사용할 수 있습니다. (Commit, Pull Request)travel_to
테스트 헬퍼가 이제usec
구성 요소를 0으로 잘라냅니다. (Commit)Object#with_options
에서 명시적 수신기 없이 블록을 사용할 수 있습니다. (Pull Request)단어 수로 문자열을 자르는
String#truncate_words
가 도입되었습니다. (Pull Request)키는 그대로 두고 해시의 값만 변경해야 하는 일반적인 패턴을 단순화하기 위해
Hash#transform_values
및Hash#transform_values!
가 추가되었습니다. (Pull Request)humanize
인플레이터 헬퍼가 이제 선행 밑줄을 제거합니다. (Commit)module ClassMethods
의 대안으로Concern#class_methods
와Kernel#concern
보일러플레이트를 피하는module Foo; extend ActiveSupport::Concern; end
가 도입되었습니다. (Commit)상수 자동 로드 및 재로드에 대한 새로운 가이드가 추가되었습니다.
크레딧
Rails에 많은 시간을 투자하여 안정적이고 강력한 프레임워크로 만든 모든 기여자의 전체 목록을 참조하십시오. 모든 분들께 박수를 보냅니다.