aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #34855 from bogdanvlviv/update-configuring-guideRafael França2019-01-031-2/+32
|\ | | | | Update the "Configuring Rails Applications" guide [ci skip]
| * Update the "Configuring Rails Applications" guide [ci skip]bogdanvlviv2019-01-041-2/+32
| | | | | | | | Add section "Results of `load_defaults`" to the guide.
* | Merge the redundant `when Symbol` case to the `when String, ...`Ryuta Kamizono2019-01-041-2/+1
| |
* | 2x faster `connection.type_cast`Ryuta Kamizono2019-01-041-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `nil`, `Numeric`, and `String` are most basic objects which are passed to `type_cast`. But now each `when *types_which_need_no_typecasting` evaluation allocates extra two arrays, it makes `type_cast` slower. The `types_which_need_no_typecasting` was introduced at #15351, but the method isn't useful (never used any adapters) since all adapters (sqlite3, mysql2, postgresql, oracle-enhanced, sqlserver) still overrides the `_type_cast`. Just expanding the method would make the `type_cast` 2x faster. ```ruby module ActiveRecord module TypeCastFast def type_cast_fast(value, column = nil) value = id_value_for_database(value) if value.is_a?(Base) if column value = type_cast_from_column(column, value) end _type_cast_fast(value) rescue TypeError to_type = column ? " to #{column.type}" : "" raise TypeError, "can't cast #{value.class}#{to_type}" end private def _type_cast_fast(value) case value when Symbol, ActiveSupport::Multibyte::Chars, Type::Binary::Data value.to_s when true then unquoted_true when false then unquoted_false # BigDecimals need to be put in a non-normalized form and quoted. when BigDecimal then value.to_s("F") when nil, Numeric, String then value when Type::Time::Value then quoted_time(value) when Date, Time then quoted_date(value) else raise TypeError end end end end conn = ActiveRecord::Base.connection conn.extend ActiveRecord::TypeCastFast Benchmark.ips do |x| x.report("type_cast") { conn.type_cast("foo") } x.report("type_cast_fast") { conn.type_cast_fast("foo") } x.compare! end ``` ``` Warming up -------------------------------------- type_cast 58.733k i/100ms type_cast_fast 101.364k i/100ms Calculating ------------------------------------- type_cast 708.066k (± 5.9%) i/s - 3.583M in 5.080866s type_cast_fast 1.424M (± 2.3%) i/s - 7.197M in 5.055860s Comparison: type_cast_fast: 1424240.0 i/s type_cast: 708066.0 i/s - 2.01x slower ```
* | Merge pull request #34816 from ↵Rafael Mendonça França2019-01-033-1/+13
|\ \ | | | | | | | | | | | | | | | bogdanvlviv/add-skip-action-mailbox-option-to-rails-new-cmd Add `--skip-action-mailbox` option to `rails new`
| * | Add `--skip-action-mailbox` option to `rails new`bogdanvlviv2018-12-283-1/+18
| | | | | | | | | | | | Related to https://github.com/rails/rails/commit/ddaf06779aa51d5d1ca462c21c53f2ed169a0d2f
* | | Merge pull request #34706 from ChrisBr/instrumentation-guideGannon McGibbon2019-01-031-8/+14
|\ \ \ | |_|/ |/| | Add missing keys to ActiveSupport#instrumentation guide [skip ci]
| * | Add missing keys to ActiveSupport#instrumentation guide [skip ci]Christian Bruckmayer2019-01-021-8/+14
| | | | | | | | | | | | See https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb#L625.
* | | Merge pull request #33985 from eugeneius/attribute_methods_schema_cacheKasper Timm Hansen2019-01-037-2/+109
|\ \ \ | | | | | | | | Only define attribute methods from schema cache
| * | | Only define attribute methods from schema cacheEugene Kenny2018-09-287-2/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To define the attribute methods for a model, Active Record needs to know the schema of the underlying table, which is usually achieved by making a request to the database. This is undesirable behaviour while the app is booting, for two reasons: it makes the boot process dependent on the availability of the database, and it means every new process will make one query for each table, which can cause issues for large applications. However, if the application is using the schema cache dump feature, then the schema cache already contains the necessary information, and we can define the attribute methods without causing any extra database queries.
* | | | Capistrano is no longer a dominant force in the deployment strategy for new appsDavid Heinemeier Hansson2019-01-031-3/+0
| | | |
* | | | Use latest Bundleryuuji.yaginuma2019-01-031-1/+1
| | | | | | | | | | | | | | | | | | | | Don't need to specify the version because Bundler 2.0 released. Ref: https://bundler.io/blog/2019/01/03/announcing-bundler-2.html
* | | | Merge pull request #34846 from palkan/fix/ar-reaper-testRyuta Kamizono2019-01-031-1/+1
|\ \ \ \ | | | | | | | | | | fix activerecord reaper_test
| * | | | fix activerecord reaper_testVladimir Dementyev2019-01-021-1/+1
| | | | |
* | | | | Merge pull request #34841 from ↵Yuji Yaginuma2019-01-031-3/+0
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | bogdanvlviv/remove-mention-about-test-unit-test_case Remove mention about `Test::Unit::TestCase` [ci skip]
| * | | | Remove mention about `Test::Unit::TestCase` [ci skip]bogdanvlviv2019-01-021-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We've switched from `Test::Unit::TestCase` to `ActiveSupport::TestCase` since Rails 2.3. See https://edgeguides.rubyonrails.org/2_3_release_notes.html#other-railties-changes
* | | | | Merge pull request #34836 from kamipo/class_level_update_without_idsRyuta Kamizono2019-01-022-1/+17
|\ \ \ \ \ | | | | | | | | | | | | Restore an ability that class level `update` without giving ids
| * | | | | Restore an ability that class level `update` without giving idsRyuta Kamizono2019-01-022-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That ability was introduced at #11898 as `Relation#update` without giving ids, so the ability on the class level is not documented and not tested. c83e30d which fixes #33470 has lost two undocumented abilities. One has fixed at 5c65688, but I missed the ability on the class level. Removing any feature should not be suddenly happened in a stable version even if that is not documented. I've restored the ability and added test case to avoid any regression in the future. Fixes #34743.
* | | | | | Merge pull request #34835 from gmcgibbon/fix_examples_in_log_subscriberEileen M. Uchitelle2019-01-021-3/+3
|\ \ \ \ \ \ | |_|/ / / / |/| | | | | Fix examples in ActiveSupport::LogSubscriber docs
| * | | | | Fix examples in ActiveSupport::LogSubscriber docsGannon McGibbon2019-01-011-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | [ci skip]
* | | | | | MariaDB: Remove version checking lower the 5.5.8Ryuta Kamizono2019-01-021-10/+2
| | | | | | | | | | | | | | | | | | | | | | | | Since we already bumped the minimum version of MySQL to 5.5.8 at #33853.
* | | | | | Permit sending Active Storage purge and analysis jobs to separate queuesGeorge Claghorn2019-01-017-5/+40
| | | | | |
* | | | | | Add assertions for `ActiveRecord::Base.current_role`Ryuta Kamizono2019-01-021-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | Since the `current_role` is public API.
* | | | | | Add test case for `preventing_writes?`Ryuta Kamizono2019-01-022-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | Since the `preventing_writes?` is public API.
* | | | | | Bring ActiveRecord::Core's API document back [ci skip]yuuji.yaginuma2019-01-021-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If exist `:nodoc:` before method define, it affects all subsequent method definitions.
* | | | | | Document Action Mailbox configuration options [ci skip]George Claghorn2019-01-011-0/+23
| | | | | |
* | | | | | s/Active Mailbox/Action Mailbox/ [ci skip]George Claghorn2019-01-011-1/+1
| |/ / / / |/| | | |
* | | | | Fix TypeError: no implicit conversion of Arel::Attributes::Attribute into ↵Ryuta Kamizono2019-01-022-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | String properly This reverts 27c6c07 since `arel_attr.to_s` is not right way to avoid the type error. That to_s returns `"#<struct Arel::Attributes::Attribute ...>"`, there is no reason to match the regex to the inspect form. And also, the regex path is not covered by our test cases. I've tweaked the regex for redundant part and added assertions for the regex path.
* | | | | :scissors:Ryuta Kamizono2019-01-021-1/+1
| | | | | | | | | | | | | | | [ci skip]
* | | | | Fix links in ingress docs [ci skip]George Claghorn2019-01-012-2/+2
| | | | |
* | | | | Exclude ActionMailbox::Base#perform_processing and #finished_processing? ↵George Claghorn2019-01-011-2/+2
| | | | | | | | | | | | | | | | | | | | from API docs
* | | | | Document ActionMailbox::Base#bounce_with [ci skip]George Claghorn2019-01-011-0/+1
| | | | |
* | | | | Add load hook for ActionMailbox::TestCaseGeorge Claghorn2018-12-312-0/+3
| | | | |
* | | | | Update the load hooks reference table [ci skip]George Claghorn2018-12-311-0/+3
| | | | |
* | | | | Bump Nokogiri for sparklemotion/nokogiri@bf41ba0George Claghorn2018-12-311-8/+8
| | | | |
* | | | | Add load hook for ActionMailbox::BaseGeorge Claghorn2018-12-311-0/+2
|/ / / /
* | | | Merge pull request #34707 from xlts/update-notifications-docsGannon McGibbon2018-12-312-9/+35
|\ \ \ \ | | | | | | | | | | Add examples describing error handling in ActiveSupport::Notification…
| * | | | Add examples describing error handling in ActiveSupport::Notifications and ↵Mariusz Hausenplas2018-12-142-9/+35
| | | | | | | | | | | | | | | | | | | | ActiveSupport::LogSubscriber documentation files
* | | | | Merge pull request #34624 from ↵Gannon McGibbon2018-12-311-1/+3
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | blaszczakphoto/update-docs-regarding-gzipping-assets Rename header of the gzip paragraph
| * | | | | Rename header of the gzip paragraph to more accurate and add short info ↵Mariusz Błaszczak2018-12-211-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | aboaut what to do about serving gziped files [ci skip]
* | | | | | Merge pull request #34834 from gmcgibbon/mention_tiff_support_in_guidesGeorge Claghorn2018-12-311-1/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | Mention tiff support in ActiveStorage guides
| * | | | | | Mention tiff support in ActiveStorage guidesGannon McGibbon2018-12-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | [ci skip]
* | | | | | | Merge pull request #34833 from ↵George Claghorn2018-12-311-1/+1
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | | | | | | | | | | | | | | | bogdanvlviv/add-changelog-file-to-actionmailbox-specification Add CHANGELOG.md to actionmailbox gem specification
| * | | | | | Add CHANGELOG.md to actionmailbox gem specificationbogdanvlviv2018-12-311-1/+1
| | | | | | |
* | | | | | | Merge pull request #34831 from arunagw/bump-year-to-2019Arun Agrawal2018-12-3123-23/+23
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | Bump license years for 2019
| * | | | | | Bump license years for 2019Arun Agrawal2018-12-3123-23/+23
| | | | | | |
* | | | | | | Merge pull request #34740 from sponomarev/feature/assert_has_streamGeorge Claghorn2018-12-312-6/+73
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Add streams assert methods to ActionCable channel test case
| * | | | | | | Add streams assert methods to ActionCable channel test caseSergey Ponomarev2018-12-182-6/+73
| | | | | | | |
* | | | | | | | Add load hook for ActionMailbox::InboundEmailGeorge Claghorn2018-12-311-0/+2
| |/ / / / / / |/| | | | | |
* | | | | | | Permit generating variants of TIFF imagesLuciano Sousa2018-12-304-0/+17
| | | | | | |