aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
Commit message (Collapse)AuthorAgeFilesLines
* mutate the transaction object to reflect stateAaron Patterson2015-03-021-25/+21
| | | | | this lets us keep singleton instances of "state" values and precalculate return values of things like `finalized?` and `completed?`.
* ask the txn for it's state, not a state objectAaron Patterson2015-03-023-8/+16
| | | | | this way we don't have to mutate a state object, we can just change the state of the txn
* change if! to unlessAaron Patterson2015-03-021-1/+1
|
* Merge pull request #19105 from amatsuda/array_takeSean Griffin2015-03-022-5/+5
|\ | | | | Preserve Array#take(n) behaviour of HasManyAssociation
| * Preserve Array#take(n) behaviour of HasManyAssociationAkira Matsuda2015-02-282-5/+5
| |
* | Merge pull request #19077 from robin850/unknown-attribute-errorSean Griffin2015-03-022-4/+9
|\ \ | | | | | | Move `UnknownAttributeError` to a more sane namespace
| * | Follow-up to #10776Robin Dupret2015-02-262-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The name `ActiveModel::AttributeAssignment::UnknownAttributeError` is too implementation specific so let's move the constant directly under the ActiveModel namespace. Also since this constant used to be under the ActiveRecord namespace, to make the upgrade path easier, let's avoid raising the former constant when we deal with this error on the Active Record side.
* | | Merge pull request #19172 from JuanitoFatas/doc/fix-typoRichard Schneeman2015-03-021-2/+2
|\ \ \ | | | | | | | | [ci skip] Fix a typo for PostgreSQL text limit, GB instead of Gb.
| * | | [ci skip] Fix a typo for PostgreSQL text limit, GB instead of Gb.Juanito Fatas2015-03-031-2/+2
| | | |
* | | | Make private methods privateArthur Neves2015-03-021-0/+2
| | | |
* | | | Remove !has_transactional_callbacks? checkArthur Neves2015-03-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We only set the state on the record if that condition is `false` in the first place, so we dont need to call that again. Also that call is expensive, follow benchmark with before and after this change: ``` Calculating ------------------------------------- persisted? 15.272k i/100ms ------------------------------------------------- persisted? 350.119k (± 4.6%) i/s - 1.756M ``` ``` Calculating ------------------------------------- persisted? 25.988k i/100ms ------------------------------------------------- persisted? 1.294M (± 5.3%) i/s - 6.445M ``` (benchmark borrowed from 57d35b2bf9e48173a5f97ccff5e6897f0c46411f)
* | | | Merge pull request #19170 from ↵Carlos Antonio da Silva2015-03-021-1/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | JuanitoFatas/doc/active_record/connection_adapters/abstract/schema_definitions.rb Clarify that t.references and t.belongs_to are interchangeable. [ci skip]
| * | | | Clarify that t.references and t.belongs_to are interchangeable. [ci skip]Juanito Fatas2015-03-021-1/+1
| |/ / /
* | | | call `sync_with_transaction_state` inside `persisted?` then check ivarsAaron Patterson2015-03-021-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | directly calling `sync_with_transaction_state` is not fast, so if we call it once, we can improve the performance of the `persisted?` method. This is important because every call to `url_for(model)` will call `persisted?`, so we want that to be fast. Here is the benchmark: ```ruby require 'active_record' ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:" ActiveRecord::Base.connection.instance_eval do create_table(:articles) end class Article < ActiveRecord::Base; end article = Article.new.tap(&:save!) Benchmark.ips do |x| x.report("persisted?") do article.persisted? end end ``` Before this patch: ``` $ bundle exec ruby -rbenchmark/ips persisted.rb Calculating ------------------------------------- persisted? 3.333k i/100ms ------------------------------------------------- persisted? 51.037k (± 8.2%) i/s - 253.308k ``` After: ``` $ bundle exec ruby -rbenchmark/ips persisted.rb Calculating ------------------------------------- persisted? 7.172k i/100ms ------------------------------------------------- persisted? 120.730k (± 5.1%) i/s - 602.448k ```
* | | | remove useless instance variableAaron Patterson2015-03-021-9/+4
|/ / / | | | | | | | | | | | | depth is always 0, so the index will always be false. No reason to create the instance variable if it isn't used
* | | Move transaction code to transaction moduleArthur Neves2015-03-012-41/+41
| | |
* | | Remove parent transaction stateArthur Neves2015-03-012-7/+0
| | | | | | | | | | | | As far as I can tell nobody is setting this variable.
* | | remove useless conditionalAaron Patterson2015-03-011-1/+1
| | | | | | | | | | | | | | | `@reflects_state[depth+1]` will always be nil because we haven't made a method call that would make it true yet.
* | | Spell PostgreSQL correctly :elephant:Akira Matsuda2015-02-282-2/+2
| |/ |/| | | | | [ci skip]
* | Removed non-standard and unused require 'active_support/deprecation' from ↵Vipul A M2015-02-271-1/+0
| | | | | | | | parts out of active_support.
* | Properly create through records when called with `where`Sean Griffin2015-02-261-0/+13
| | | | | | | | | | | | | | | | | | | | | | Various behaviors needed by associations (such as creating the through record) are lost when `where` is called, since we stop having a `CollectionProxy` and start having an `AssociationRelation` which does not contain this behavior. I *think* we should be able to rm `AssociationRelation`, but we have tests saying the changes required to do that would be bad (Without saying why. Of course. >_>) Fixes #19073.
* | Add `SchemaMigration.create_table` support any unicode charsets for MySQL.Ryuta Kamizono2015-02-262-9/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MySQL unicode support is not only `utf8mb4`. Then, The index length problem is not only `utf8mb4`. http://dev.mysql.com/doc/refman/5.6/en/charset-unicode.html SELECT * FROM information_schema.character_sets WHERE maxlen > 3; +--------------------+----------------------+------------------+--------+ | CHARACTER_SET_NAME | DEFAULT_COLLATE_NAME | DESCRIPTION | MAXLEN | +--------------------+----------------------+------------------+--------+ | utf8mb4 | utf8mb4_general_ci | UTF-8 Unicode | 4 | | utf16 | utf16_general_ci | UTF-16 Unicode | 4 | | utf16le | utf16le_general_ci | UTF-16LE Unicode | 4 | | utf32 | utf32_general_ci | UTF-32 Unicode | 4 | +--------------------+----------------------+------------------+--------+
* | Merge pull request #15476 from JacobEvelyn/masterRafael Mendonça França2015-02-251-0/+3
|\ \ | | | | | | | | | Use logger environment settings in Rails console.
| * | Use logger environment settings in Rails console.Jacob Evelyn2014-06-021-0/+3
| | |
* | | cache quoted column names in SQLite3Aaron Patterson2015-02-241-1/+2
| | | | | | | | | | | | we do this in other adapters, and it's a nice speed improvement
* | | Merge pull request #19068 from pda/ar-translate-exception-class-no-logAaron Patterson2015-02-241-1/+0
|\ \ \ | | | | | | | | AR: translate_exception_class() no longer logs error.
| * | | AR: translate_exception_class() no longer logs error.Paul Annesley2015-02-241-1/+0
| | |/ | |/|
* | | Merge pull request #18936 from arthurnn/txn_callbacksArthur Nogueira Neves2015-02-243-4/+45
|\ \ \ | | | | | | | | Spike on new transaction callbacks
| * | | Add before_commitArthur Neves2015-02-243-2/+25
| | | | | | | | | | | | | | | | [fixes #18903]
| * | | Add transaction callbacks that wont enroll to the transaction.Arthur Neves2015-02-241-2/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add after_commit_without_transaction_enrollment and after_rollback_without_transaction_enrollment private callbacks so we can create after_commit and after_rollback callbacks without having the records automatic enrolled in the transaction. [fixes #18904]
* | | | Merge pull request #17426 from jpcody/fixture_associations_fixAaron Patterson2015-02-241-0/+4
|\ \ \ \ | |_|/ / |/| | | Rely on through table name in has_many fixtures
| * | | Rely on through table name in has_many fixturesJoshua Cody2014-10-291-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than using the association's join_table method, which constructs a table name from conventions, this should rely on the through reflection's table_name to be resilient to tables that were not automatically named.
* | | | Tiny documentation edits [ci skip]Robin Dupret2015-02-242-4/+2
| | | |
* | | | Call `attributes_for_update` in `_update_record` w/ optimistic lockingSean Griffin2015-02-241-1/+1
| | | | | | | | | | | | | | | | Fixes #19057
* | | | Fix c479480638508c20601af69ca46b5b606c2d5b4d to account for from_value -> ↵Jeremy Kemper2015-02-241-1/+1
| | | | | | | | | | | | | | | | from_clause in bdc5141652770fd227455681cde1f9899f55b0b9
* | | | Merge pull request #18744 from mfazekas/no-table-name-with-fromRafael Mendonça França2015-02-241-5/+9
| | | | | | | | | | | | | | | | Fix appending table_name to select and group when used with subquery (fr...
* | | | Fix mysql's schema.rb dumper so it does not include limit on emulated ↵Court3nay2015-02-241-0/+1
| | | | | | | | | | | | | | | | boolean tinyint(1) fields
* | | | rework `disable_referential_integrity` for PostgreSQL.Yves Senn2015-02-241-9/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [Toby Ovod-Everett & Andrey Nering & Yves Senn] Closes #17726. Closes #10939. This patch makes three distinct modifications: 1. no longer fall back to disabling user triggers if system triggers can't be disabled 2. warn the user when referential integrity can't be disabled 3. restore aborted transactions when referential integrity can't be disabled The motivation behind these changes is to make the behavior of Rails transparent and less error-prone. To require superuser privileges is not optimal but it's what Rails currently needs. Users who absolutely rely on disabling user triggers can patch `disable_referential_integrity`. We should investigate `SET CONSTRAINTS` as a possible solution which does not require superuser privileges. /cc @matthewd
* | | | Move back `new_column_definition` into `TableDefinition`Ryuta Kamizono2015-02-251-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Only `primary_key` should be extracted by d47357e in #19030, but `new_coclumn_definition` was also extracted because #17631 is merged previously, then #19030 is auto merged without conflicts. This commit is for move back `new_column_definition` into `TableDefinition`.
* | | | Merge pull request #19030 from kamipo/extract_short_hand_column_methodsRafael Mendonça França2015-02-233-109/+139
|\ \ \ \ | | | | | | | | | | Extract the short-hand column methods into `ColumnMethods`
| * | | | The short-hand methods should be able to define multiple columnsRyuta Kamizono2015-02-231-44/+50
| | | | |
| * | | | Extract the short-hand methods into `ColumnMethods`Ryuta Kamizono2015-02-231-23/+28
| | | | |
| * | | | Extract `primary_key` method into `ColumnMethods`Ryuta Kamizono2015-02-223-42/+61
| | | | |
* | | | | Merge pull request #17631 from kamipo/bigint_pk_supportRafael Mendonça França2015-02-231-0/+10
|\ \ \ \ \ | | | | | | | | | | | | Allow limit option for MySQL bigint primary key support.
| * | | | | Allow `:limit` option for MySQL bigint primary key supportRyuta Kamizono2015-02-241-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Example: create_table :foos, id: :primary_key, limit: 8 do |t| end # or create_table :foos, id: false do |t| t.column :id, limit: 8 end
* | | | | | Fix typo [ci skip]Luke Hutscal2015-02-231-1/+1
|/ / / / / | | | | | | | | | | | | | | | I think this was supposed to be "roundTrip".
* / / / / Require `belongs_to` by default.Josef Šimánek2015-02-215-9/+35
|/ / / / | | | | | | | | | | | | Deprecate `required` option in favor of `optional` for belongs_to.
* | | | Fix #has_secure_token documentation [ci skip]Tim Liner2015-02-201-2/+2
| | | | | | | | | | | | | | | | | | | | It's actually #validates_uniqueness_of that can generate a race condition rather than #validates_presence_of.
* | | | Merge branch 'rm-take' into 4-1-stableRafael Mendonça França2015-02-202-0/+14
| | | |
* | | | Do not test, document or use a private API methodRafael Mendonça França2015-02-201-5/+0
| | | | | | | | | | | | | | | | These methods are nodoc so we should not document them.