awesome_print 1.8.0 → 2.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Appraisals +16 -48
  4. data/CHANGELOG.md +10 -1
  5. data/LICENSE +16 -19
  6. data/README.md +3 -10
  7. data/lib/ap.rb +1 -5
  8. data/lib/awesome_print.rb +7 -29
  9. data/lib/awesome_print/colorize.rb +2 -0
  10. data/lib/awesome_print/core_ext/active_support.rb +7 -0
  11. data/lib/awesome_print/core_ext/awesome_method_array.rb +0 -6
  12. data/lib/awesome_print/core_ext/class.rb +0 -5
  13. data/lib/awesome_print/core_ext/kernel.rb +0 -5
  14. data/lib/awesome_print/core_ext/logger.rb +0 -5
  15. data/lib/awesome_print/core_ext/object.rb +0 -5
  16. data/lib/awesome_print/core_ext/string.rb +0 -5
  17. data/lib/awesome_print/formatter.rb +38 -98
  18. data/lib/awesome_print/formatters/array_formatter.rb +10 -7
  19. data/lib/awesome_print/formatters/base_formatter.rb +17 -50
  20. data/lib/awesome_print/formatters/bigdecimal_formatter.rb +20 -0
  21. data/lib/awesome_print/formatters/class_formatter.rb +5 -6
  22. data/lib/awesome_print/formatters/dir_formatter.rb +4 -6
  23. data/lib/awesome_print/formatters/ext/active_model_error_formatter.rb +44 -0
  24. data/lib/awesome_print/formatters/ext/active_record_attributeset_formatter.rb +27 -0
  25. data/lib/awesome_print/formatters/ext/active_record_class_formatter.rb +43 -0
  26. data/lib/awesome_print/formatters/ext/active_record_instance_formatter.rb +48 -0
  27. data/lib/awesome_print/formatters/ext/active_record_relation_formatter.rb +19 -0
  28. data/lib/awesome_print/formatters/ext/bson_objectid_formatter.rb +20 -0
  29. data/lib/awesome_print/formatters/ext/hash_with_indifferent_access_formatter.rb +20 -0
  30. data/lib/awesome_print/formatters/ext/mongoid_document_formatter.rb +59 -0
  31. data/lib/awesome_print/formatters/ext/nokogiri_document_formatter.rb +30 -0
  32. data/lib/awesome_print/formatters/ext/nokogiri_node_formatter.rb +29 -0
  33. data/lib/awesome_print/formatters/ext/nokogiri_nodeset_formatter.rb +32 -0
  34. data/lib/awesome_print/formatters/ext/sequel_dataset_formatter.rb +20 -0
  35. data/lib/awesome_print/formatters/ext/sequel_model_class_formatter.rb +25 -0
  36. data/lib/awesome_print/formatters/ext/sequel_model_formatter.rb +26 -0
  37. data/lib/awesome_print/formatters/ext/time_with_zone_formatter.rb +24 -0
  38. data/lib/awesome_print/formatters/fallback_formatter.rb +55 -0
  39. data/lib/awesome_print/formatters/false_class_formatter.rb +15 -0
  40. data/lib/awesome_print/formatters/file_formatter.rb +4 -6
  41. data/lib/awesome_print/formatters/hash_formatter.rb +12 -7
  42. data/lib/awesome_print/formatters/integer_formatter.rb +11 -0
  43. data/lib/awesome_print/formatters/method_formatter.rb +8 -6
  44. data/lib/awesome_print/formatters/module_formatter.rb +18 -0
  45. data/lib/awesome_print/formatters/nil_class_formatter.rb +19 -0
  46. data/lib/awesome_print/formatters/object_formatter.rb +20 -7
  47. data/lib/awesome_print/formatters/open_struct.rb +19 -0
  48. data/lib/awesome_print/formatters/range_formatter.rb +11 -0
  49. data/lib/awesome_print/formatters/rational_formatter.rb +15 -0
  50. data/lib/awesome_print/formatters/set_formatter.rb +19 -0
  51. data/lib/awesome_print/formatters/simple_formatter.rb +10 -8
  52. data/lib/awesome_print/formatters/string_formatter.rb +14 -0
  53. data/lib/awesome_print/formatters/struct_formatter.rb +8 -6
  54. data/lib/awesome_print/formatters/symbol_formatter.rb +18 -0
  55. data/lib/awesome_print/formatters/true_class_formatter.rb +15 -0
  56. data/lib/awesome_print/formatters/unbound_method_formatter.rb +15 -0
  57. data/lib/awesome_print/inspector.rb +20 -16
  58. data/lib/awesome_print/limiter.rb +63 -0
  59. data/lib/awesome_print/registrar.rb +20 -0
  60. data/lib/awesome_print/version.rb +6 -6
  61. data/spec/formatters/array_spec.rb +251 -0
  62. data/spec/formatters/big_decimal_spec.rb +28 -0
  63. data/spec/formatters/class_spec.rb +91 -0
  64. data/spec/formatters/dir_file_spec.rb +43 -0
  65. data/spec/{ext → formatters/ext}/active_record_spec.rb +27 -63
  66. data/spec/{ext → formatters/ext}/active_support_spec.rb +6 -6
  67. data/spec/{ext → formatters/ext}/mongoid_spec.rb +4 -41
  68. data/spec/{ext → formatters/ext}/nokogiri_spec.rb +0 -0
  69. data/spec/formatters/hash_spec.rb +284 -0
  70. data/spec/{methods_spec.rb → formatters/methods_spec.rb} +13 -7
  71. data/spec/{objects_spec.rb → formatters/objects_spec.rb} +49 -0
  72. data/spec/{ext → formatters}/ostruct_spec.rb +1 -0
  73. data/spec/formatters/set_spec.rb +49 -0
  74. data/spec/formatters/struct_spec.rb +61 -0
  75. data/spec/merge_options_spec.rb +13 -0
  76. data/spec/misc_spec.rb +21 -21
  77. data/spec/spec_helper.rb +5 -10
  78. data/spec/support/active_record_data/5_1_diana.txt +104 -0
  79. data/spec/support/active_record_data/5_1_multi.txt +210 -0
  80. data/spec/support/active_record_data/5_2_diana.txt +104 -0
  81. data/spec/support/active_record_data/5_2_multi.txt +210 -0
  82. data/spec/support/ext_verifier.rb +0 -15
  83. data/spec/support/mongoid_versions.rb +4 -4
  84. data/spec/support/rails_versions.rb +10 -20
  85. metadata +98 -87
  86. data/lib/awesome_print/core_ext/method.rb +0 -21
  87. data/lib/awesome_print/ext/action_view.rb +0 -22
  88. data/lib/awesome_print/ext/active_record.rb +0 -78
  89. data/lib/awesome_print/ext/active_support.rb +0 -47
  90. data/lib/awesome_print/ext/mongo_mapper.rb +0 -124
  91. data/lib/awesome_print/ext/mongoid.rb +0 -67
  92. data/lib/awesome_print/ext/nobrainer.rb +0 -52
  93. data/lib/awesome_print/ext/nokogiri.rb +0 -45
  94. data/lib/awesome_print/ext/ostruct.rb +0 -27
  95. data/lib/awesome_print/ext/ripple.rb +0 -71
  96. data/lib/awesome_print/ext/sequel.rb +0 -58
  97. data/spec/ext/action_view_spec.rb +0 -18
  98. data/spec/ext/mongo_mapper_spec.rb +0 -261
  99. data/spec/ext/nobrainer_spec.rb +0 -59
  100. data/spec/ext/ripple_spec.rb +0 -48
  101. data/spec/formats_spec.rb +0 -779
  102. data/spec/support/active_record_data/3_2_diana.txt +0 -24
  103. data/spec/support/active_record_data/3_2_diana_legacy.txt +0 -24
  104. data/spec/support/active_record_data/3_2_multi.txt +0 -50
  105. data/spec/support/active_record_data/3_2_multi_legacy.txt +0 -50
  106. data/spec/support/active_record_data/4_0_diana.txt +0 -98
  107. data/spec/support/active_record_data/4_0_multi.txt +0 -198
  108. data/spec/support/active_record_data/4_1_diana.txt +0 -97
  109. data/spec/support/active_record_data/4_1_multi.txt +0 -196
  110. data/spec/support/active_record_data/4_2_diana.txt +0 -109
  111. data/spec/support/active_record_data/4_2_diana_legacy.txt +0 -109
  112. data/spec/support/active_record_data/4_2_multi.txt +0 -220
  113. data/spec/support/active_record_data/4_2_multi_legacy.txt +0 -220
@@ -7,12 +7,20 @@ RSpec.describe 'Single method' do
7
7
 
8
8
  it 'plain: should handle a method with no arguments' do
9
9
  method = ''.method(:upcase)
10
- expect(method.ai(plain: true)).to eq('String#upcase()')
10
+ if RUBY_VERSION >= '2.4.0'
11
+ expect(method.ai(plain: true)).to eq('String#upcase(*arg1)')
12
+ else
13
+ expect(method.ai(plain: true)).to eq('String#upcase()')
14
+ end
11
15
  end
12
16
 
13
17
  it 'color: should handle a method with no arguments' do
14
18
  method = ''.method(:upcase)
15
- expect(method.ai).to eq("\e[1;33mString\e[0m#\e[0;35mupcase\e[0m\e[0;37m()\e[0m")
19
+ if RUBY_VERSION >= '2.4.0'
20
+ expect(method.ai).to eq("\e[1;33mString\e[0m#\e[0;35mupcase\e[0m\e[0;37m(*arg1)\e[0m")
21
+ else
22
+ expect(method.ai).to eq("\e[1;33mString\e[0m#\e[0;35mupcase\e[0m\e[0;37m()\e[0m")
23
+ end
16
24
  end
17
25
 
18
26
  it 'plain: should handle a method with one argument' do
@@ -54,7 +62,9 @@ RSpec.describe 'Single method' do
54
62
  method = ''.method(:is_a?)
55
63
  expect(method.ai).to eq("\e[1;33mString (Kernel)\e[0m#\e[0;35mis_a?\e[0m\e[0;37m(arg1)\e[0m")
56
64
  end
65
+ end
57
66
 
67
+ RSpec.describe 'unbound methods' do
58
68
  it 'plain: should handle an unbound method' do
59
69
  class Hello
60
70
  def world; end
@@ -68,11 +78,7 @@ RSpec.describe 'Single method' do
68
78
  def world(a, b); end
69
79
  end
70
80
  method = Hello.instance_method(:world)
71
- if RUBY_VERSION < '1.9.2'
72
- expect(method.ai).to eq("\e[1;33mHello (unbound)\e[0m#\e[0;35mworld\e[0m\e[0;37m(arg1, arg2)\e[0m")
73
- else
74
- expect(method.ai).to eq("\e[1;33mHello (unbound)\e[0m#\e[0;35mworld\e[0m\e[0;37m(a, b)\e[0m")
75
- end
81
+ expect(method.ai).to eq("\e[1;33mHello (unbound)\e[0m#\e[0;35mworld\e[0m\e[0;37m(a, b)\e[0m")
76
82
  end
77
83
  end
78
84
 
@@ -167,5 +167,54 @@ EOS
167
167
  expect(out).to be_similar_to(str)
168
168
  expect(hello.ai(plain: true, raw: false)).to eq(hello.inspect)
169
169
  end
170
+
171
+ it 'object_id' do
172
+ class Hello
173
+ def initialize
174
+ @abra = 1
175
+ @ca = 2
176
+ @dabra = 3
177
+ end
178
+ end
179
+
180
+ hello = Hello.new
181
+ out = hello.ai(plain: true, raw: true, object_id: false)
182
+ str = <<-EOS.strip
183
+ #<Hello
184
+ @abra = 1,
185
+ @ca = 2,
186
+ @dabra = 3
187
+ >
188
+ EOS
189
+ expect(out).to be_similar_to(str)
190
+ expect(hello.ai(plain: true, raw: false)).to eq(hello.inspect)
191
+ end
192
+
193
+ it 'class_name' do
194
+ class Hello
195
+ def initialize
196
+ @abra = 1
197
+ @ca = 2
198
+ @dabra = 3
199
+ end
200
+
201
+ def to_s
202
+ "CustomizedHello"
203
+ end
204
+ end
205
+
206
+ hello = Hello.new
207
+ out = hello.ai(plain: true, raw: true, class_name: :to_s)
208
+ str = <<-EOS.strip
209
+ #<CustomizedHello:placeholder_id
210
+ @abra = 1,
211
+ @ca = 2,
212
+ @dabra = 3
213
+ >
214
+ EOS
215
+ expect(out).to be_similar_to(str)
216
+ expect(hello.ai(plain: true, raw: false)).to eq(hello.inspect)
217
+ end
218
+
170
219
  end
171
220
  end
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'ostruct'
2
3
 
3
4
  RSpec.describe 'AwesomePrint Ostruct extension' do
4
5
  before do
@@ -0,0 +1,49 @@
1
+ require_relative '../spec_helper'
2
+ require 'set'
3
+
4
+ RSpec.describe 'AwesomePrint' do
5
+ describe 'Set' do
6
+ before do
7
+ @arr = [1, :two, 'three']
8
+ @set = Set.new(@arr)
9
+ end
10
+
11
+ it 'empty set' do
12
+ expect(Set.new.ai).to eq([].ai)
13
+ end
14
+
15
+ if RUBY_VERSION > '1.9'
16
+ it 'plain multiline' do
17
+ expect(@set.ai(plain: true)).to eq(@arr.ai(plain: true))
18
+ end
19
+
20
+ it 'plain multiline indented' do
21
+ expect(@set.ai(plain: true, indent: 1)).to eq(@arr.ai(plain: true, indent: 1))
22
+ end
23
+
24
+ it 'plain single line' do
25
+ expect(@set.ai(plain: true, multiline: false)).to eq(@arr.ai(plain: true, multiline: false))
26
+ end
27
+
28
+ it 'colored multiline (default)' do
29
+ expect(@set.ai).to eq(@arr.ai)
30
+ end
31
+ else # Prior to Ruby 1.9 the order of set values is unpredicatble.
32
+ it 'plain multiline' do
33
+ expect(@set.sort_by { |x| x.to_s }.ai(plain: true)).to eq(@arr.sort_by { |x| x.to_s }.ai(plain: true))
34
+ end
35
+
36
+ it 'plain multiline indented' do
37
+ expect(@set.sort_by { |x| x.to_s }.ai(plain: true, indent: 1)).to eq(@arr.sort_by { |x| x.to_s }.ai(plain: true, indent: 1))
38
+ end
39
+
40
+ it 'plain single line' do
41
+ expect(@set.sort_by { |x| x.to_s }.ai(plain: true, multiline: false)).to eq(@arr.sort_by { |x| x.to_s }.ai(plain: true, multiline: false))
42
+ end
43
+
44
+ it 'colored multiline (default)' do
45
+ expect(@set.sort_by { |x| x.to_s }.ai).to eq(@arr.sort_by { |x| x.to_s }.ai)
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,61 @@
1
+ require_relative '../spec_helper'
2
+
3
+ RSpec.describe 'AwesomePrint' do
4
+ describe 'Struct' do
5
+ before do
6
+ @struct = unless defined?(Struct::SimpleStruct)
7
+ Struct.new('SimpleStruct', :name, :address).new
8
+ else
9
+ Struct::SimpleStruct.new
10
+ end
11
+ @struct.name = 'Herman Munster'
12
+ @struct.address = '1313 Mockingbird Lane'
13
+ end
14
+
15
+ it 'empty struct' do
16
+ expect(Struct.new('EmptyStruct').ai).to eq("\e[1;33mStruct::EmptyStruct < Struct\e[0m")
17
+ end
18
+
19
+ it 'plain multiline' do
20
+ s1 = <<-EOS.strip
21
+ address = \"1313 Mockingbird Lane\",
22
+ name = \"Herman Munster\"
23
+ EOS
24
+ s2 = <<-EOS.strip
25
+ name = \"Herman Munster\",
26
+ address = \"1313 Mockingbird Lane\"
27
+ EOS
28
+ expect(@struct.ai(plain: true)).to satisfy { |out| out.match(s1) || out.match(s2) }
29
+ end
30
+
31
+ it 'plain multiline indented' do
32
+ s1 = <<-EOS.strip
33
+ address = "1313 Mockingbird Lane",
34
+ name = "Herman Munster"
35
+ EOS
36
+ s2 = <<-EOS.strip
37
+ name = "Herman Munster",
38
+ address = "1313 Mockingbird Lane"
39
+ EOS
40
+ expect(@struct.ai(plain: true, indent: 1)).to satisfy { |out| out.match(s1) || out.match(s2) }
41
+ end
42
+
43
+ it 'plain single line' do
44
+ s1 = 'address = "1313 Mockingbird Lane", name = "Herman Munster"'
45
+ s2 = 'name = "Herman Munster", address = "1313 Mockingbird Lane"'
46
+ expect(@struct.ai(plain: true, multiline: false)).to satisfy { |out| out.match(s1) || out.match(s2) }
47
+ end
48
+
49
+ it 'colored multiline (default)' do
50
+ s1 = <<-EOS.strip
51
+ address\e[0;37m = \e[0m\e[0;33m\"1313 Mockingbird Lane\"\e[0m,
52
+ name\e[0;37m = \e[0m\e[0;33m\"Herman Munster\"\e[0m
53
+ EOS
54
+ s2 = <<-EOS.strip
55
+ name\e[0;37m = \e[0m\e[0;33m\"Herman Munster\"\e[0m,
56
+ address\e[0;37m = \e[0m\e[0;33m\"1313 Mockingbird Lane\"\e[0m
57
+ EOS
58
+ expect(@struct.ai).to satisfy { |out| out.include?(s1) || out.include?(s2) }
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,13 @@
1
+ require_relative 'spec_helper'
2
+
3
+ RSpec.describe 'AwesomePrint' do
4
+ describe 'Utility methods' do
5
+ it 'should merge options' do
6
+ ap = AwesomePrint::Inspector.new
7
+ ap.send(:merge_options!, { color: { array: :black }, indent: 0 })
8
+ options = ap.instance_variable_get('@options')
9
+ expect(options[:color][:array]).to eq(:black)
10
+ expect(options[:indent]).to eq(0)
11
+ end
12
+ end
13
+ end
@@ -18,7 +18,7 @@ RSpec.describe 'AwesomePrint' do
18
18
  'ice'.freeze
19
19
  end
20
20
  end
21
- expect(weird.new.ai(plain: false)).to eq('ice')
21
+ expect(weird.new.ai(plain: true)).to eq('ice')
22
22
  end
23
23
 
24
24
  # See https://github.com/awesome-print/awesome_print/issues/35
@@ -45,7 +45,7 @@ RSpec.describe 'AwesomePrint' do
45
45
 
46
46
  # Require different file name this time (lib/ap.rb vs. lib/awesome_print).
47
47
  it "several require 'awesome_print' should do no harm" do
48
- require File.expand_path(File.dirname(__FILE__) + '/../lib/ap')
48
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/awesome_print')
49
49
  expect { rand.ai }.not_to raise_error
50
50
  end
51
51
 
@@ -58,7 +58,7 @@ RSpec.describe 'AwesomePrint' do
58
58
  it 'IPAddr workaround' do
59
59
  require 'ipaddr'
60
60
  ipaddr = IPAddr.new('3ffe:505:2::1')
61
- expect(ipaddr.ai).to eq('#<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>')
61
+ expect(ipaddr.ai(plain: true)).to eq('#<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>')
62
62
  end
63
63
 
64
64
  # See https://github.com/awesome-print/awesome_print/issues/139
@@ -88,23 +88,23 @@ RSpec.describe 'AwesomePrint' do
88
88
 
89
89
  it 'wraps multiline ap output with <pre> tag with colorized <kbd>' do
90
90
  markup = [1, :two, 'three']
91
- expect(markup.ai(html: true)).to eq <<-EOS.strip_heredoc.strip
92
- <pre>[
93
- <kbd style="color:white">[0] </kbd><kbd style="color:blue">1</kbd>,
94
- <kbd style="color:white">[1] </kbd><kbd style="color:darkcyan">:two</kbd>,
95
- <kbd style="color:white">[2] </kbd><kbd style="color:brown">&quot;three&quot;</kbd>
96
- ]</pre>
91
+ expect(markup.ai(html: true)).to eq <<-EOS.strip
92
+ <pre>[
93
+ <kbd style="color:white">[0] </kbd><kbd style="color:blue">1</kbd>,
94
+ <kbd style="color:white">[1] </kbd><kbd style="color:darkcyan">:two</kbd>,
95
+ <kbd style="color:white">[2] </kbd><kbd style="color:brown">&quot;three&quot;</kbd>
96
+ ]</pre>
97
97
  EOS
98
98
  end
99
99
 
100
100
  it 'wraps hash ap output with only an outer <pre> tag' do
101
101
  markup = [{ 'hello' => 'world' }]
102
- expect(markup.ai(html: true)).to eq <<-EOS.strip_heredoc.strip
103
- <pre>[
104
- <kbd style="color:white">[0] </kbd>{
105
- &quot;hello&quot;<kbd style="color:slategray"> =&gt; </kbd><kbd style="color:brown">&quot;world&quot;</kbd>
106
- }
107
- ]</pre>
102
+ expect(markup.ai(html: true)).to eq <<-EOS.strip
103
+ <pre>[
104
+ <kbd style="color:white">[0] </kbd>{
105
+ &quot;hello&quot;<kbd style="color:slategray"> =&gt; </kbd><kbd style="color:brown">&quot;world&quot;</kbd>
106
+ }
107
+ ]</pre>
108
108
  EOS
109
109
  end
110
110
 
@@ -130,12 +130,12 @@ RSpec.describe 'AwesomePrint' do
130
130
  AwesomePrint.defaults = { indent: -2, sort_keys: true }
131
131
  hash = { [0, 0, 255] => :yellow, :red => 'rgb(255, 0, 0)', 'magenta' => 'rgb(255, 0, 255)' }
132
132
  out = hash.ai(plain: true)
133
- expect(out).to eq <<-EOS.strip_heredoc.strip
134
- {
135
- [ 0, 0, 255 ] => :yellow,
136
- "magenta" => "rgb(255, 0, 255)",
137
- :red => "rgb(255, 0, 0)"
138
- }
133
+ expect(out).to eq <<-EOS.strip
134
+ {
135
+ [ 0, 0, 255 ] => :yellow,
136
+ "magenta" => "rgb(255, 0, 255)",
137
+ :red => "rgb(255, 0, 0)"
138
+ }
139
139
  EOS
140
140
  end
141
141
  end
@@ -1,9 +1,3 @@
1
- # Copyright (c) 2010-2016 Michael Dvorkin and contributors
2
- #
3
- # Awesome Print is freely distributable under the terms of MIT license.
4
- # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
- #------------------------------------------------------------------------------
6
- #
7
1
  # Running specs from the command line:
8
2
  # $ rake spec # Entire spec suite.
9
3
  # $ rspec spec/objects_spec.rb # Individual spec file.
@@ -15,8 +9,9 @@
15
9
  # $ gem install rspec -v=2.6.0
16
10
  #
17
11
 
18
- require 'simplecov'
19
- SimpleCov.start
12
+ # require 'simplecov'
13
+ # SimpleCov.start
14
+
20
15
  $LOAD_PATH.unshift(File.dirname(__FILE__))
21
16
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
22
17
 
@@ -24,6 +19,8 @@ Dir[File.dirname(__FILE__) + '/support/**/*.rb'].each do |file|
24
19
  require file
25
20
  end
26
21
 
22
+ require 'byebug'
23
+
27
24
  ExtVerifier.require_dependencies!(
28
25
  %w(
29
26
  rails
@@ -31,8 +28,6 @@ ExtVerifier.require_dependencies!(
31
28
  action_view
32
29
  active_support/all
33
30
  mongoid
34
- mongo_mapper
35
- ripple nobrainer
36
31
  )
37
32
  )
38
33
  require 'nokogiri'
@@ -0,0 +1,104 @@
1
+ #<User:placeholder_id
2
+ @_start_transaction_state = {},
3
+ @aggregation_cache = {},
4
+ @association_cache = {},
5
+ @destroyed = false,
6
+ @marked_for_destruction = false,
7
+ @new_record = true,
8
+ @readonly = false,
9
+ @transaction_state = nil,
10
+ attr_accessor :attributes = #<ActiveRecord::AttributeSet:placeholder_id
11
+ @attributes = {
12
+ "admin" => #<ActiveRecord::Attribute::FromUser:placeholder_id
13
+ @original_attribute = #<ActiveRecord::Attribute::FromDatabase:placeholder_id
14
+ @original_attribute = nil,
15
+ attr_reader :name = "admin",
16
+ attr_reader :type = #<ActiveModel::Type::Boolean:placeholder_id
17
+ attr_reader :limit = nil,
18
+ attr_reader :precision = nil,
19
+ attr_reader :scale = nil
20
+ >,
21
+ attr_reader :value_before_type_cast = nil
22
+ >,
23
+ attr_reader :name = "admin",
24
+ attr_reader :type = #<ActiveModel::Type::Boolean:placeholder_id
25
+ attr_reader :limit = nil,
26
+ attr_reader :precision = nil,
27
+ attr_reader :scale = nil
28
+ >,
29
+ attr_reader :value_before_type_cast = false
30
+ >,
31
+ "created_at" => #<ActiveRecord::Attribute::FromUser:placeholder_id
32
+ @original_attribute = #<ActiveRecord::Attribute::FromDatabase:placeholder_id
33
+ @original_attribute = nil,
34
+ attr_reader :name = "created_at",
35
+ attr_reader :type = #<ActiveRecord::Type::DateTime:placeholder_id
36
+ attr_reader :limit = nil,
37
+ attr_reader :precision = nil,
38
+ attr_reader :scale = nil
39
+ >,
40
+ attr_reader :value_before_type_cast = nil
41
+ >,
42
+ attr_reader :name = "created_at",
43
+ attr_reader :type = #<ActiveRecord::Type::DateTime:placeholder_id
44
+ attr_reader :limit = nil,
45
+ attr_reader :precision = nil,
46
+ attr_reader :scale = nil
47
+ >,
48
+ attr_reader :value_before_type_cast = "1992-10-10 12:30:00"
49
+ >,
50
+ "id" => #<ActiveRecord::Attribute::FromDatabase:placeholder_id
51
+ @original_attribute = nil,
52
+ attr_reader :name = "id",
53
+ attr_reader :type = #<ActiveModel::Type::Integer:placeholder_id
54
+ @range = -2147483648...2147483648,
55
+ attr_reader :limit = nil,
56
+ attr_reader :precision = nil,
57
+ attr_reader :scale = nil
58
+ >,
59
+ attr_reader :value_before_type_cast = nil
60
+ >,
61
+ "name" => #<ActiveRecord::Attribute::FromUser:placeholder_id
62
+ @original_attribute = #<ActiveRecord::Attribute::FromDatabase:placeholder_id
63
+ @original_attribute = nil,
64
+ attr_reader :name = "name",
65
+ attr_reader :type = #<ActiveModel::Type::String:placeholder_id
66
+ attr_reader :limit = nil,
67
+ attr_reader :precision = nil,
68
+ attr_reader :scale = nil
69
+ >,
70
+ attr_reader :value_before_type_cast = nil
71
+ >,
72
+ attr_reader :name = "name",
73
+ attr_reader :type = #<ActiveModel::Type::String:placeholder_id
74
+ attr_reader :limit = nil,
75
+ attr_reader :precision = nil,
76
+ attr_reader :scale = nil
77
+ >,
78
+ attr_reader :value_before_type_cast = "Diana"
79
+ >,
80
+ "rank" => #<ActiveRecord::Attribute::FromUser:placeholder_id
81
+ @original_attribute = #<ActiveRecord::Attribute::FromDatabase:placeholder_id
82
+ @original_attribute = nil,
83
+ attr_reader :name = "rank",
84
+ attr_reader :type = #<ActiveModel::Type::Integer:placeholder_id
85
+ @range = -2147483648...2147483648,
86
+ attr_reader :limit = nil,
87
+ attr_reader :precision = nil,
88
+ attr_reader :scale = nil
89
+ >,
90
+ attr_reader :value_before_type_cast = nil
91
+ >,
92
+ attr_reader :name = "rank",
93
+ attr_reader :type = #<ActiveModel::Type::Integer:placeholder_id
94
+ @range = -2147483648...2147483648,
95
+ attr_reader :limit = nil,
96
+ attr_reader :precision = nil,
97
+ attr_reader :scale = nil
98
+ >,
99
+ attr_reader :value_before_type_cast = 1
100
+ >
101
+ }
102
+ >,
103
+ attr_accessor :destroyed_by_association = nil
104
+ >