edge
더 많은 정보: rubyonrails.org에서 확인하세요: 더 많은 Ruby on Rails

루비 온 레일즈 4.1 릴리스 노트

Rails 4.1의 주요 기능:

이 릴리스 노트는 주요 변경 사항만 다룹니다. 다양한 버그 수정 및 변경 사항에 대해서는 변경 로그를 참조하거나 GitHub의 주요 Rails 저장소의 커밋 목록을 확인하십시오.

1 Rails 4.1로 업그레이드하기

기존 애플리케이션을 업그레이드하는 경우 테스트 커버리지가 좋은 것이 좋습니다. 또한, Rails 4.1로 업데이트하기 전에 Rails 4.0으로 먼저 업그레이드하고 애플리케이션이 예상대로 실행되는지 확인하십시오. 업그레이드할 때 주의해야 할 사항은 Ruby on Rails 업그레이드 가이드에서 확인할 수 있습니다.

2 주요 기능

2.1 Spring 애플리케이션 프리로더

Spring은 Rails 애플리케이션 프리로더입니다. 테스트, rake 작업 또는 마이그레이션을 실행할 때마다 애플리케이션을 매번 부팅할 필요 없이 백그라운드에서 애플리케이션을 실행하여 개발 속도를 높입니다.

새로운 Rails 4.1 애플리케이션은 "springified" binstub과 함께 제공됩니다. 이는 bin/railsbin/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 README를 참조하십시오.

기존 애플리케이션을 이 기능을 사용하도록 마이그레이션하는 방법은 Ruby on Rails 업그레이드 가이드를 참조하십시오.

2.2 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_keySOMEKEY를 반환합니다.

기존 애플리케이션을 이 기능을 사용하도록 마이그레이션하는 방법은 Ruby on Rails 업그레이드 가이드를 참조하십시오.

2.3 액션 팩 변형

우리는 종종 전화기, 태블릿 및 데스크톱 브라우저에 대해 다른 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

2.4 액션 메일러 미리보기

액션 메일러 미리보기는 이메일이 어떻게 보이는지 확인하기 위해 특정 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 옵션을 사용하여 이를 구성할 수 있습니다.

자세한 내용은 문서 를 참조하세요.

2.5 액티브 레코드 열거형

데이터베이스에서 정수로 매핑되지만 이름으로 쿼리할 수 있는 열거형 속성을 선언합니다.

class Conversation < ActiveRecord::Base
  enum status: [ :active, :archived ]
end

conversation.archived!
conversation.active? # => false
conversation.status  # => "archived"

Conversation.archived # => 모든 아카이브된 Conversation을 위한 Relation

Conversation.statuses # => { "active" => 0, "archived" => 1 }

자세한 내용은 문서 를 참조하세요.

2.6 메시지 검증기

메시지 검증기는 서명된 메시지를 생성하고 검증하는 데 사용될 수 있습니다. 이는 기억하기 토큰 및 친구와 같은 민감한 데이터를 안전하게 전송하는 데 유용합니다.

Rails.application.message_verifier 메서드는 secret_key_base와 주어진 메시지 검증기 이름에서 파생된 키로 메시지에 서명하는 새로운 메시지 검증기를 반환합니다:

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)
# ActiveSupport::MessageVerifier::InvalidSignature 예외 발생

2.7 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 클래스에 혼합하는 것과 동일합니다.

자세한 내용은 문서 를 참조하세요.

2.8 원격 <script> 태그로부터의 CSRF 보호

크로스 사이트 요청 위조(CSRF) 보호는 이제 JavaScript 응답을 가진 GET 요청도 포함합니다. 이는 제3자 사이트가 JavaScript URL을 참조하고 실행하여 민감한 데이터를 추출하려는 것을 방지합니다.

이는 .js URL을 사용하는 테스트 중 CSRF 보호가 실패하게 됩니다. 테스트를 XmlHttpRequests를 예상하는 것으로 명시적으로 업그레이드하세요. post :create, format: :js 대신에 명시적인 xhr :post, :create, format: :js로 전환하세요.

3 Railties

자세한 변경 사항은 변경 로그 를 참조하세요.

3.1 삭제 사항

  • update:application_controller rake 작업이 제거되었습니다.

  • 폐기된 Rails.application.railties.engines가 제거되었습니다.

  • 폐기된 threadsafe!가 Rails Config에서 제거되었습니다.

  • 폐기된 ActiveRecord::Generators::ActiveModel#update_attributesActiveRecord::Generators::ActiveModel#update를 사용하도록 대체되었습니다.

  • 폐기된 config.whiny_nils 옵션이 제거되었습니다.

  • 테스트 실행을 위한 폐기된 rake 작업인 rake test:uncommittedrake test:recent가 제거되었습니다.

3.2 주목할만한 변경 사항

  • Spring 애플리케이션 프리로더가 새로운 애플리케이션에 기본으로 설치됩니다. 이는 Gemfile의 개발 그룹을 사용하므로 프로덕션에는 설치되지 않습니다. (풀 리퀘스트)

  • 테스트 실패에 대한 필터되지 않은 백트레이스를 보여주기 위한 BACKTRACE 환경 변수가 추가되었습니다. (커밋)

  • 환경 구성에서 MiddlewareStack#unshift를 노출시켰습니다. (풀 리퀘스트)

  • 메시지 검증기를 반환하는 Application#message_verifier 메서드가 추가되었습니다. (풀 리퀘스트)

  • 기본 생성된 테스트 도우미에서 필요한 test_help.rb 파일은 db/schema.rb (또는 db/structure.sql)와 테스트 데이터베이스를 자동으로 최신 상태로 유지합니다. 스키마를 다시로드하여 보류 중인 마이그레이션을 모두 해결하지 못하는 경우 오류가 발생합니다. config.active_record.maintain_test_schema = false로 설정하여 비활성화할 수 있습니다. (풀 리퀘스트)

  • Rails.gem_version를 소개하여 Gem::Version.new(Rails.version)을 반환하는 편리한 메소드로 소개하며, 버전 비교를 더 신뢰할 수 있는 방법을 제안합니다. (Pull Request)

4 Action Pack

자세한 변경 사항은 Changelog를 참조하십시오.

4.1 삭제 사항

  • 통합 테스트를 위한 더 이상 사용되지 않는 Rails 애플리케이션 대체 기능을 제거하고 대신 ActionDispatch.test_app을 설정하십시오.

  • 더 이상 사용되지 않는 page_cache_extension 구성을 제거하십시오.

  • 더 이상 사용되지 않는 ActionController::RecordIdentifier를 제거하고 대신 ActionView::RecordIdentifier를 사용하십시오.

  • Action Controller에서 더 이상 사용되지 않는 상수를 제거하십시오:

제거된 항목 후계자
ActionController::AbstractRequest ActionDispatch::Request
ActionController::Request ActionDispatch::Request
ActionController::AbstractResponse ActionDispatch::Response
ActionController::Response ActionDispatch::Response
ActionController::Routing ActionDispatch::Routing
ActionController::Integration ActionDispatch::Integration
ActionController::IntegrationTest ActionDispatch::IntegrationTest

4.2 주목할 만한 변경 사항

  • 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)

  • 보안 취약점 CVE-2013-0155를 해결하기 위해 사용된 params "깊은 munging"에서 제외되기 위한 새로운 구성 옵션 config.action_dispatch.perform_deep_munge을 추가하였습니다. (Pull Request)

  • 서명된 및 암호화된 쿠키 저장소에 대한 직렬화기를 지정하기 위한 새로운 구성 옵션 config.action_dispatch.cookies_serializer를 추가하였습니다. (Pull Requests 1, 2 / 자세한 내용)

  • render :plain, render :htmlrender :body를 추가하였습니다. (Pull Request / 자세한 내용)

5 Action Mailer

자세한 변경 사항은 Changelog를 참조하십시오.

5.1 주목할 만한 변경 사항

  • 37 Signals mail_view gem을 기반으로 한 메일러 미리보기 기능을 추가하였습니다. (Commit)

  • Action Mailer 메시지 생성에 대한 계측을 수행합니다. 메시지 생성에 걸리는 시간이 로그에 기록됩니다. (Pull Request)

6 Active Record

자세한 변경 사항은 Changelog를 참조하십시오.

6.1 삭제 사항

  • 다음 SchemaCache 메소드에 대한 nil 전달을 더 이상 지원하지 않습니다: primary_keys, tables, columnscolumns_hash.

  • ActiveRecord::Migrator#migrate에서 더 이상 사용되지 않는 블록 필터를 제거하였습니다.

  • ActiveRecord::Migrator에서 더 이상 사용되지 않는 String 생성자를 제거하였습니다.

  • 호출 가능한 객체를 전달하지 않고 scope를 사용하는 것은 더 이상 지원되지 않습니다.

  • transaction_joinable=begin_transaction:joinable 옵션을 사용하는 것으로 대체하였습니다.

  • decrement_open_transactions를 제거하였습니다.

  • increment_open_transactions를 제거하였습니다.

  • PostgreSQLAdapter#outside_transaction? 메소드를 제거하였습니다. 대신 #transaction_open?을 사용하십시오.

  • ActiveRecord::Fixtures.find_table_nameActiveRecord::Fixtures.default_fixture_model_name으로 대체하였습니다.

  • SchemaStatements에서 columns_for_remove를 제거하였습니다.

  • SchemaStatements#distinct를 제거하였습니다.

  • ActiveRecord::TestCase를 Rails 테스트 스위트로 이동하였습니다. 이 클래스는 더 이상 공개되지 않으며 내부적으로만 사용됩니다.

  • 연관성에서 :dependent에 대한 더 이상 지원되지 않는 :restrict 옵션을 제거하였습니다.

  • 연관성에서 더 이상 지원되지 않는 :delete_sql, :insert_sql, :finder_sql:counter_sql 옵션을 제거하였습니다.

  • Column에서 더 이상 사용되지 않는 type_cast_code 메소드를 제거하였습니다.

  • ActiveRecord::Base#connection 메소드를 제거하였습니다. 클래스를 통해 액세스하십시오.

  • auto_explain_threshold_in_seconds에 대한 사용 중지 경고를 제거하였습니다.

  • Relation#count에서 더 이상 지원되지 않는 :distinct 옵션을 제거하였습니다.

  • partial_updates, partial_updates?partial_updates= 메소드를 제거하였습니다.

  • scoped 메소드를 제거하였습니다.

  • default_scopes? 메소드를 제거하였습니다.

  • 4.0에서 사용 중지된 암묵적 조인 참조를 제거하였습니다.

  • activerecord-deprecated_finders를 종속성에서 제거했습니다. 자세한 내용은 젬 README를 참조하세요.

  • implicit_readonly의 사용을 제거했습니다. 레코드를 readonly로 표시하려면 명시적으로 readonly 메서드를 사용하세요. (Pull Request)

6.2 폐기 예정 기능

  • 어디에서도 사용되지 않는 quoted_locking_column 메서드를 폐기 예정으로 표시했습니다.

  • 내부에서 더 이상 사용되지 않는 ConnectionAdapters::SchemaStatements#distinct를 폐기 예정으로 표시했습니다. (Pull Request)

  • 테스트 데이터베이스가 이제 자동으로 유지되므로 rake db:test:* 작업을 폐기 예정으로 표시했습니다. railties 릴리스 노트를 참조하세요. (Pull Request)

  • 대체할 내용이 없는 ActiveRecord::Base.symbolized_base_classActiveRecord::Base.symbolized_sti_name을 사용하지 않는 상태로 폐기 예정으로 표시했습니다. Commit

6.3 주목할만한 변경 사항

  • 연결된 조건으로 인해 기본 범위가 더 이상 재정의되지 않습니다.

이 변경 전에 모델에서 default_scope를 정의하면 동일한 필드의 연결된 조건에 의해 재정의되었습니다. 이제 다른 범위와 마찬가지로 병합됩니다. 자세한 내용.

  • ActiveRecord::Base.to_param을 추가하여 모델의 속성 또는 메서드에서 파생된 편리한 "예쁜" URL을 지원합니다. (Pull Request)

  • ActiveRecord::Base.no_touching을 추가하여 모델에서 터치를 무시할 수 있도록 합니다. (Pull Request)

  • MysqlAdapterMysql2Adapter에 대해 불리언 유형 캐스팅을 통일했습니다. type_casttrue에 대해 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를 throw합니다. 구체적으로, 전달된 인수가 stringify_keys에 응답하지 않으면 오류가 throw됩니다. (Pull Request)

  • CollectionAssociation#first/#last (예: has_many)는 전체 컬렉션을 로드하는 대신 LIMIT된 쿼리를 사용하여 결과를 가져옵니다. (Pull Request)

  • Active Record 모델 클래스의 inspect는 새로운 연결을 초기화하지 않습니다. 따라서 데이터베이스가 없을 때 inspect를 호출하면 더 이상 예외가 발생하지 않습니다. (Pull Request)

  • count에 대한 열 제한을 제거하고 SQL이 잘못된 경우 데이터베이스에서 예외를 발생시킵니다. (Pull Request)

  • Rails는 이제 역 관계를 자동으로 감지합니다. 연관성에 :inverse_of 옵션을 설정하지 않으면 Active Record는 휴리스틱을 기반으로 역 관계를 추측합니다. (Pull Request)

  • ActiveRecord::Relation에서 별칭이 지정된 속성을 처리합니다. 심볼 키를 사용할 때 ActiveRecord는 이제 별칭이 지정된 속성 이름을 데이터베이스에서 실제로 사용되는 열 이름으로 변환합니다. (Pull Request)

  • 픽스처 파일의 ERB는 더 이상 주 객체의 컨텍스트에서 평가되지 않습니다. 여러 픽스처에서 사용되는 도우미 메서드는 ActiveRecord::FixtureSet.context_class에 포함된 모듈에 정의되어야 합니다. (Pull Request)

  • RAILS_ENV가 명시적으로 지정된 경우 테스트 데이터베이스를 생성하거나 삭제하지 않습니다. (Pull Request)

  • Relation은 이제 #map!#delete_if와 같은 변경자 메서드를 갖지 않습니다. 이러한 메서드를 사용하기 전에 #to_a를 호출하여 Array로 변환하세요. (Pull Request)

  • find_in_batches, find_each, Result#eachEnumerable#index_by는 이제 크기를 계산할 수 있는 Enumerator를 반환합니다. (풀 리퀘스트)

  • scope, enum 및 연관 관계는 이제 "위험한" 이름 충돌 시 예외를 발생시킵니다. (풀 리퀘스트, 풀 리퀘스트)

  • second부터 fifth 메서드는 first 검색기와 같은 역할을 합니다. (풀 리퀘스트)

  • touchafter_commitafter_rollback 콜백을 실행하도록 변경되었습니다. (풀 리퀘스트)

  • sqlite >= 3.8.0에서 부분 인덱스를 사용할 수 있도록 변경되었습니다. (풀 리퀘스트)

  • change_column_null을 되돌릴 수 있도록 변경되었습니다. (커밋)

  • 마이그레이션 후 스키마 덤프를 비활성화하는 플래그가 추가되었습니다. 이는 새로운 애플리케이션의 프로덕션 환경에서 기본적으로 false로 설정됩니다. (풀 리퀘스트)

7 Active Model

자세한 변경 사항은 Changelog를 참조하십시오.

7.1 폐기 사항

  • Validator#setup을 폐기하였습니다. 이제 검증기의 생성자에서 수동으로 수행해야 합니다. (커밋)

7.2 주요 변경 사항

  • ActiveModel::Dirtyreset_changeschanges_applied라는 새로운 API 메서드가 추가되었습니다. 이들은 변경 상태를 제어합니다.

  • 검증을 정의할 때 여러 컨텍스트를 지정할 수 있는 기능이 추가되었습니다. (풀 리퀘스트)

  • attribute_changed?는 이제 속성이 주어진 값으로 :from 및/또는 :to 변경되었는지 확인하기 위해 해시를 인수로 받을 수 있습니다. (풀 리퀘스트)

8 Active Support

자세한 변경 사항은 Changelog를 참조하십시오.

8.1 제거 사항

  • MultiJSON 종속성이 제거되었습니다. 따라서 ActiveSupport::JSON.decode는 이제 MultiJSON에 대한 옵션 해시를 더 이상 허용하지 않습니다. (풀 리퀘스트 / 자세한 내용)

  • JSON으로 사용자 정의 객체를 인코딩하기 위해 사용되는 encode_json 후크가 제거되었습니다. 이 기능은 activesupport-json_encoder 젬으로 분리되었습니다. (관련 풀 리퀘스트 / 자세한 내용)

  • 대체 없이 폐기된 ActiveSupport::JSON::Variable이 제거되었습니다.

  • 대체 없이 폐기된 String#encoding_aware? 코어 익스텐션(core_ext/string/encoding)이 제거되었습니다.

  • 대체 없이 폐기된 Module#local_constant_namesModule#local_constants로 대체되었습니다.

  • 대체 없이 폐기된 DateTime.local_offsetDateTime.civil_from_format으로 대체되었습니다.

  • 대체 없이 폐기된 Logger 코어 익스텐션(core_ext/logger.rb)이 제거되었습니다.

  • 대체 없이 폐기된 Time#time_with_datetime_fallback, Time#utc_timeTime#local_timeTime#utcTime#local로 대체되었습니다.

  • 대체 없이 폐기된 Hash#diff가 제거되었습니다.

  • 대체 없이 폐기된 Date#to_time_in_current_zoneDate#in_time_zone으로 대체되었습니다.

  • 대체 없이 폐기된 Proc#bind가 제거되었습니다.

  • 대체 없이 폐기된 Array#uniq_byArray#uniq_by!가 기본 Array#uniqArray#uniq!로 대체되었습니다.

  • 대체 없이 폐기된 ActiveSupport::BasicObjectActiveSupport::ProxyObject로 대체되었습니다.

  • 대체 없이 폐기된 BufferedLoggerActiveSupport::Logger로 대체되었습니다.

  • 대체 없이 폐기된 assert_presentassert_blank 메서드가 assert object.blank?assert object.present?로 대체되었습니다.

  • 필터 객체의 #filter 메서드가 제거되었으며 대응하는 메서드를 사용하십시오 (예: 전처리 필터에는 #before를 사용하십시오).

  • 기본 변형에서 'cow' => 'kine' 불규칙한 변형이 제거되었습니다. (커밋)

8.2 폐기 사항

8.3 주요 변경 사항

  • ActiveSupport의 JSON 인코더가 순수 루비에서 사용자 정의 인코딩을 수행하는 대신 JSON 젬을 활용하도록 다시 작성되었습니다. (풀 리퀘스트 / 자세한 내용)

  • JSON 젬과의 호환성이 개선되었습니다. (풀 리퀘스트 / 자세한 내용)

  • ActiveSupport::Testing::TimeHelpers#travel#travel_to가 추가되었습니다. 이 메서드들은 Time.nowDate.today을 stub하여 현재 시간을 주어진 시간이나 기간으로 변경합니다.

  • ActiveSupport::Testing::TimeHelpers#travel_back를 추가했습니다. 이 메소드는 traveltravel_to에 의해 추가된 스텁을 제거하여 현재 시간을 원래 상태로 돌려줍니다. (Pull Request)

  • Numeric#in_milliseconds를 추가했습니다. 예를 들어 1.hour.in_milliseconds와 같이 사용하여 getTime()과 같은 JavaScript 함수에 전달할 수 있습니다. (Commit)

  • Date#middle_of_day, DateTime#middle_of_dayTime#middle_of_day 메소드를 추가했습니다. 또한 midday, noon, at_midday, at_noonat_middle_of_day를 별칭으로 추가했습니다. (Pull Request)

  • Date#all_week/month/quarter/year를 추가하여 날짜 범위를 생성할 수 있도록 했습니다. (Pull Request)

  • Time.zone.yesterdayTime.zone.tomorrow를 추가했습니다. (Pull Request)

  • String#remove(pattern)을 추가하여 String#gsub(pattern,'')의 일반적인 패턴을 간단하게 사용할 수 있도록 했습니다. (Commit)

  • Hash#compactHash#compact!를 추가하여 해시에서 값이 nil인 항목을 제거할 수 있도록 했습니다. (Pull Request)

  • blank?present?는 싱글톤을 반환하도록 수정되었습니다. (Commit)

  • 새로운 I18n.enforce_available_locales 구성을 기본값으로 true로 설정하여 I18n이 전달된 모든 로케일이 available_locales 목록에 선언되어야 함을 보장하도록 했습니다. (Pull Request)

  • Module#concerning을 도입했습니다. 이는 클래스 내에서 책임을 분리하는 자연스럽고 간단한 방법입니다. (Commit)

  • Object#presence_in을 추가하여 허용된 목록에 값을 추가하는 것을 간소화했습니다. (Commit)

9 크레딧

Rails에 많은 시간을 투자한 많은 사람들에게 감사의 인사를 전합니다. Rails를 안정적이고 견고한 프레임워크로 만들어준 모든 분들에게 경의를 표합니다. Rails 기여자 전체 목록을 참조하세요.

피드백

이 가이드의 품질을 개선하는 데 도움을 주시기를 권장합니다.

오타나 사실적인 오류를 발견하면 기여해주십시오. 시작하려면 문서 기여 섹션을 읽어보세요.

불완전한 내용이나 최신 정보가 아닌 내용을 발견할 수도 있습니다. 주요한 부분에 누락된 문서를 추가해주세요. Edge 가이드에서 이미 문제가 해결되었는지 확인하세요. 스타일과 규칙은 Ruby on Rails 가이드 지침을 확인하세요.

수정할 내용을 발견했지만 직접 수정할 수 없는 경우 이슈를 열어주세요.

마지막으로, Ruby on Rails 문서에 관한 모든 토론은 공식 Ruby on Rails 포럼에서 환영합니다.