aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
| | * | | Replace (slower) block.call with (faster) yieldclaudiob2014-10-175-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Performance optimization: `yield` with an implicit `block` is faster than `block.call`. See http://youtu.be/fGFM_UrSp70?t=10m35s and the following benchmark: ```ruby require 'benchmark/ips' def fast yield end def slow(&block) block.call end Benchmark.ips do |x| x.report('fast') { fast{} } x.report('slow') { slow{} } end # => fast 154095 i/100ms # => slow 71454 i/100ms # => # => fast 7511067.8 (±5.0%) i/s - 37445085 in 4.999660s # => slow 1227576.9 (±6.8%) i/s - 6145044 in 5.028356s ```
* | | | | [ci skip] Add a note about headers overwritingNicolas Cavigneaux2014-10-181-5/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since some headers can appear multiple times in an email it's required to set it to nil first when you want to overwrite an existing one. This commit add some information about this process. Fix #15912
* | | | | [ci skip] Add Doc of with_options for the case when inherited default ↵Pramod Sharma2014-10-181-1/+15
| | | | | | | | | | | | | | | | | | | | options and original options have same keys
* | | | | Replace (slower) block.call with (faster) yieldclaudiob2014-10-185-11/+11
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Performance optimization: `yield` with an implicit `block` is faster than `block.call`. See http://youtu.be/fGFM_UrSp70?t=10m35s and the following benchmark: ```ruby require 'benchmark/ips' def fast yield end def slow(&block) block.call end Benchmark.ips do |x| x.report('fast') { fast{} } x.report('slow') { slow{} } end # => fast 154095 i/100ms # => slow 71454 i/100ms # => # => fast 7511067.8 (±5.0%) i/s - 37445085 in 4.999660s # => slow 1227576.9 (±6.8%) i/s - 6145044 in 5.028356s ```
* | | | Merge pull request #17300 from claudiob/add-necessary-require-reverse-mergeRafael Mendonça França2014-10-172-0/+11
|\ \ \ \ | |/ / / |/| | | Add necessary 'require reverse_merge' to HAWI.rb
| * | | Add necessary 'require reverse_merge' to HAWI.rbclaudiob2014-10-172-0/+11
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hashes with indifferent access should support `reverse_merge` out-of-the-box but they don't; for instance the following code fails: ```ruby require 'active_support' require 'active_support/hash_with_indifferent_access' hash = HashWithIndifferentAccess.new key: :old_value hash.reverse_merge key: :new_value ``` This PR fixes the case above by simply requiring `active_support/core_ext/hash/reverse_merge` in `hash_with_indifferent_access.rb` and adding a test that confirms the fix. --- Here are more details about the bugfix. Currently, `reverse_merge` is [defined in HashWithIndifferentAccess](https://github.com/rails/rails/blob/4e8ea13ba1a0870905a46fac5f232d9f41eef8a4/activesupport/lib/active_support/hash_with_indifferent_access.rb#L208) by invoking `super`, that is by invoking `Hash#reverse_merge`: ```ruby def reverse_merge(other_hash) super(self.class.new_from_hash_copying_default(other_hash)) end ``` However, Ruby's `Hash` does not have the `reverse_merge` by default: it must be added by ActiveSupport, and that requires the following line of code to be present: ```ruby require 'active_support/core_ext/hash/reverse_merge' ```
* | | Merge pull request #17296 from sgrif/sg-booleans-should-make-senseRafael Mendonça França2014-10-162-5/+14
|\ \ \ | | | | | | | | Add a deprecation warning for abiguous boolean values
| * | | Add a deprecation warning for abiguous boolean valuesSean Griffin2014-10-162-5/+14
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Rails 5.0, we'd like to change the behavior of boolean columns in Rails to be closer to Ruby's semantics. Currently we have a small set of values which are "truthy", and all others are "falsy". In Rails 5.0, we will reverse this to have a small number of values which are "falsy", and all others will become "truthy". In the interim, all values which are ambiguous must emit a deprecation warning.
* | | Improve the warning a bit [ci skip]Rafael Mendonça França2014-10-161-1/+1
| | |
* | | Merge pull request #15827 from ↵Rafael Mendonça França2014-10-161-1/+3
|\ \ \ | | | | | | | | | | | | | | | | | | | | yuki24/another-improvements-for-dynamic-error-pages A warning line should look like a warning section in Guides
| * | | A warning line should look like a warning sectionYuki Nishijima2014-06-191-1/+3
| | | | | | | | | | | | | | | | [ci skip]
* | | | Merge pull request #17293 from djpowers/patch-1Rafael Mendonça França2014-10-161-1/+1
|\ \ \ \ | | | | | | | | | | Clarify wording in Rails HTML Sanitizer section [ci skip]
| * | | | Clarify wording in Rails HTML Sanitizer sectionDave Powers2014-10-161-1/+1
|/ / / / | | | | | | | | [ci skip]
* | | | Merge pull request #17292 from tricknotes/generator-test-docRafael Mendonça França2014-10-161-1/+1
|\ \ \ \ | | | | | | | | | | Fix example code for `Rails::Generators::Testing::Behaviour` [ci skip]
| * | | | Fix example code for `Rails::Generators::Testing::Behaviour` [ci skip]Ryunosuke SATO2014-10-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | `cleanup_destination_root` method is not found anywhere. Instead, `prepare_destination` clean up distination root on setup.
* | | | | Use released rails-dom-testingRafael Mendonça França2014-10-165-7/+3
|/ / / /
* | | | test, `Generators::GeneratedAttribute` with references, required, index.Yves Senn2014-10-161-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Closes #17197. Closes #17207. `{required}` is a type modifier so it should be: user:references{required}:index and not: user:references:index{required}
* | | | Merge pull request #17285 from dwo/masterYves Senn2014-10-161-0/+2
|\ \ \ \ | | | | | | | | | | mention the :without option [ci skip]
| * | | | mention the :without option [ci skip]Rob2014-10-161-0/+2
| | | | | | | | | | | | | | | As pointed out in the ActiveModel::Validations::HelperMethods #validates_format_of documentation.
* | | | | Merge pull request #17278 from velobuff/clarify-debugger-invocationYves Senn2014-10-161-1/+2
|\ \ \ \ \ | |/ / / / |/| | | | clarify debugger platform invocation
| * | | | clarify debugger platform invocationRaman Sinha2014-10-151-1/+2
| | | | |
* | | | | test, better describe `SerializationTypeMismatch` behavior. refs #14716.Yves Senn2014-10-162-4/+3
| | | | |
* | | | | pg, test assigning non-array values to an array column. Closes #14716.Yves Senn2014-10-161-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The behavior has changed since 4.1 and non-array values are no longer type casted to a blank array. This way the user can define custom validations on that property.
* | | | | Merge pull request #17281 from y-yagi/configuring_guideZachary Scott2014-10-161-14/+15
|\ \ \ \ \ | | | | | | | | | | | | [ci skip] add AC::InvalidCrossOriginRequest to list of rescue_responses default
| * | | | | [ci skip] add AC::InvalidCrossOriginRequest to list of rescue_responses defaultyuuji.yaginuma2014-10-161-14/+15
| | | | | |
* | | | | | docs, since #16702 we detect mutation on serialized attributes. [ci skip]Yves Senn2014-10-161-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | /cc @sgrif
* | | | | | some changelog formatting. [ci skip]Yves Senn2014-10-164-12/+12
| | | | | |
* | | | | | Merge pull request #17280 from aditya-kapoor/remove-unneeded-fileYves Senn2014-10-161-9/+0
|\ \ \ \ \ \ | | | | | | | | | | | | | | remove unneeded file from Railties.
| * | | | | | remove unneeded fileAditya Kapoor2014-10-161-9/+0
| | | | | | |
* | | | | | | Merge pull request #17279 from aditya-kapoor/call-methodsYves Senn2014-10-161-1/+1
|\ \ \ \ \ \ \ | |_|_|/ / / / |/| | | | | | use require_command! instead of calling its definition
| * | | | | | use require_command! instead of calling its definitionAditya Kapoor2014-10-161-1/+1
| |/ / / / /
* | | | | | we don't need a HWIA and a hash allocated for just one k/v pairAaron Patterson2014-10-151-5/+3
| | | | | |
* | | | | | just look up the primary key from the columns hashAaron Patterson2014-10-151-6/+1
| | | | | |
* | | | | | add table.bigint supportAaron Patterson2014-10-153-1/+21
| |_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the DSL you can now do: create_table(:foos) do |t| t.bigint :hi end
* | | | | Merge pull request #17277 from yuutetu/fix_type_in_routing_mapperGuillermo Iguaran2014-10-151-1/+1
|\ \ \ \ \ | | | | | | | | | | | | Fix typo in actionpack/lib/action_dispatch/routing/mapper.rb [ci-skip]
| * | | | | Fix typo in actionpack/lib/action_dispatch/routing/mapper.rbYuutetu2014-10-161-1/+1
|/ / / / /
* | | | | Use if/else instead of early raiseRafael Mendonça França2014-10-151-2/+5
| | | | |
* | | | | Merge pull request #17267 from rebyn/masterRafael Mendonça França2014-10-154-0/+16
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | Raise an error for has_one associations which try to go :through a polymorphic association
| * | | | | Raise an error for has_one associations which try to go :through a ↵Tu Hoang2014-10-154-0/+16
| |/ / / / | | | | | | | | | | | | | | | polymorphic association [#17263]
* | | | | Merge pull request #17255 from printercu/cors_exception_wrapperRafael Mendonça França2014-10-151-10/+11
|\ \ \ \ \ | | | | | | | | | | | | ActionController::InvalidCrossOriginRequest fails with 422 instead of 500
| * | | | | ActionController::InvalidCrossOriginRequest fails with 422 instead of 500Max Melentiev2014-10-141-10/+11
| | | | | | | | | | | | | | | | | | | | | | | | Fixes #15967
* | | | | | Merge pull request #17273 from claudiob/fix-file-and-password-field-tagRafael Mendonça França2014-10-152-2/+9
|\ \ \ \ \ \ | | | | | | | | | | | | | | Fix how file_ and password_field_tag edit options
| * | | | | | Fix how file_ and password_field_tag edit optionsclaudiob2014-10-152-2/+9
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit fixes the behavior of `file_field_tag` and `password_field_tag` when invoked with a hash of options. These two helpers are different from all the other ones in that they modify the options hash passed as a parameter, whereas all the other helpers duplicate it before updating it. The result is that *bad things* can happen if the user re-uses the same hash. For instance, users who write the following code to display a file field followed by a text field (both with the same class): ```rhtml <% options = {class: 'important'} %> <%= file_field_tag 'Upload', options %> <%= text_field_tag 'Name', options %> ``` would instead see **two file fields!** ```html <input class="important" id="Upload" name="Upload" type="file"> <input class="important" id="Name" name="Name" type="file" value="value"> ``` This PR replaces `update` with `merge` in the code of the two helpers, fixing the issue above. The included test verifies the change, since it passes after this PR, but fails before with the following error: ``` Expected: <input type="text" name="title" id="title" value="Hello!" class="important" /> Actual: <input type="password" name="title" id="title" value="Hello!" class="important" /> ```
* | | | | | Merge pull request #17262 from swapdisc/delete-join-operation-structRafael Mendonça França2014-10-151-2/+0
|\ \ \ \ \ \ | | | | | | | | | | | | | | delete leftover JoinOperation struct
| * | | | | | delete leftover JoinOperation structswapdisc2014-10-141-2/+0
| | |/ / / / | |/| | | |
* | | | | | Merge pull request #17271 from claudiob/remove-duplicate-stringify-keysRafael Mendonça França2014-10-151-13/+13
|\ \ \ \ \ \ | | | | | | | | | | | | | | Remove duplicate stringify_keys in text_field_tag and number_field_tag
| * | | | | | Remove duplicate stringify_keys in text_field_tagclaudiob2014-10-151-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All the methods that invoke `text_field_tag` (such as `hidden_field_tag`) and all the methods that invoke `number_field_tag` (that is `range_field_tag`) do not need to call `stringify_keys` on their `options` parameter since the `text_field_tag` method [is already doing it internally](https://github.com/claudiob/rails/blob/4159134524f4c78d008eef9d9a17f73a3172dcc8/actionview/lib/action_view/helpers/form_tag_helper.rb#L182): ```ruby def text_field_tag(name, value = nil, options = {}) tag :input, { "type" => "text", "name" => name, "id" => sanitize_to_id(name), "value" => value }.update(options.stringify_keys) end ``` and `number_field_tag` is [already doing it internally](https://github.com/claudiob/rails/blob/e3207bdbba55f3806441f22b175557579bc0b051/actionview/lib/action_view/helpers/form_tag_helper.rb#L780) as well: ```ruby def number_field_tag(name, value = nil, options = {}) options = options.stringify_keys ... end [Note #1: My code uses `merge` to respect the existing behavior of duplicating the `options` hash before updating its keys, see https://github.com/rails/rails/pull/17096#issuecomment-57223827] [Note #2: My code uses symbols instead of strings (e.g.: `:hidden`) to look forward to future version of Ruby/Raiks (GC symbols); the result of the method, however, is the same, because the symbols are stringified inside `text_field_tag`] [Note #3: I had previously created a similar PR #17096 but decided to split it into multiple PRs given the feedback received in the comments]
* | | | | | | Merge pull request #17257 from Bounga/use_tr_instead_of_gsub_in_journey_scannerSantiago Pastorino2014-10-151-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Use `#tr` instead of `#gsub` in Journey scanner
| * | | | | | | Use `#tr` instead of `#gsub`Nicolas Cavigneaux2014-10-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `#tr` is more efficient than `#gsub` and can be used as a drop in replacement in this context.
* | | | | | | | Merge pull request #17264 from claudiob/add-activejob-to-readmeRafael Mendonça França2014-10-151-3/+5
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Add ActiveJob to "Welcome to Rails" section