| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Allow setting a symbol as path in scope on routes
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Was surprising found that this example doesn't work:
scope :api do
resources :users
end
and the right form to use it is:
scope 'api' do
resources :users
end
I think this should work similary as `namespace` where both are allowed.
These two are equivalent:
namespace :api do
resources :users
end
namespace 'api' do
resources :user
end
|
|
|
|
|
|
| |
Since now these objects are not cached anymore, there's no need to have
these private methods, just instantiate each of them in the necessary
place.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Follow up of the discussion from the original merge commit:
https://github.com/rails/rails/commit/f9cb645dfcb5cc89f59d2f8b58a019486c828c73#commitcomment-1414561
We want to avoid people's mistakes with methods like count and sum when
called with a block, that can easily lead to code performing poorly and
that could be way better written with a db query.
Please check the discussion there for more background.
Closes #8268
|
| |
| |
| |
| |
| |
| |
| | |
Since edd94cee9af1688dd036fc58fd405adb30a5e0da, CollectionProxy
delegates all calculation methods - except count - to the scope,
which does basically what this method was doing, but since we're
delegating from the proxy, the association method was never called.
|
| |
| |
| |
| |
| |
| |
| | |
To perform a sum calculation over the array of elements, use to_a.sum(&block).
Please check the discussion in f9cb645dfcb5cc89f59d2f8b58a019486c828c73
for more context.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit f9cb645dfcb5cc89f59d2f8b58a019486c828c73.
Conflicts:
activerecord/CHANGELOG.md
Revert "Allow blocks for count with ActiveRecord::Relation. Document and test that sum allows blocks"
This reverts commit 9cc2bf69ce296b7351dc612a8366193390a305f3.
Conflicts:
activerecord/lib/active_record/relation/calculations.rb
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This improves memory and performance without having to use symbols which
present DoS problems. Thanks @headius and @tenderlove for the
suggestion.
This was originally committed in
f1765019ce9b6292f2264b4601dad5daaffe3a89, and then reverted in
d3494903719682abc0948bef290af0d3d7b5a440 due to it causing problems in a
real application. This second attempt should solve that.
Benchmark
---------
require 'active_record'
require 'benchmark/ips'
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
class Post < ActiveRecord::Base
connection.create_table :posts, force: true do |t|
t.string :name
end
end
post = Post.create name: 'omg'
Benchmark.ips do |r|
r.report('Post.new') { Post.new name: 'omg' }
r.report('post.name') { post.name }
r.report('post.name=') { post.name = 'omg' }
r.report('Post.find(1).name') { Post.find(1).name }
end
Before
------
Calculating -------------------------------------
Post.new 1419 i/100ms
post.name 7538 i/100ms
post.name= 3024 i/100ms
Post.find(1).name 243 i/100ms
-------------------------------------------------
Post.new 20637.6 (±12.7%) i/s - 102168 in 5.039578s
post.name 1167897.7 (±18.2%) i/s - 5186144 in 4.983077s
post.name= 64305.6 (±9.6%) i/s - 317520 in 4.998720s
Post.find(1).name 2678.8 (±10.8%) i/s - 13365 in 5.051265s
After
-----
Calculating -------------------------------------
Post.new 1431 i/100ms
post.name 7790 i/100ms
post.name= 3181 i/100ms
Post.find(1).name 245 i/100ms
-------------------------------------------------
Post.new 21308.8 (±12.2%) i/s - 105894 in 5.053879s
post.name 1534103.8 (±2.1%) i/s - 7634200 in 4.979405s
post.name= 67441.0 (±7.5%) i/s - 337186 in 5.037871s
Post.find(1).name 2681.9 (±10.6%) i/s - 13475 in 5.084511s
|
| |
|
|
|
|
| |
Around 0.564359s => 0.092244s speed up in my machine.
|
|\
| |
| | |
Store FlashHashes in the session as plain hashes
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
with unstable class names and instance variables.
Refactor FlashHash to take values for its ivars in the constructor, to pretty up FlashHash.from_session_value.
Remove stale comment on FlashHash: it is no longer Marshaled in the session so we can change its implementation.
Remove blank lines I introduced in controller/test_case.rb.
Unit tests for FlashHash#to_session_value.
Put in a compatibility layer to accept FlashHash serializations from Rails 3.0+.
Test that Rails 3.2 session flashes are correctly converted to the new format.
Remove code path for processing Rails 3.0 FlashHashes since they can no longer deserialize.
Fix session['flash'] deletion condition: it will never be empty?, it will either be nil or a hash with 'discard' and 'flashes' keys.
|
|\ \
| | |
| | | |
Coerce strings in create_join_table.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If you accidentally pass a string and a symbol, this breaks. So
we coerce them both to strings.
Fixes #7715
|
|\ \ \
| | | |
| | | | |
Fixed a typo
|
|/ / / |
|
|\ \ \
| | | |
| | | | |
Postgresql adapter: fix handling of BC timestamps
|
| | | | |
|
|\ \ \ \
| |/ / /
|/| | | |
Refactoring, testing and documenting pg_connection.distinct
|
|/ / / |
|
| | | |
|
|\ \ \
| | | |
| | | | |
fix guide with field_with_error proc example
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Initialize accessors to remove some warnings in Ruby 2.0
|
|/ / / / |
|
|\ \ \ \
| |/ / /
|/| | | |
Postgresql doesn't accepts limits on text columns
|
|/ / / |
|
|\ \ \
| | | |
| | | | |
Improved Error handling when parsing database.yaml, Fixes #8143
|
|/ / /
| | |
| | |
| | |
| | | |
Provides a better error message incase the database.yaml
has some errors.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Fix error when using a non-hash query argument named "params" in `url_for`.
Before:
url_for(params: "") # => undefined method `reject!' for "":String
After:
url_for(params: "") # => http://www.example.com?params=`
Closes #8233
|
| | | |
| | | |
| | | |
| | | | |
Merge url for tests and add changelog entry for #8233.
|
|/ / /
| | |
| | |
| | |
| | |
| | | |
With a "params" argument, the following error is raised:
undefined method `reject!` for "":String
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
render every partial with a new `PartialRenderer`.
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This resolves issues when rendering nested partials.
Previously the `PartialRenderer` was reused which led to
situations where the state of the renderer was reset.
Closes #8197
|
|\ \ \
| | | |
| | | | |
Explicit multipart messages respect :parts_order
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
As issue #7978, the order in which ActionMailer
sends multipart messages could be unintentionally
overwritten if a block is passed to the mail
method. This changes the mail method such that
:parts_order is always respected, regardless of
whether a block is passed to mail.
|
| | | | |
|
|/ / / |
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
require bundler groups to include rake-tasks in engines
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
If you generate a full engine, this will include rake tasks from
your gem under the `app` namespace. For example if you have a dependency
on `rspec-rails` in your engine's `gemspec`. You will get the task `app:spec`
Closes #8229
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Displaying error message if validation fail in examples (p tag was missing)
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Remove not used variable.
Remove config attr_reader causing warning.
Fix indent in runner file.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
When using sqlite3 it was attempting to find the database file based on
Rails.root, the problem is that Rails.root is not always present because
we try to first manually load "config/database.yml" instead of loading
the entire app, to make "rails db" faster.
This means that when we're in the root path of the app, calling "rails db"
won't allow us to use Rails.root, making the command fail for sqlite3
with the error:
./rails/commands/dbconsole.rb:62:in `start':
undefined method `root' for Rails:Module (NoMethodError)
The fix is to simply not pass any dir string to File.expand_path, which
will make it use the current directory of the process as base, or the
root path of the app, which is what we want.
When we are in any other subdirectory, calling "rails db" should work
just fine, because "config/database.yml" won't be found, thus "rails db"
will fallback to loading the app, making Rails.root available.
Closes #8257.
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
AR::Base.becomes should not change the STI type
Conflicts:
activerecord/CHANGELOG.md
|