aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Simplify API documentation of methods that return a Durationbogdanvlviv2017-10-242-33/+10
| | | | Related to #30972
* Merge pull request #30972 from jcmfernandes/update-core_ext-time-documentationRafael França2017-10-243-11/+39
|\ | | | | Make clear that Time core extensions are split between Numeric and Integer
| * Make clear that Time core extensions are split between Numeric and IntegerJoão Fernandes2017-10-243-11/+39
| | | | | | | | | | | | | | The documentation wrongly suggests that Time extensions to Numeric include methods months and years, when these belong to Integer. Update both classes and guides.
* | Merge pull request #30966 from gurgelrenan/patch-1Rafael França2017-10-241-1/+1
|\ \ | | | | | | Space between { and | missing.
| * | add _ for unused last argRenan Gurgel2017-10-241-1/+1
| | |
| * | Space between { and | missing.Renan Gurgel2017-10-231-1/+1
| |/ | | | | Improve a code style recommendation following Rubocop instructions https://codeclimate.com/github/rails/rails/issues
* / Ensure associations doesn't table name collide with aliased joinsRyuta Kamizono2017-10-242-1/+9
|/ | | | | | Currently alias tracker only refer a table name, doesn't respect an alias name. Should use `join.left.name` rather than `join.left.table_name`.
* Merge pull request #30964 from ↵Ryuta Kamizono2017-10-241-25/+17
|\ | | | | | | | | yahonda/remove_supports_disable_referential_integrity Remove `supports_disable_referential_integrity?`
| * Remove `supports_disable_referential_integrity?`Yasuo Honda2017-10-231-25/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `supports_disable_referential_integrity?` used to handle if PostgreSQL database supports `ALTER TABLE <table name> DISABLE/ENABLE TRIGGER` statements. Refer https://github.com/rails/rails/commit/9a947af0e79cfb8692eb7e5ae94c1b8c40756f49 These statements have been documented since 8.1. https://www.postgresql.org/docs/8.1/static/sql-altertable.html > DISABLE/ENABLE TRIGGER Now Rails supports PostgreSQL 9.1 or higher only. No need to handle `supports_disable_referential_integrity?` anymore. Also, this method does not exist in any other adapters including AbstractAdapter.
* | Merge pull request #30961 from q-centrix/performance-improvement-acts-likeRafael França2017-10-231-1/+10
|\ \ | |/ |/| Performance improvements for acts_like? method
| * Performance improvements for acts_like? method.Dillon Welch2017-10-231-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | activesupport/lib/active_support/core_ext/object/acts_like.rb acts_like? Add a case statement to use direct symbols instead of string interpolation for the three scenarios I found in the Rails codebase: time, date, and string. For time/date/string, this change prevents two string allocations for each time the method is called and speeds up the method by ~2.7x. For other arguments, there is no memory difference and performance difference is within margin of error. begin require "bundler/inline" rescue LoadError => e $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" raise e end gemfile(true) do source "https://rubygems.org" gem "rails", github: "rails/rails" gem "arel", github: "rails/arel" gem "benchmark-ips" end def allocate_count GC.disable before = ObjectSpace.count_objects yield after = ObjectSpace.count_objects after.each { |k,v| after[k] = v - before[k] } after[:T_HASH] -= 1 # probe effect - we created the before hash. GC.enable result = after.reject { |k,v| v == 0 } GC.start result end class Object def fast_acts_like?(duck) case duck when :time respond_to? :acts_like_time? when :date respond_to? :acts_like_date? when :string respond_to? :acts_like_string? else respond_to? :"acts_like_#{duck}?" end end end puts puts " acts_like? ".center(80, '=') puts obj = ''.freeze %i(time date string super_hacka).each do |type| puts " #{type} ".center(80, '=') puts " Memory Usage ".center(80, "=") puts puts "value.acts_like?" puts allocate_count { 1000.times { obj.acts_like?(type) } } puts "value.fast_acts_like?" puts allocate_count { 1000.times { obj.fast_acts_like?(type) } } puts puts " Benchmark.ips ".center(80, "=") puts Benchmark.ips do |x| x.report("acts_like?") { obj.acts_like?(type) } x.report("fast_acts_like?") { obj.fast_acts_like?(type) } x.compare! end end ================================== acts_like? ================================== ===================================== time ===================================== ================================= Memory Usage ================================= value.acts_like? {:FREE=>-1983, :T_STRING=>2052, :T_IMEMO=>1} value.fast_acts_like? {:FREE=>-1} ================================ Benchmark.ips ================================= Warming up -------------------------------------- acts_like? 104.281k i/100ms fast_acts_like? 155.523k i/100ms Calculating ------------------------------------- acts_like? 1.688M (±10.7%) i/s - 8.342M in 5.003804s fast_acts_like? 4.596M (±12.1%) i/s - 22.551M in 5.000124s Comparison: fast_acts_like?: 4596162.4 i/s acts_like?: 1688163.8 i/s - 2.72x slower ===================================== date ===================================== ================================= Memory Usage ================================= value.acts_like? {:FREE=>-2001, :T_STRING=>2000} value.fast_acts_like? {:FREE=>-1} ================================ Benchmark.ips ================================= Warming up -------------------------------------- acts_like? 85.372k i/100ms fast_acts_like? 166.097k i/100ms Calculating ------------------------------------- acts_like? 1.720M (± 8.3%) i/s - 8.537M in 5.001003s fast_acts_like? 4.695M (±10.1%) i/s - 23.254M in 5.010734s Comparison: fast_acts_like?: 4695493.1 i/s acts_like?: 1719637.9 i/s - 2.73x slower ==================================== string ==================================== ================================= Memory Usage ================================= value.acts_like? {:FREE=>-2001, :T_STRING=>2000} value.fast_acts_like? {:FREE=>-1} ================================ Benchmark.ips ================================= Warming up -------------------------------------- acts_like? 100.221k i/100ms fast_acts_like? 182.841k i/100ms Calculating ------------------------------------- acts_like? 1.706M (± 7.3%) i/s - 8.519M in 5.022331s fast_acts_like? 3.968M (±22.8%) i/s - 18.650M in 5.006762s Comparison: fast_acts_like?: 3967972.9 i/s acts_like?: 1705773.7 i/s - 2.33x slower ================================= super_hacka ================================== ================================= Memory Usage ================================= value.acts_like? {:FREE=>-2004, :T_STRING=>2002, :T_SYMBOL=>1} value.fast_acts_like? {:FREE=>-2003, :T_STRING=>2001, :T_SYMBOL=>1} ================================ Benchmark.ips ================================= Warming up -------------------------------------- acts_like? 100.344k i/100ms fast_acts_like? 101.690k i/100ms Calculating ------------------------------------- acts_like? 1.617M (± 7.5%) i/s - 8.128M in 5.055285s fast_acts_like? 1.534M (±10.1%) i/s - 7.627M in 5.031052s Comparison: acts_like?: 1617390.7 i/s fast_acts_like?: 1533897.3 i/s - same-ish: difference falls within error
* | Merge pull request #30953 from rohitpaulk/fix-io-to-jsonRafael Mendonça França2017-10-233-0/+18
|\ \ | | | | | | | | | Fix #to_json for IO objects, fixes #26132
| * | Fix #to_json for unreadable IO objects, fixes #26132Paul Kuruvilla2017-10-233-0/+18
| | |
* | | Merge pull request #30959 from lostapathy/capybara_versionRafael França2017-10-231-0/+2
|\ \ \ | | | | | | | | specify minimum capybara version for system tests
| * | | specify minimum capybara version for system testsJoe Francis2017-10-231-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Upgraded rails applications may have a Gemfile without a new enough capybara to run system tests. Setting a version here gives the user a more direct error message than they get otherwise. Resolves #30952
* | | | Merge pull request #30920 from lugray/attributes_to_amSean Griffin2017-10-233-0/+376
|\ \ \ \ | | | | | | | | | | Start bringing attributes API to AM
| * | | | Start bringing attributes API to AMLisa Ugray2017-10-183-0/+376
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the first PR of a WIP to bring the attributes API to ActiveModel. It is not yet ready for public API. The `attributes_dirty_test.rb` file was created based on `dirty_test.rb`, and the simplifications in the diff do much to motivate this change. ``` diff activemodel/test/cases/dirty_test.rb activemodel/test/cases/attributes_dirty_test.rb 3a4 > require "active_model/attributes" 5c6 < class DirtyTest < ActiveModel::TestCase --- > class AttributesDirtyTest < ActiveModel::TestCase 7,41c8,12 < include ActiveModel::Dirty < define_attribute_methods :name, :color, :size < < def initialize < @name = nil < @color = nil < @size = nil < end < < def name < @name < end < < def name=(val) < name_will_change! < @name = val < end < < def color < @color < end < < def color=(val) < color_will_change! unless val == @color < @color = val < end < < def size < @size < end < < def size=(val) < attribute_will_change!(:size) unless val == @size < @size = val < end --- > include ActiveModel::Model > include ActiveModel::Attributes > attribute :name, :string > attribute :color, :string > attribute :size, :integer ```
* | | | | Merge pull request #30960 from bogdanvlviv/remove-mentions-of-removed-stuffRafael França2017-10-231-2/+1
|\ \ \ \ \ | |_|/ / / |/| | | | Remove mention about Evented Redis [ci skip]
| * | | | Remove mention about Evented Redis [ci skip]bogdanvlviv2017-10-231-2/+1
|/ / / / | | | | | | | | | | | | | | | | Evented Redis is removed from Rails. See #30945
* | | | Merge pull request #30945 from rafaelfranca/remove-deprecationsRafael França2017-10-2347-758/+144
|\ \ \ \ | | | | | | | | | | Remove deprecations
| * | | | Remove text about deprecation that was already removedRafael Mendonça França2017-10-231-2/+1
| | | | |
| * | | | Remove deprecated `halt_callback_chains_on_return_false` optionRafael Mendonça França2017-10-232-12/+4
| | | | |
| * | | | Remove deprecated `:if` and `:unless` string filter for callbacksRafael Mendonça França2017-10-237-155/+38
| | | | |
| * | | | Change the deprecation horizon of the dynamic routes segment to 6.0Rafael Mendonça França2017-10-231-2/+2
| | | | |
| * | | | Remove deprecated method `#sanitize_conditions`Rafael Mendonça França2017-10-232-2/+4
| | | | |
| * | | | Remove deprecated methd `#scope_chain`Rafael Mendonça França2017-10-233-44/+4
| | | | |
| * | | | Remove deprecated configuration `.error_on_ignored_order_or_limit`Rafael Mendonça França2017-10-233-48/+4
| | | | |
| * | | | Remove deprecated arguments from `#verify!`Rafael Mendonça França2017-10-233-16/+5
| | | | |
| * | | | Remove deprecated argument `name` from `#indexes`Rafael Mendonça França2017-10-237-33/+9
| | | | |
| * | | | Remove deprecated method `ActiveRecord::Migrator.schema_migrations_table_name`Rafael Mendonça França2017-10-233-9/+4
| | | | |
| * | | | Remove deprecated method `supports_primary_key?`Rafael Mendonça França2017-10-233-9/+4
| | | | |
| * | | | Remove deprecated method `supports_migrations?`Rafael Mendonça França2017-10-233-9/+4
| | | | |
| * | | | Remove deprecated methods `initialize_schema_migrations_table` and ↵Rafael Mendonça França2017-10-233-15/+4
| | | | | | | | | | | | | | | | | | | | `initialize_internal_metadata_table`
| * | | | Rase when calling `lock!` in a dirty recordRafael Mendonça França2017-10-233-15/+20
| | | | |
| * | | | Remove deprecated support to passing a class to `:class_name` on associationsRafael Mendonça França2017-10-235-25/+10
| | | | |
| * | | | Remove deprecated argument `default` from `index_name_exists?`Rafael Mendonça França2017-10-234-16/+8
| | | | |
| * | | | Remove deprecated support to `quoted_id` when typecasting an Active Record ↵Rafael Mendonça França2017-10-235-71/+4
| | | | | | | | | | | | | | | | | | | | object
| * | | | Removed deprected evented redis adapterRafael Mendonça França2017-10-234-151/+5
| | | | |
| * | | | Remove deprecated `ActionController::ParamsParser::ParseError`Rafael Mendonça França2017-10-232-7/+6
| | | | |
| * | | | Remove deprecated Erubis ERB handlerRafael Mendonça França2017-10-237-117/+4
| | | | |
* | | | | Merge pull request #30955 from prathamesh-sonpatki/rm-changelog-entryRafael França2017-10-231-7/+0
|\ \ \ \ \ | |/ / / / |/| | | | Remove CHANGELOG entry for the change that was backported to 5-1-stable [ci skip]
| * | | | Remove CHANGELOT entry for the change that was backported to 5-1-stable [ci ↵Prathamesh Sonpatki2017-10-231-7/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | skip] - It was backported in https://github.com/rails/rails/commit/0eae8dd4b859c109919e5da0d6e74ffc6dc8a258 and is present in Rails 5.1.3
* | | | | Fix duplicate aliases when using both INNER/LEFT JOINsRyuta Kamizono2017-10-232-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It should be shared the count of alias tracking in both INNER/LEFT JOINs to avoid duplicate aliases. Fixes #30504. Closes #30410.
* | | | | Ensure associations doesn't table name collide with string joinsRyuta Kamizono2017-10-232-4/+11
| |_|/ / |/| | | | | | | | | | | | | | | Currently we have no test for alias tracking with string joins. I've add test case for that to catch a future regression.
* | | | Use the indicative mood consistently [ci skip]George Claghorn2017-10-221-1/+1
| | | |
* | | | Place `MocktailDesigner` in `test/models/drink_designer.rb`Ryuta Kamizono2017-10-233-5/+3
| | | | | | | | | | | | | | | | | | | | Since `MocktailDesigner` inherits `DrinkDesigner` and can not be used alone.
* | | | Fix links [ci skip]George Claghorn2017-10-221-2/+2
| | | |
* | | | Extract metadata from images and videosGeorge Claghorn2017-10-2225-37/+407
| | | |
* | | | Merge pull request #30949 from bogdanvlviv/add-30850-to-changelogEileen M. Uchitelle2017-10-221-0/+7
|\ \ \ \ | | | | | | | | | | Add changelog entry about new `allow_other_host` option for `redirect_back` method
| * | | | Add changelog entry about new `allow_other_host` option for `redirect_back` ↵bogdanvlviv2017-10-221-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | method [ci skip] Related to #30850