Ruby on Rails 4.1 릴리스 노트
Rails 4.1의 주요 기능:
- Spring 애플리케이션 프리로더
config/secrets.yml
- Action Pack 변형
- Action Mailer 미리보기
이 릴리스 노트에서는 주요 변경 사항만 다룹니다. 다양한 버그 수정 및 변경 사항에 대해서는 변경 로그를 참조하거나 GitHub의 Rails 메인 저장소에서 커밋 목록을 확인하세요.
Rails 4.1로 업그레이드하기
기존 애플리케이션을 업그레이드하는 경우, 업그레이드 전에 충분한 테스트 커버리지를 확보하는 것이 좋습니다. 또한 Rails 4.0으로 먼저 업그레이드하고 애플리케이션이 예상대로 작동하는지 확인한 후에 Rails 4.1로 업그레이드를 시도해야 합니다. Rails 4.0에서 Rails 4.1로 업그레이드할 때 주의해야 할 사항은 “Ruby on Rails 업그레이드” 가이드를 참조하세요.
주요 기능
Spring 애플리케이션 프리로더
Spring은 Rails 애플리케이션 프리로더입니다. 테스트, Rake 작업 또는 마이그레이션을 실행할 때마다 애플리케이션을 부팅할 필요가 없어 개발 속도를 높입니다.
새로운 Rails 4.1 애플리케이션은 “springified” 실행 파일과 함께 제공됩니다. 즉, bin/rails
와 bin/rake
가 자동으로 미리 로드된 Spring 환경을 활용합니다.
Rake 작업 실행:
$ bin/rake test:models
Rails 명령 실행:
$ bin/rails console
Spring 내부 살펴보기:
$ bin/spring status Spring is running: 1182 spring server | my_app | started 29 mins ago 3656 spring app | my_app | started 23 secs ago | test mode 3746 spring app | my_app | started 10 secs ago | development mode
Spring의 모든 기능을 보려면 Spring README를 참고하세요.
기존 애플리케이션을 이 기능으로 마이그레이션하는 방법은 “Ruby on Rails 업그레이드” 가이드를 참조하세요.
config/secrets.yml
Rails 4.1은 config
폴더에 새로운 secrets.yml
파일을 생성합니다. 기본적으로 이 파일에는 애플리케이션의 secret_key_base
가 포함되어 있지만, 외부 API에 대한 액세스 키와 같은 다른 비밀 정보도 저장할 수 있습니다.
이 파일에 추가된 비밀은 Rails.application.secrets
를 통해 접근할 수 있습니다. 예를 들어, 다음과 같은 config/secrets.yml
이 있는 경우:
development: secret_key_base: 3b7cd727ee24e8444053437c36cc66c3 some_api_key: SOMEKEY
Rails.application.secrets.some_api_key
는 개발 환경에서 SOMEKEY
를 반환합니다.
기존 애플리케이션을 이 기능으로 마이그레이션하는 방법은 “Ruby on Rails 업그레이드” 가이드를 참조하세요.
Action Pack 변형
우리는 종종 스마트폰, 태블릿 및 데스크톱 브라우저에 대해 다른 HTML/JSON/XML 템플릿을 렌더링하고 싶습니다. 변형은 이를 쉽게 처리할 수 있습니다.
요청 변형은 요청 형식의 특수화로, :tablet
, :phone
또는 :desktop
과 같은 형태입니다.
before_action
에서 변형을 설정할 수 있습니다:
request.variant = :tablet if request.user_agent =~ /iPad/
작업에서 형식과 마찬가지로 변형에 응답할 수 있습니다:
respond_to do |format| format.html do |html| html.tablet # app/views/projects/show.html+tablet.erb 렌더링 html.phone { extra_setup; render ... } end end
각 형식과 변형에 대한 별도의 템플릿을 제공합니다:
app/views/projects/show.html.erb app/views/projects/show.html+tablet.erb app/views/projects/show.html+phone.erb
인라인 구문을 사용하여 변형 정의를 간소화할 수도 있습니다:
respond_to do |format| format.js { render "trash" } format.html.phone { redirect_to progress_path } format.html.none { render "trash" } end
Action Mailer 미리보기
Action Mailer 미리보기는 이메일의 모습을 확인할 수 있는 특별한 URL을 통해 제공됩니다.
미리보기 클래스를 구현하고 메서드에서 확인하고 싶은 메일 객체를 반환합니다:
class NotifierPreview < ActionMailer::Preview def welcome Notifier.welcome(User.first) end end
http://localhost:3000/rails/mailers/notifier/welcome
에서 미리보기를 확인할 수 있으며, http://localhost:3000/rails/mailers
에서 모든 미리보기 목록을 볼 수 있습니다.
기본적으로 이러한 미리보기 클래스는 test/mailers/previews
에 있습니다. preview_path
옵션을 사용하여 이 위치를 구성할 수 있습니다.
자세한 내용은 문서를 참조하세요.
Active Record 열거형
데이터베이스의 정수 값에 매핑되는 열거형 속성을 선언할 수 있습니다. 이를 통해 이름으로 쿼리할 수 있습니다.
class Conversation < ActiveRecord::Base enum status: [ :active, :archived ] end conversation.archived! conversation.active? # => false conversation.status # => "archived" Conversation.archived # => 모든 보관된 대화 관계 Conversation.statuses # => { "active" => 0, "archived" => 1 }
자세한 내용은 문서를 참조하세요.
메시지 검증기
메시지 검증기를 사용하여 서명된 메시지를 생성하고 확인할 수 있습니다. 이는 remember-me 토큰 및 친구와 같은 중요한 데이터를 안전하게 전송하는 데 유용할 수 있습니다.
Rails.application.message_verifier
메서드는 secretkeybase와 지정된 메시지 검증기 이름을 사용하여 서명된 메시지를 생성하는 새 메시지 검증기를 반환합니다:
signed_token = Rails.application.message_verifier(:remember_me).generate(token) Rails.application.message_verifier(:remember_me).verify(signed_token) # => token Rails.application.message_verifier(:remember_me).verify(tampered_token) # raises ActiveSupport::MessageVerifier::InvalidSignature
Module#concerning
클래스 내에서 책임을 분리하는 자연스럽고 간단한 방법:
class Todo < ActiveRecord::Base concerning :EventTracking do included do has_many :events end def latest_event # ... end private def some_internal_method # ... end end end
이 예제는 EventTracking
모듈을 인라인으로 정의하고, ActiveSupport::Concern
으로 확장한 다음 Todo
클래스에 믹스인하는 것과 동일합니다.
자세한 내용과 사용 사례는 문서를 참조하세요.
원격 <script>
태그에서의 CSRF 보호
교차 사이트 요청 위조(CSRF) 보호가 이제 JavaScript 응답이 포함된 GET 요청에도 적용됩니다. 이를 통해 타사 사이트에서 중요한 데이터를 추출하려는 JavaScript URL을 참조하는 것을 방지할 수 있습니다.
이는 .js
URL을 호출하는 테스트가 CSRF 보호를 통과하지 못하게 됨을 의미합니다. 테스트를 명시적으로 XmlHttpRequest를 기대하도록 업그레이드하세요. post :create, format: :js
를 xhr :post, :create, format: :js
로 변경하세요.
Railties
자세한 변경 사항은 변경 로그를 참조하세요.
제거된 기능
update:application_controller
Rake 작업이 제거되었습니다.더 이상 사용되지 않는
Rails.application.railties.engines
가 제거되었습니다.Rails 구성에서 더 이상 사용되지 않는
threadsafe!
가 제거되었습니다.더 이상 사용되지 않는
ActiveRecord::Generators::ActiveModel#update_attributes
가ActiveRecord::Generators::ActiveModel#update
로 대체되었습니다.더 이상 사용되지 않는
config.whiny_nils
�션이 제거되었습니다.더 이상 사용되지 않는 테스트 실행 Rake 작업
rake test:uncommitted
및rake test:recent
가 제거되었습니다.
주요 변경 사항
Spring 애플리케이션 프리로더가 새로운 애플리케이션에 기본적으로 설치됩니다.
Gemfile
의 개발 그룹을 사용하므로 프로덕션에는 설치되지 않습니다. (Pull Request)테스트 실패에 대한 필터링되지 않은 백트레이스를 표시하는
BACKTRACE
환경 변수가 추가되었습니다. (Commit)MiddlewareStack#unshift
가 환경 구성에 노출되었습니다. (Pull Request)Application#message_verifier
메서드가 추가되어 메시지 검증기를 반환합니다. (Pull Request)test_help.rb
파일은db/schema.rb
(또는db/structure.sql
)와 데이터베이스를 자동으로 최신 상태로 유지합니다. 보류 중인 마이그레이션을 해결할 수 없는 경우 오류를 발생시킵니다.config.active_record.maintain_test_schema = false
로 옵트아웃할 수 있습니다. (Pull Request)Rails.gem_version
을 도입하여Gem::Version.new(Rails.version)
을 반환하는 편리한 메서드를 제공하여 버전 비교를 더 안정적으로 수행할 수 있습니다. (Pull Request)
Action Pack
자세한 변경 사항은 변경 로그를 참조하세요.
제거된 기능
통합 테스트에 대한 Rails 애플리케이션 폴백이 제거되었습니다.
ActionDispatch.test_app
을 대신 설정하세요.더 이상 사용되지 않는
page_cache_extension
구성이 제거되었습니다.더 이상 사용되지 않는
ActionController::RecordIdentifier
가 제거되었습니다. 대신ActionView::RecordIdentifier
를 사용하세요.Action Controller에서 더 이상 사용되지 않는 상수가 제거되었습니다:
제거된 상수 | 대체 상수 |
---|---|
ActionController::AbstractRequest | ActionDisp네, 번역을 계속하겠습니다. |
주요 변경 사항
protect_from_forgery
가 이제 교차 원본<script>
태그도 방지합니다. 테스트를xhr :get, :foo, format: :js
로 업데이트하세요.get :foo, format: :js
는 더 이상 작동하지 않습니다. (Pull Request)#url_for
가 배열 내부의 옵션 해시를 허용합니다. (Pull Request)session#fetch
메서드가 추가되었습니다. 이는 Hash#fetch와 유사하게 동작하지만, 반환된 값은 항상 세션에 저장됩니다. (Pull Request)Action View가 Action Pack에서 완전히 분리되었습니다. (Pull Request)
깊은 munge에 영향을 받은 키를 기록합니다. (Pull Request)
config.action_dispatch.perform_deep_munge
구성 옵션이 추가되어 CVE-2013-0155 보안 취약점을 해결하기 위해 사용된 params “deep munging"을 비활성화할 수 있습니다. (Pull Request)config.action_dispatch.cookies_serializer
구성 옵션이 추가되어 서명된 및 암호화된 쿠키 저장소에 대한 직렬화기를 지정할 수 있습니다. (Pull Request 1, Pull Request 2 / 자세한 내용)render :plain
,render :html
및render :body
가 추가되었습니다. (Pull Request / 자세한 내용)
Action Mailer
자세한 변경 사항은 변경 로그를 참조하세요.
주요 변경 사항
37 Signals mail_view 젬을 기반으로 한 메일러 미리보기 기능이 추가되었습니다. (Commit)
Action Mailer 메시지 생성을 계측합니다. 메시지 생성에 걸리는 시간이 로그에 기록됩니다. (Pull Request)
Active Record
자세한 변경 사항은 변경 로그를 참조하세요.
제거된 기능
SchemaCache
메서드primary_keys
,tables
,columns
및columns_hash
에 대한 더 이상 사용되지 않는 nil 전달이 제거되었습니다.ActiveRecord::Migrator#migrate
에서 더 이상 사용되지 않는 블록 필터가 제거되었습니다.ActiveRecord::Migrator
의 더 이상 사용되지 않는 문자열 생성자가 제거되었습니다.호출 가능한 객체를 전달하지 않는 더 이상 사용되지 않는
scope
사용이 제거되었습니다.:joinable
옵션이 있는begin_transaction
으로 대체된 더 이상 사용되지 않는transaction_joinable=
이 제거되었습니다.더 이상 사용되지 않는
decrement_open_transactions
가 제거되었습니다.더 이상 사용되지 않는
increment_open_transactions
가 제거되었습니다.더 이상 사용되지 않는
PostgreSQLAdapter#outside_transaction?
메서드가 제거되었습니다. 대신#transaction_open?
을 사용할 수 있습니다.더 이상 사용되지 않는
ActiveRecord::Fixtures.find_table_name
이ActiveRecord::Fixtures.default_fixture_model_name
로 대체되었습니다.SchemaStatements
에서 더 이상 사용되지 않는columns_for_remove
가 제거되었습니다.더 이상 사용되지 않는
SchemaStatements#distinct
가 제거되었습니다.ActiveRecord::TestCase
가 Rails 테스트 스위트로 이동되었습니다. 이 클래스는 더 이상 공개되지 않으며 내부 Rails 테스트에만 사용됩니다.연관 관계의
:restrict
옵션에 대한 지원이 제거되었습니다.연관 관계에서
:delete_sql
,:insert_sql
,:finder_sql
및:counter_sql
옵션에 대한 지원이 제거되었습니다.Column에서 더 이상 사용되지 않는
type_cast_code
메서드가 제거되었습니다.더 이상 사용되지 않는
ActiveRecord::Base#connection
메서드가 제거되었습니다. 클래스를 통해 액세스하세요.auto_explain_threshold_in_seconds
에 대한 deprecation 경고가 제거되었습니다.Relation#count
에서 더 이상 사용되지 않는:distinct
옵션이 제거되었습니다.더 이상 사용되지 않는
partial_updates
,partial_updates?
및partial_updates=
메서드가 제거되었습니다.더 이상 사용되지 않는
scoped
메서드가 제거되었습니다.더 이상 사용되지 않는
default_scopes?
메서드가 제거되었습니다.4.0에서 더 이상 사용되지 않던 암시적 조인 참조가 제거되었습니다.
activerecord-deprecated_finders
젬에 대한 종속성이 제거되었습니다. 자세한 내용은 젬 README를 참조하세요.implicit_readonly
의 사용이 제거되었습니다. 명시적으로readonly
메서드를 사용하여 레코드를 읽기 전용으로 표시하세요. (Pull Request)
더 이상 사용되지 않는 기능
quoted_locking_column
메서드가 더 이상 사용되지 않습니다. 이 메서드는 어디에서도 사용되지 않습니다.ConnectionAdapters::SchemaStatements#distinct
가 더 이상 사용되지 않습니다. 내부적으로 더 이상 사용되지 않습니다. (Pull Request)rake db:test:*
작업이 더 이상 사용되지 않습니다. 테스트 데이터베이스가 이제 자동으로 유지됩니다. Railties 릴리스 노트 참조. (Pull Request)더 이상 사용되지 않는
ActiveRecord::Base.symbolized_base_class
및ActiveRecord::Base.symbolized_sti_name
이 대체 없이 제거되었습니다. (Commit)
주요 변경 사항
- 기본 범위가 더 이상 연쇄된 조건에 의해 재정의되지 않습니다.
이 변경 전에는 모델에 default_scope
를 정의하면 동일한 필드에 대한 연쇄된 조건에 의해 재정의되었습니다. 이제는 다른 범위와 마찬가지로 병합됩니다.
자세한 내용
ActiveRecord::Base.to_param
이 추가되어 모델의 속성 또는 메서드에서 "예쁜” URL을 파생할 수 있습니다. (Pull Request)ActiveRecord::Base.no_touching
이 추가되어 모델의 터치를 무시할 수 있습니다. (Pull Request)MysqlAdapter
와Mysql2Adapter
의 부울 유형 캐스팅이 통일되었습니다.type_cast
는true
에 대해1
을,false
에 대해0
을 반환합니다. (Pull Request).unscope
가 이제default_scope
에 지정된 조건을 제거합니다. (Commit)기존 명명된 where 조건을 덮어쓰는
ActiveRecord::QueryMethods#rewhere
가 추가되었습니다. (Commit)ActiveRecord::Base#cache_key
가 선택적 타임스탬프 속성 목록을 허용하도록 확장되었습니다. 이 중 가장 높은 값이 사용됩니다. (Commit)데이터베이스의 정수 값에 매핑되는 열거형 속성을 선언하는
ActiveRecord::Base#enum
이 추가되었습니다. (Commit)JSON 값이 쓰여질 때 유형이 캐스팅되어 데이터베이스에서 읽을 때와 일관된 값이 유지됩니다. (Pull Request)
hstore 값이 쓰여질 때 유형이 캐스팅되어 데이터베이스에서 읽을 때와 일관된 값이 유지됩니다. (Commit)
서드파티 생성기에서
next_migration_number
에 액세스할 수 있습니다. (Pull Request)update_attributes
를 호출할 때 인수가nil
이면ArgumentError
가 발생합니다. 더 구체적으로는 전달된 인수가stringify_keys
에 응답하지 않으면 오류가 발생합니다. (Pull Request)CollectionAssociation#first
/#last
(예:has_many
)가 전체 컬렉션을 로드하는 대신LIMIT
된 쿼리를 사용하여 결과를 가져옵니다. (Pull Request)액티브 레코드 모델 클래스의
inspect
가 새 연결을 시작하지 않습니다. 즉, 데이터베이스가 없는 경우inspect
를 호출해도 예외가 발생하지 않습니다. (Pull Request)count
에 대한 열 제한이 제거되었습니다. SQL이 잘못된 경우 데이터베이스에서 오류를 발생시킵니다. (Pull Request)Rails는 이제 역관계를 자동으로 감지합니다.
:inverse_of
옵션을 연관 관계에 설정하지 않으면 Active Record가 휴리스틱을 기반으로 역관계를 추측합니다. (Pull Request)Active Record 관계에서 별칭된 속성을 처리합니다. 심볼 키를 사용할 때 Active Record는 데이터베이스에서 사용되는 실제 열 이름으로 별칭된네, 번역을 계속하겠습니다.
속성 이름을 변환합니다. (Pull Request)
픽스처 파일의 ERB가 더 이상 메인 객체의 컨텍스트에서 평가되지 않습니다. 여러 픽스처에서 사용되는 헬퍼 메서드는
ActiveRecord::FixtureSet.context_class
에 포함된 모듈에 정의해야 합니다. (Pull Request)RAILS_ENV이 명시적으로 지정된 경우 테스트 데이터베이스를 생성하거나 삭제하지 않습니다. (Pull Request)
Relation
에 더 이상#map!
및#delete_if
와 같은 변이 메서드가 없습니다. 이러한 메서드를 사용하려면 먼저#to_a
를 호출하여 배열로 변환해야 합니다. (Pull Request)find_in_batches
,find_each
,Result#each
및Enumerable#index_by
가 이제 크기를 계산할 수 있는Enumerator
를 반환합니다. (Pull Request)scope
,enum
및 연관 관계에서 “위험한” 이름 충돌이 발생하면 오류가 발생합니다. (Pull Request, Pull Request)second
부터fifth
까지의 메서드가first
파인더와 같이 동작합니다. (Pull Request)touch
가after_commit
및after_rollback
콜백을 발생시킵니다. (Pull Request)sqlite >= 3.8.0
에 대한 부분 인덱스 지원이 추가되었습니다. (Pull Request)change_column_null
가 되돌릴 수 있게 되었습니다. (Commit)마이그레이션 후 스키마 덤프를 비활성화하는 플래그가 추가되었습니다. 새 애플리케이션의 프로덕션 환경에서는 기본적으로
false
로 설정됩니다. (Pull Request)
Active Model
자세한 변경 사항은 변경 로그를 참조하세요.
더 이상 사용되지 않는 기능
Validator#setup
이 더 이상 사용되지 않습니다. 이제 검증기의 생성자에서 수동으로 수행해야 합니다. (Commit)
주요 변경 사항
ActiveModel::Dirty
에reset_changes
및changes_applied
API 메서드가 추가되어 변경 상태를 제어할 수 있습니다.여러 컨텍스트에서 유효성 검사를 정의할 수 있습니다. (Pull Request)
attribute_changed?
가 이제 속성이:from
및/또는:to
지정된 값으로 변경되었는지 확인하는 해시를 허용합니다. (Pull Request)
Active Support
자세한 변경 사항은 변경 로그를 참조하세요.
제거된 기능
MultiJSON
종속성이 제거되었습니다. 결과적으로ActiveSupport::JSON.decode
는 더 이상MultiJSON
에 대한 옵션 해시를 허용하지 않습니다. (Pull Request / 자세한 내용)사용자 정의 객체를 JSON으로 인코딩하는 데 사용되던
encode_json
훅에 대한 지원이 제거되었습니다. 이 기능은 activesupport-json_encoder 젬으로 추출되었습니다. (관련 Pull Request / 자세한 내용)더 이상 사용되지 않는
ActiveSupport::JSON::Variable
이 제거되었습니다.더 이상 사용되지 않는
String#encoding_aware?
코어 확장(core_ext/string/encoding
)이 제거되었습니다.더 이상 사용되지 않는
Module#local_constant_names
가Module#local_constants
로 대체되었습니다.더 이상 사용되지 않는
DateTime.local_offset
이DateTime.civil_from_format
으로 대체되었습니다.더 이상 사용되지 않는
Logger
코어 확장(core_ext/logger.rb
)이 제거되었습니다.더 이상 사용되지 않는
Time#time_with_datetime_fallback
,Time#utc_time
및Time#local_time
이Time#utc
및Time#local
로 대체되었습니다.더 이상 사용되지 않는
Hash#diff
가 제거되었습니다.더 이상 사용되지 않는
Date#to_time_in_current_zone
이Date#in_time_zone
으로 대체되었습니다.더 이상 사용되지 않는
Proc#bind
가 제거되었습니다.더 이상 사용되지 않는
Array#uniq_by
및Array#uniq_by!
가 제거되었습니다. 대신 기본Array#uniq
및Array#uniq!
를 사용하세요.더 이상 사용되지 않는
ActiveSupport::BasicObject
가 제거되었습니다. 대신ActiveSupport::ProxyObject
를 사용하세요.더 이상 사용되지 않는
BufferedLogger
가 제거되었습니다. 대신ActiveSupport::Logger
를 사용하세요.더 이상 사용되지 않는
assert_present
및assert_blank
메서드가 제거되었습니다. 대신assert object.blank?
및assert object.present?
를 사용하세요.필터 객체의 더 이상 사용되지 않는
#filter
메서드가 제거되었습니다. 대신 해당 메서드(예: 이전 필터의#before
)를 사용하세요.기본 불규칙 변화에서 “cow” => “kine” 변화가 제거되었습니다. (Commit)
더 이상 사용되지 않는 기능
Numeric#{ago,until,since,from_now}
가 더 이상 사용되지 않습니다. 사용자는 명시적으로 AS::Duration으로 변환해야 합니다. 예:5.ago
=>5.seconds.ago
(Pull Request)active_support/core_ext/object/to_json
에 대한 require 경로가 더 이상 사용되지 않습니다. 대신active_support/core_ext/object/json
을 require하세요. (Pull Request)ActiveSupport::JSON::Encoding::CircularReferenceError
가 더 이상 사용되지 않습니다. 이 기능은 activesupport-json_encoder 젬으로 추출되었습니다. (Pull Request / 자세한 내용)ActiveSupport.encode_big_decimal_as_string
옵션이 더 이상 사용되지 않습니다. 이 기능은 activesupport-json_encoder 젬으로 추출되었습니다. (Pull Request / 자세한 내용)사용자 정의
BigDecimal
직렬화가 더 이상 사용되지 않습니다. (Pull Request)
주요 변경 사항
ActiveSupport
의 JSON 인코더가 JSON 젬을 활용하도록 재작성되어 순수 Ruby 사용자 정의 인코딩을 수행하지 않습니다. (Pull Request / 자세한 내용)JSON 젬과의 호환성이 향상되었습니다. (Pull Request / 자세한 내용)
ActiveSupport::Testing::TimeHelpers#travel
및#travel_to
가 추가되었습니다. 이 메서드는Time.now
및Date.today
를 스텁하여 현재 시간을 지정된 시간 또는 기간으로 변경합니다.ActiveSupport::Testing::TimeHelpers#travel_back
이 추가되었습니다. 이 메서드는travel
및travel_to
에 의해 추가된 스텁을 제거하여 현재 시간을 원래 상태로 되돌립니다. (Pull Request)Numeric#in_milliseconds
가 추가되었습니다. 예:1.hour.in_milliseconds
와 같이 JavaScript의getTime()
과 같은 함수에 전달할 수 있습니다. (Commit)Date#middle_of_day
,DateTime#middle_of_day
및Time#middle_of_day
메서드가 추가되었습니다.midday
,noon
,at_midday
,at_noon
및at_middle_of_day
도 별칭으로 추가되었습니다. (Pull Request)날짜 범위를 생성하는
Date#all_week/month/quarter/year
가 추가되었습니다. (Pull Request)Time.zone.yesterday
및Time.zone.tomorrow
가 추가되었습니다. (Pull Request)String#remove(pattern)
이 추가되어String#gsub(pattern,'')
의 일반적인 패턴에 대한 간단한 단축키를 제공합니다. (Commit)Hash#compact
및Hash#compact!
가 추가되어 nil 값이 있는 항목을 해시에서 제거할 수 있습니다. (Pull Request)blank?
및present?
가 싱글톤을 반환하도록 변경되었습니다. (Commit)새로운
I18n.enforce_available_locales
구성의 기본값이true
로 설정되어I18n
이available_locales
목록에 선언된 모든 로케일을 사용하도록 강제합니다. (Pull Request)Module#concerning
이 도입되어 클래스 내에서 책임을 자연스럽고 간단하게 분리할 수 있습니다. ([Commit](https://github.com/rails/rails/commit/1eee0ca네, 번역을 계속하겠습니다.Object#presence_in
이 추가되어 허용 목록에 값을 추가하는 것을 간소화합니다. (Commit)
크레딧
Rails에 많은 시간을 투자하여 안정적이고 견고한 프레임워크로 만든 많은 기여자들의 전체 목록을 참조하세요. 모든 분들께 박수를 보냅니다.