| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
queues in the classes that use them instead.
|
|\
| |
| | |
Prompt to run rake when accidentally typed rails
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Developers from all levels will accidentally run rake tasks using the `rails` keyword when they meant to use `rake`. Often times beginners struggle with the difference between the tools. The most common example would be `$ rails db:migrate`
Rather than telling the developer simply that they did not use a valid rails command, we can see if it was a valid rake command first. If it is a valid rake command we can auto execute it giving the user a period of time to cancel if that isn't what they intended.
Here is what `rake db:migrate` would look like if you cancel the command:
```sh
$ rails db:migrate
Assuming you meant: $ rake db:migrate
press any key to cancel in 3 seconds
>
command terminated ...
```
Here is what it looks like if you don't cancel the command:
```sh
$ rails db:migrate
Assuming you meant: $ rake db:migrate
press any key to cancel in 3 seconds
>
Running: $ rake db:migrate
== Foo: migrating ============================================================
== Foo: migrated (0.0000s) ===================================================
```
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Before:
Calculating -------------------------------------
ar 87 i/100ms
-------------------------------------------------
ar 823.4 (±11.8%) i/s - 4089 in 5.070234s
After:
Calculating -------------------------------------
ar 88 i/100ms
-------------------------------------------------
ar 894.1 (±3.9%) i/s - 4488 in 5.028161s
Same test as 3a6dfca7f5f5bd45cea2f6ac348178e72423e1d5
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
before:
Calculating -------------------------------------
ar 83 i/100ms
-------------------------------------------------
ar 832.1 (±4.0%) i/s - 4233 in 5.096611s
after:
Calculating -------------------------------------
ar 87 i/100ms
-------------------------------------------------
ar 839.0 (±9.3%) i/s - 4176 in 5.032782s
Benchmark:
require 'config/environment'
require 'benchmark/ips'
GC.disable
unless User.find_by_login('tater')
u = User.new
u.login = 'tater'
u.save!
end
def active_record
user = User.find_by_login('tater')
starred = user.starred_items.count
end
active_record
Benchmark.ips do |x|
x.report("ar") { active_record }
end
|
|\ \
| | |
| | | |
make Hash#extract! more symmetric with Hash#slice
|
| | | |
|
| | | |
|
|\ \ \
| | | |
| | | | |
trailling whitespace cleanup in query_methods.rb [ci skip]
|
| | | | |
|
|\ \ \ \
| |/ / /
|/| | | |
Split asset url helpers into seperate AssetUrlHelper
|
|/ / / |
|
| | |
| | |
| | |
| | |
| | | |
Now we are using teh SynchronousQueue in the test environment instead of
the TestQueue
|
| | | |
|
|\ \ \
| | | |
| | | | |
Support another file type .rake in `rake notes`
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
MemCacheStore's move to dalli as a backend broke :race_condition_ttl support
|
| | | | |
| | | | |
| | | | |
| | | | | |
:race_condition_ttl working correctly.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
warning removed: shadowing outer local variable - value
|
| | | | | | |
|
|\ \ \ \ \ \
| |_|_|/ / /
|/| | | | | |
learn ActiveReccord::Querying#order work with hash arguments
|
|/ / / / / |
|
|/ / / /
| | | |
| | | |
| | | | |
the queue to actually deliver your emails.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This improves memory and performance without having to use symbols which
present DoS problems. Thanks @headius and @tenderlove for the
suggestion.
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
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This reverts commit 86c3dfbd47cb96af02daaa655963292b1a1b110e.
Conflicts:
activerecord/lib/active_record/attribute_methods/read.rb
Reason: whilst this increased performance, it also presents a DoS risk
via memory exhaustion if users were allowing user input to dictate the
arguments of read/write_attribute. I will investigate alternative ways
to cut down on string allocations here.
|
|\ \ \ \
| | | | |
| | | | | |
Cosmetic changes: remove trailing whitespaces from tests
|
|/ / / / |
|
|\ \ \ \
| | | | |
| | | | | |
update AC::Parameters#permit documentation [ci skip]
|
|/ / / /
| | | |
| | | |
| | | | |
bdd105d changes the behaviour of AC::Parameters#permit.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
all the hash
params.require(:person).permit(:projects_attributes) was returning
=> {"projects_attributes"=>{"0"=>{"name"=>"Project 1"}}}
When should return
=> {}
You should be doing ...
params.require(:person).permit(projects_attributes: :name)
to get just the projects attributes you want to allow
|
| | | | |
|
|\ \ \ \
| |/ / /
|/| | | |
CacheDigests: Support templates in directories several levels deep
|
|/ / / |
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
senny/3675_assert_template_twice_against_same_partial
assert_template works when the same partial was rendered multiple times
|
| | | |
| | | |
| | | |
| | | |
| | | | |
this refactoring extracts the semi complex data structure of rendered locals
per view into into a separate class
|
| | | | |
|
|\ \ \ \
| |/ / /
|/| | | |
No need to test for rack-cache present in gem file
|
|/ / /
| | |
| | |
| | |
| | |
| | | |
as it's removed here
1fc795468525d8622cdca474a54c8310a514aa46
|
|\ \ \
| | | |
| | | | |
Expand the caveat about models in migrations in the rails guide.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is an attempt to address issue #6939, where an earlier migration
added a column to the database, and a later migration uses a model and
references that column.
When both migrations were run together with `rake db:migrate` the column
information in memory still referenced the old table structure.
Running the migrations separately fixed this, as a new connection was
then established before referencing the model. Explicitly calling
`reset_column_information` is a more reliable workaround.
|
|\ \ \ \
| | | | |
| | | | | |
Eager autoload Preloader classes
|
|/ / / /
| | | |
| | | |
| | | |
| | | | |
Without eager autoloading, these would be autoloaded
only when #preloader_for is called, which is too late
in threaded applications.
|
| | | |
| | | |
| | | |
| | | | |
deprecation message
|
|/ / /
| | |
| | |
| | | |
config.action_view.javascript_expansions to exist
|
|\ \ \
| | | |
| | | | |
remove duplicated require statements in AR test cases
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Build failed with an error "invalid multibyte char (US-ASCII)" in these
files. Apparently, some UTF-8 char disguised as whitespace causes this.
Thanks @rafaelfranca
|
|\ \ \ \
| | | | |
| | | | | |
Offer instructions for pg gem when installed via Homebrew
|
| | | | | |
|