- 22 7月, 2015 4 次提交
-
-
由 Aaron Patterson 提交于
there is no reason to `convert_hashes_to_parameters` with an assignemt flag. The caller knows whether or not it wants the value assigned. We should just change the uncommon case (not writing to the underlying hash) to just call the conversion method and return that value.
-
由 Aaron Patterson 提交于
only hashes are converted to parameter objects, so lets add a branch for them. This also removes a is_a? test for Parameters so we can be abstracted from the class.
-
由 Rafael Mendonça França 提交于
fix rails tests
-
由 Mehmet Emin İNAÇ 提交于
-
- 21 7月, 2015 13 次提交
-
-
由 Rafael Mendonça França 提交于
Extra caller details added to ActiveRecord::RecordNotFound
-
由 Sameer Rahmani 提交于
ActiveRecord::RecordNotFound modified to store model name, primary_key and id of the caller model. It allows the catcher of this exception to make a better decision to what to do with it. For example consider this simple example: class SomeAbstractController < ActionController::Base rescue_from ActiveRecord::RecordNotFound, with: :redirect_to_404 private def redirect_to_404(e) return redirect_to(posts_url) if e.model == 'Post' raise end end
-
由 Rafael Mendonça França 提交于
add system! to fail fast in bin/setup
-
由 Rafael Mendonça França 提交于
remove `web-console` from API app generated Gemfile
-
由 Rafael Mendonça França 提交于
Deprecate the keys for association `restrict_dependent_destroy` errors in favor of new key names
-
由 Roque Pinel 提交于
Previously `has_one` and `has_many` associations were using the `one` and `many` keys respectively. Both of these keys have special meaning in I18n (they are considered to be pluralizations) so by renaming them to `has_one` and `has_many` we make the messages more explicit and most importantly they don't clash with linguistical systems that need to validate translation keys (and their pluralizations). The `:'restrict_dependent_destroy.one'` key should be replaced with `:'restrict_dependent_destroy.has_one'`, and `:'restrict_dependent_destroy.many'` with `:'restrict_dependent_destroy.has_many'`. [Roque Pinel & Christopher Dell]
-
由 Sean Griffin 提交于
Ensure that microsecond precision is only used for versions of mysql that support it.
-
由 Rafael Mendonça França 提交于
Remove unnecessary `dup` from Mapper `add_route`
-
由 Rafael Mendonça França 提交于
titleizing the New Link
-
由 Thiago Pinto 提交于
-
由 Jori Hardman 提交于
-
由 Sean Griffin 提交于
Fix minor typo in testing guide [ci skip]
-
由 Dave Powers 提交于
[ci skip]
-
- 20 7月, 2015 18 次提交
-
-
由 Sean Griffin 提交于
-
由 Sean Griffin 提交于
-
由 Roque Pinel 提交于
This clears the transaction record state when the transaction finishes with a `:committed` status. Considering the following example where `name` is a required attribute. Before we had `new_record?` returning `true` for a persisted record: ```ruby author = Author.create! name: 'foo' author.name = nil author.save # => false author.new_record? # => true ```
-
由 Sean Griffin 提交于
As per the docs, `mark_for_destruction` should do nothing if `autosave` is not set to true. We normally persist associations on a record no matter what if the record is a new record, but we were always skipping records which were `marked_for_destruction?`. Fixes #20882
-
由 Sean Griffin 提交于
Add missing method name to exception description
-
由 Sean Griffin 提交于
fix doc about ActiveRecord::Transactions::ClassMethods#transaction [ci skip]
-
由 Sean Griffin 提交于
grammar fix to content_for method documentation in capture_helper.rb [ci skip]
-
由 David Heinemeier Hansson 提交于
Use digest cache in development.
-
由 Mehmet Emin İNAÇ 提交于
-
由 Mehmet Emin İNAÇ 提交于
-
由 Sean Griffin 提交于
-
由 Sean Griffin 提交于
Freeze string literals when not mutated.
-
由 schneems 提交于
I wrote a utility that helps find areas where you could optimize your program using a frozen string instead of a string literal, it's called [let_it_go](https://github.com/schneems/let_it_go). After going through the output and adding `.freeze` I was able to eliminate the creation of 1,114 string objects on EVERY request to [codetriage](codetriage.com). How does this impact execution? To look at memory: ```ruby require 'get_process_mem' mem = GetProcessMem.new GC.start GC.disable 1_114.times { " " } before = mem.mb after = mem.mb GC.enable puts "Diff: #{after - before} mb" ``` Creating 1,114 string objects results in `Diff: 0.03125 mb` of RAM allocated on every request. Or 1mb every 32 requests. To look at raw speed: ```ruby require 'benchmark/ips' number_of_objects_reduced = 1_114 Benchmark.ips do |x| x.report("freeze") { number_of_objects_reduced.times { " ".freeze } } x.report("no-freeze") { number_of_objects_reduced.times { " " } } end ``` We get the results ``` Calculating ------------------------------------- freeze 1.428k i/100ms no-freeze 609.000 i/100ms ------------------------------------------------- freeze 14.363k (± 8.5%) i/s - 71.400k no-freeze 6.084k (± 8.1%) i/s - 30.450k ``` Now we can do some maths: ```ruby ips = 6_226k # iterations / 1 second call_time_before = 1.0 / ips # seconds per iteration ips = 15_254 # iterations / 1 second call_time_after = 1.0 / ips # seconds per iteration diff = call_time_before - call_time_after number_of_objects_reduced * diff * 100 # => 0.4530373333993266 miliseconds saved per request ``` So we're shaving off 1 second of execution time for every 220 requests. Is this going to be an insane speed boost to any Rails app: nope. Should we merge it: yep. p.s. If you know of a method call that doesn't modify a string input such as [String#gsub](https://github.com/schneems/let_it_go/blob/b0e2da69f0cca87ab581022baa43291cdf48638c/lib/let_it_go/core_ext/string.rb#L37) please [give me a pull request to the appropriate file](https://github.com/schneems/let_it_go/blob/b0e2da69f0cca87ab581022baa43291cdf48638c/lib/let_it_go/core_ext/string.rb#L37), or open an issue in LetItGo so we can track and freeze more strings. Keep those strings Frozen ![](https://www.dropbox.com/s/z4dj9fdsv213r4v/let-it-go.gif?dl=1)
-
由 Sean Griffin 提交于
Fix exception overwritten for parameters fetch method
-
由 Sean Griffin 提交于
-
由 Sean Griffin 提交于
Since the counter cache was properly being updated, the model became stale. Simply reloading the model before attempting to destroy is sufficient for this case. I believe this is enough of an edge case to be a valid change to the tests, even though it represents a potential breaking change.
-
由 Stefan Kanev 提交于
Also removes a false positive test that depends on the fixed bug: At this time, counter_cache does not work with polymorphic relationships (which is a bug). The test was added to make sure that no StaleObjectError is raised when the car is destroyed. No such error is currently raised because the lock version is not incremented by appending a wheel to the car. Furthermore, `assert_difference` succeeds because `car.wheels.count` does not check the counter cache, but the collection size. The test will fail if it is replaced with `car.wheels_count || 0`.
-
由 Kasper Timm Hansen 提交于
Fix `TimeWithZone#eql?` to handle `TimeWithZone` created from `DateTime`
-
- 19 7月, 2015 5 次提交
-
-
由 Roque Pinel 提交于
Before: ```ruby twz = DateTime.now.in_time_zone twz.eql?(twz.dup) => false ``` Now: ```ruby twz = DateTime.now.in_time_zone twz.eql?(twz.dup) => true ``` Please notice that this fix the `TimeWithZone` comparison to itself, not to `DateTime`. Based on #3725, `DateTime` should not be equal to `TimeWithZone`.
-
由 Kasper Timm Hansen 提交于
Fix formatting of force_ssl options documentation [ci skip]
-
由 Eliot Sykes 提交于
-
由 Abdelkader Boudih 提交于
[ci skip] Fix typo in #any? RDoc
-
由 Sean Griffin 提交于
Added examples to DateAndTime::Calculations [ci skip]
-