aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | Go through a single credentials instance.Kasper Timm Hansen2017-11-151-9/+10
| | | | | | | | | | | | | | | | | | | | | | | | Instead of stashing the values in constants.
* | | | | | Merge pull request #31160 from yahonda/ignored_column_case_insensitiveRafael França2017-11-151-1/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | Allow test_ignored_columns_not_included_in_SELECT column names case insensitive
| * | | | | | Allow test_ignored_columns_not_included_in_SELECT column names caseYasuo Honda2017-11-151-1/+1
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | insensitive i.e. Oracle database identifier is UPPERCASE unlike other databases. ```ruby (byebug) query = Developer.all.to_sql "SELECT \"DEVELOPERS\".\"ID\", \"DEVELOPERS\".\"NAME\", \"DEVELOPERS\".\"SALARY\", \"DEVELOPERS\".\"FIRM_ID\", \"DEVELOPERS\".\"MENTOR_ID\", \"DEVELOPERS\".\"CREATED_AT\", \"DEVELOPERS\".\"UPDATED_AT\", \"DEVELOPERS\".\"CREATED_ON\", \"DEVELOPERS\".\"UPDATED_ON\" FROM \"DEVELOPERS\"" ```
* | | | | | Merge pull request #31128 from rails/handle-ambigious-timesAndrew White2017-11-154-1/+66
|\ \ \ \ \ \ | | | | | | | | | | | | | | Handle `TZInfo::AmbiguousTime` errors
| * | | | | | Handle `TZInfo::AmbiguousTime` errorsAndrew White2017-11-154-1/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make `ActiveSupport::TimeWithZone` match Ruby's handling of ambiguous times by choosing the later period, e.g. Ruby: ``` ENV["TZ"] = "Europe/Moscow" Time.local(2014, 10, 26, 1, 0, 0) # => 2014-10-26 01:00:00 +0300 ``` Before: ``` >> "2014-10-26 01:00:00".in_time_zone("Moscow") TZInfo::AmbiguousTime: 26/10/2014 01:00 is an ambiguous local time. ``` After: ``` >> "2014-10-26 01:00:00".in_time_zone("Moscow") => Sun, 26 Oct 2014 01:00:00 MSK +03:00 ``` Fixes #17395.
* | | | | | | Merge pull request #29776 from mrj/fix-idlw-timezoneMatthew Draper2017-11-151-1/+1
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | Fix the "International Date Line West" timezone
| * | | | | | Change the "International Date Line West" TZInfo timezone from ↵Mark James2017-07-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | "Pacific/Midway" (-11) to "Etc/GMT+12" (-12).
* | | | | | | These strings should already be frozen where ruby accepts the magic-commentAkira Matsuda2017-11-151-2/+2
| | | | | | |
* | | | | | | Merge pull request #31156 from kwstannard/patch-1Rafael França2017-11-141-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Update configuring.md
| * | | | | | | Update configuring.mdKelly Stannard2017-11-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | It was brought to my attention that the Rails guide suggests using filenames to ensure code load order, so I thought I would suggest a better alternative.
* | | | | | | | Use released arelyuuji.yaginuma2017-11-156-6/+0
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | Related to 2e0fe5928f0d08f85b4796c85bd0b39f6be09079
* | | | | | | Fix asset url examples [ci skip]Ryuta Kamizono2017-11-151-6/+6
| | | | | | |
* | | | | | | Fix CI failure due to invalid `up_only` for MySQLRyuta Kamizono2017-11-151-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `oldie = 'true'` to `tinyint(1)` column is invalid value for MySQL: ``` Mysql2::Error: Incorrect integer value: 'true' for column 'oldie' at row 1: update horses set oldie = 'true' ```
* | | | | | | Fix typo s/only_up/up_only/ [ci skip]Ryuta Kamizono2017-11-151-1/+1
| | | | | | |
* | | | | | | Merge pull request #30004 from npenzin/patch-1Yuji Yaginuma2017-11-152-2/+3
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Update plugin_generator.rb
| * | | | | | | Ensure plugin_generator adds to new line in GemfileNikita Penzin2017-11-142-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ensure plugin_generator adds to new line in Gemfile, even if the Gemfile does not end with an empty line. [Lisa Ugray, Nikita Penzin]
* | | | | | | | Merge pull request #31155 from bogdanvlviv/fix-activesupport-changelogRafael França2017-11-141-27/+29
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Fix activesupport/CHANGELOG.md [ci skip]
| * | | | | | | | Fix activesupport/CHANGELOG.md [ci skip]bogdanvlviv2017-11-141-27/+29
| | | | | | | | |
* | | | | | | | | Merge pull request #31154 from ↵Rafael França2017-11-141-1/+1
|\ \ \ \ \ \ \ \ \ | |/ / / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | bogdanvlviv/fix-migration-version-in-doc-of-up_only Fix migration version in doc of #up_only
| * | | | | | | | Fix migration version in doc of #up_onlybogdanvlviv2017-11-141-1/+1
|/ / / / / / / /
* | | | | | | | Use released sass-railsRafael Mendonça França2017-11-142-15/+9
| | | | | | | |
* | | | | | | | Use released arelRafael Mendonça França2017-11-144-17/+9
| | | | | | | |
* | | | | | | | Merge pull request #30963 from ↵Rafael França2017-11-141-1/+14
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q-centrix/performance-improvements-add_method_to_attributes Performance improvements for add_method_to_attributes!
| * | | | | | | | Performance improvements for add_method_to_attributes!Dillon Welch2017-11-071-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prevents two string allocations per method call for common REST verbs plus a ~1.5x speedup for :get in particular ```ruby 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 "benchmark-ips" gem "rails" 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 @html_options = {} def master_version if @method && @method.to_s.downcase != "get" && @html_options["rel".freeze] !~ /nofollow/ @html_options["rel".freeze] = "#{@html_options["rel".freeze]} nofollow".lstrip end @html_options["data-method".freeze] = @method end def fast_version if method_not_get_method?(@method) && @html_options["rel".freeze] !~ /nofollow/ @html_options["rel".freeze] = "#{@html_options["rel".freeze]} nofollow".lstrip end @html_options["data-method".freeze] = @method end STRINGIFIED_COMMON_METHODS = { get: 'get', delete: 'delete', patch: 'patch', post: 'post', put: 'put', }.freeze def method_not_get_method?(method) return false unless method (STRINGIFIED_COMMON_METHODS[method] || method.to_s.downcase) != 'get' end puts 'get' @method = :get puts "master_version" puts allocate_count { 1000.times { master_version } } puts "fast_version" puts allocate_count { 1000.times { fast_version } } Benchmark.ips do |x| x.report("master_version") { master_version } x.report("fast_version") { fast_version } x.compare! end puts 'delete' @method = :delete puts "master_version" puts allocate_count { 1000.times { master_version } } puts "fast_version" puts allocate_count { 1000.times { fast_version } } Benchmark.ips do |x| x.report("master_version") { master_version } x.report("fast_version") { fast_version } x.compare! end ``` ``` get master_version {:FREE=>-1819, :T_STRING=>2052} fast_version {:FREE=>-1} Warming up -------------------------------------- master_version 140.839k i/100ms fast_version 175.639k i/100ms Calculating ------------------------------------- master_version 2.683M (± 7.1%) i/s - 13.380M in 5.013447s fast_version 3.988M (±10.1%) i/s - 19.847M in 5.039580s Comparison: fast_version: 3988340.3 i/s master_version: 2683336.2 i/s - 1.49x slower delete master_version {:FREE=>-5003, :T_STRING=>3003, :T_MATCH=>999, :T_IMEMO=>1000} fast_version {:FREE=>-3002, :T_STRING=>1001, :T_MATCH=>1000, :T_IMEMO=>1000} Warming up -------------------------------------- master_version 47.221k i/100ms fast_version 44.153k i/100ms Calculating ------------------------------------- master_version 597.881k (±11.4%) i/s - 2.975M in 5.047200s fast_version 686.014k (±11.6%) i/s - 3.400M in 5.036564s Comparison: fast_version: 686014.5 i/s master_version: 597881.4 i/s - same-ish: difference falls within error ```
* | | | | | | | | Add a #populate method to migrations (#31082)Rich2017-11-143-0/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add a #populate method to migrations * Address rubocop issues * Rename to #up_only and use #execute in the examples intead of the model * Update CHANGELOG [Rich Daley & Rafael Mendonça França]
* | | | | | | | | Merge pull request #31153 from koic/ci_against_jruby_9_1_14_0Ryuta Kamizono2017-11-151-3/+3
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | CI against JRuby 9.1.14.0
| * | | | | | | | | CI against JRuby 9.1.14.0Koichi ITO2017-11-151-3/+3
|/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | JRuby 9.1.14.0 has been released and this version is available on Travis CI. http://jruby.org/2017/11/08/jruby-9-1-14-0
* | | | | | | | | Introduce ActiveStorage::Attached::{One,Many}#detachGeorge Claghorn2017-11-143-7/+40
| | | | | | | | |
* | | | | | | | | Merge pull request #31151 from nikolai-b/exists_docRyuta Kamizono2017-11-141-1/+2
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | Update `exists?` documentation [ci skip]
| * | | | | | | | | Update `exists?` documentationNikolai B2017-11-141-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make it clear that `exists?` can be chained onto a relation
* | | | | | | | | | Merge pull request #30884 from robwold/patch-1Eileen M. Uchitelle2017-11-141-1/+1
|\ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / |/| | | | | | | | | Update layouts_and_rendering.md [ci skip]
| * | | | | | | | | Update layouts_and_rendering.md [ci skip]Rob2017-11-141-1/+1
| | | | | | | | | |
* | | | | | | | | | Merge pull request #27947 from mastahyeti/unsafe_raw_sqlMatthew Draper2017-11-1413-33/+462
|\ \ \ \ \ \ \ \ \ \ | |_|_|_|_|/ / / / / |/| | | | | | | | | | | | | | | | | | | Disallow raw SQL in dangerous AR methods
| * | | | | | | | | use database agnostic function/quoting in testBen Toews2017-11-091-4/+4
| | | | | | | | | |
| * | | | | | | | | push order arg checks down to allow for bindsBen Toews2017-11-093-28/+47
| | | | | | | | | |
| * | | | | | | | | deal with Array arguments to #orderBen Toews2017-11-093-4/+22
| | | | | | | | | |
| * | | | | | | | | convert order arg to string before checking if we can reverse itBen Toews2017-11-092-2/+6
| | | | | | | | | |
| * | | | | | | | | use << instead of #concat in #reverse_sql_order because we might be working ↵Ben Toews2017-11-092-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | with Arel SQL literator which overrides #concat
| * | | | | | | | | try using regexesBen Toews2017-11-0927-166/+120
| | | | | | | | | |
| * | | | | | | | | allow table name and direction in string order argBen Toews2017-11-0927-244/+295
| | | | | | | | | |
| * | | | | | | | | work around deprecation warnings in a bunch of testsBen Toews2017-11-0934-313/+320
| | | | | | | | | |
| * | | | | | | | | always allow Arel::Attributes::Attribute alsoBen Toews2017-11-091-1/+3
| | | | | | | | | |
| * | | | | | | | | call enforce_raw_sql_whitelist on @klass so it works with FakeKlassBen Toews2017-11-091-2/+2
| | | | | | | | | |
| * | | | | | | | | work with actual string when reversing orderBen Toews2017-11-091-0/+3
| | | | | | | | | |
| * | | | | | | | | remove :enabled optionBen Toews2017-11-093-59/+52
| | | | | | | | | |
| * | | | | | | | | beef up deprecation warningBen Toews2017-11-091-3/+7
| | | | | | | | | |
| * | | | | | | | | make tests more verbose/explicitBen Toews2017-11-091-78/+96
| | | | | | | | | |
| * | | | | | | | | allow Arel.sql() for pluckBen Toews2017-11-098-101/+159
| | | | | | | | | |
| * | | | | | | | | add config to check arguments to unsafe AR methodsBen Toews2017-11-096-21/+293
| | | | | | | | | |
* | | | | | | | | | Cache: Enable compression by default for values > 1kB.Jeremy Daer2017-11-135-16/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Compression has long been available, but opt-in and at a 16kB threshold. It wasn't enabled by default due to CPU cost. Today it's cheap and typical cache data is eminently compressible, such as HTML or JSON fragments. Compression dramatically reduces Memcached/Redis mem usage, which means the same cache servers can store more data, which means higher hit rates. To disable compression, pass `compress: false` to the initializer.