Rails adds a limit of fetching 10 records when using pretty print
ActiveRecord::Relation#pretty_print
is a method that pretty prints an ActiveRecord::Relation
object.
Example
Without pretty print:
1
2
3
irb(main):002:0> Post.limit(2)
Post Load (2.7ms) SELECT "posts".* FROM "posts" ORDER BY "posts"."id" ASC LIMIT $1 [["LIMIT", 2]]
=> #<ActiveRecord::Relation [#<Post id: 1, title: "First Post", body: "First Post Body", created_at: "2022-01-18 07:30:36", updated_at: "2022-01-18 07:30:36">, #<Post id: 2, title: "Second Post", body: "Second Post Body", created_at: "2022-01-18 07:30:36", updated_at: "2022-01-18 07:30:36">]
With pretty print:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
irb(main):003:0> pp Post.limit(2)
Post Load (0.6ms) SELECT "posts".* FROM "posts" ORDER BY "posts"."id" ASC LIMIT $1 [["LIMIT", 2]]
[#<Post:0x00005654ccd32d28
id: 1,
title: "First Post",
body: "First Post Body",
created_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00,
updated_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00>,
#<Post:0x00005654ccd32b98
id: 2,
title: "Second Post",
body: "Second Post Body",
created_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00,
updated_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00>]
=> #<ActiveRecord::Relation [#<Post id: 1, title: "First Post", body: "First Post Body", created_at: "2022-01-18 07:30:36", updated_at: "2022-01-18 07:30:36">, #<Post id: 2, title: "Second Post", body: "Second Post Body", created_at: "2022-01-18 07:30:36", updated_at: "2022-01-18 07:30:36">]
Before
The method works great, but since it loads all the records of the relation, it can be very slow for bigger relations.
Example
1
irb(main):004:0> pp Post.all # Loads all the records
Rails 7
Rails 7 adds a limit of fetching upto 11 records when using pretty print much like ActiveRecord::Base#inspect if the records aren’t already loaded.
Note: The 11th record is not shown. It is only loaded to determine whether there are more records to show. An ellipsis (…) is shown instead of the 11th record.
Example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
irb(main):005:0> pp Post.all
# Loads only 10 records and adds an ellipsis at the end if there are more records
Post Load (0.6ms) SELECT "posts".* FROM "posts" `/*` loading for pp `*/` ORDER BY "posts"."id" ASC LIMIT $1 [["LIMIT", 11]]
[#<Post:0x00007fed44c7abd0
id: 1,
title: "First Post",
body: "First Post Body",
created_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00,
updated_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00>,
#<Post:0x00007fed44c7aa68
id: 2,
title: "Second Post",
body: "Second Post Body",
created_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00,
updated_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00>,
#<Post:0x00007fed44c7a608
id: 3,
title: "Second Post",
body: "Second Post Body",
created_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00,
updated_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00>,
#<Post:0x00007fed44c7a478
id: 4,
title: "Fourth Post",
body: "Fourth Post Body",
created_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00,
updated_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00>,
#<Post:0x00007fed44c79ac8
id: 5,
title: "Fifth Post",
body: "Fifth Post Body",
created_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00,
updated_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00>,
#<Post:0x00007fed44c79398
id: 6,
title: "Sixth Post",
body: "Sixth Post Body",
created_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00,
updated_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00>,
#<Post:0x00007fed44c784c0
id: 7,
title: "Seventh Post",
body: "Seventh Post Body",
created_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00,
updated_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00>,
#<Post:0x00007fed44c73ec0
id: 8,
title: "Eighth Post",
body: "Eighth Post Body",
created_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00,
updated_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00>,
#<Post:0x00007fed44c73858
id: 9,
title: "Ninth Post",
body: "Ninth Post Body",
created_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00,
updated_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00>,
#<Post:0x00007fed44c73538
id: 10,
title: "Tenth Post",
body: "Tenth Post Body",
created_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00,
updated_at: Tue, 18 Jan 2022 07:30:36 UTC +00:00>,
"..."]