amazing_print 1.0.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/Appraisals +47 -51
- data/CHANGELOG.md +32 -0
- data/Gemfile +2 -0
- data/LICENSE +1 -0
- data/README.md +20 -13
- data/Rakefile +2 -0
- data/lib/amazing_print.rb +19 -17
- data/lib/amazing_print/colorize.rb +2 -0
- data/lib/amazing_print/core_ext/awesome_method_array.rb +3 -1
- data/lib/amazing_print/core_ext/class.rb +2 -0
- data/lib/amazing_print/core_ext/kernel.rb +2 -0
- data/lib/amazing_print/core_ext/logger.rb +11 -2
- data/lib/amazing_print/core_ext/object.rb +2 -0
- data/lib/amazing_print/core_ext/string.rb +5 -2
- data/lib/amazing_print/custom_defaults.rb +3 -1
- data/lib/amazing_print/ext/action_view.rb +3 -1
- data/lib/amazing_print/ext/active_record.rb +9 -18
- data/lib/amazing_print/ext/active_support.rb +2 -0
- data/lib/amazing_print/ext/mongo_mapper.rb +4 -2
- data/lib/amazing_print/ext/mongoid.rb +2 -0
- data/lib/amazing_print/ext/nobrainer.rb +6 -0
- data/lib/amazing_print/ext/nokogiri.rb +2 -0
- data/lib/amazing_print/ext/ostruct.rb +2 -0
- data/lib/amazing_print/ext/ripple.rb +2 -0
- data/lib/amazing_print/ext/sequel.rb +4 -2
- data/lib/amazing_print/formatter.rb +9 -2
- data/lib/amazing_print/formatters.rb +12 -10
- data/lib/amazing_print/formatters/array_formatter.rb +3 -1
- data/lib/amazing_print/formatters/base_formatter.rb +5 -2
- data/lib/amazing_print/formatters/class_formatter.rb +2 -0
- data/lib/amazing_print/formatters/dir_formatter.rb +4 -1
- data/lib/amazing_print/formatters/file_formatter.rb +4 -1
- data/lib/amazing_print/formatters/hash_formatter.rb +4 -2
- data/lib/amazing_print/formatters/method_formatter.rb +2 -0
- data/lib/amazing_print/formatters/object_formatter.rb +14 -13
- data/lib/amazing_print/formatters/simple_formatter.rb +2 -0
- data/lib/amazing_print/formatters/struct_formatter.rb +9 -7
- data/lib/amazing_print/indentator.rb +2 -0
- data/lib/amazing_print/inspector.rb +9 -9
- data/lib/amazing_print/version.rb +3 -1
- data/lib/ap.rb +3 -1
- data/spec/active_record_helper.rb +10 -0
- data/spec/colors_spec.rb +43 -46
- data/spec/core_ext/logger_spec.rb +40 -14
- data/spec/core_ext/string_spec.rb +2 -7
- data/spec/ext/action_controller_spec.rb +40 -0
- data/spec/ext/action_view_spec.rb +8 -1
- data/spec/ext/active_model_spec.rb +37 -0
- data/spec/ext/active_record_spec.rb +42 -7
- data/spec/ext/active_support_spec.rb +12 -1
- data/spec/ext/mongo_mapper_spec.rb +8 -6
- data/spec/ext/mongoid_spec.rb +2 -0
- data/spec/ext/nobrainer_spec.rb +2 -0
- data/spec/ext/nokogiri_spec.rb +2 -0
- data/spec/ext/ostruct_spec.rb +2 -0
- data/spec/ext/ripple_spec.rb +2 -0
- data/spec/ext/sequel_spec.rb +45 -0
- data/spec/formats_spec.rb +10 -8
- data/spec/methods_spec.rb +37 -3
- data/spec/misc_spec.rb +3 -1
- data/spec/objects_spec.rb +2 -0
- data/spec/sequel_helper.rb +18 -0
- data/spec/spec_helper.rb +5 -1
- data/spec/support/active_record_data.rb +2 -0
- data/spec/support/active_record_data/6_1_diana.txt +109 -0
- data/spec/support/active_record_data/6_1_multi.txt +220 -0
- data/spec/support/ext_verifier.rb +9 -4
- data/spec/support/mongoid_versions.rb +2 -0
- data/spec/support/rails_versions.rb +7 -0
- metadata +79 -54
- data/lib/amazing_print/core_ext/method.rb +0 -21
@@ -1,6 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
RSpec.describe 'AmazingPrint::ActiveSupport', skip: -> { !ExtVerifier.has_rails? }.call do
|
6
|
+
let(:expected_ar_time_str) do
|
7
|
+
if activerecord_6_1?
|
8
|
+
'15:30:45.000000000'
|
9
|
+
else
|
10
|
+
'15:30:45'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
4
14
|
before do
|
5
15
|
@ap = AmazingPrint::Inspector.new
|
6
16
|
end
|
@@ -8,7 +18,8 @@ RSpec.describe 'AmazingPrint::ActiveSupport', skip: -> { !ExtVerifier.has_rails?
|
|
8
18
|
it 'should format ActiveSupport::TimeWithZone as regular Time' do
|
9
19
|
Time.zone = 'Eastern Time (US & Canada)'
|
10
20
|
time = Time.utc(2007, 2, 10, 20, 30, 45).in_time_zone
|
11
|
-
expect(@ap.send(:awesome, time))
|
21
|
+
expect(@ap.send(:awesome, time))
|
22
|
+
.to eq("\e[0;32mSat, 10 Feb 2007 #{expected_ar_time_str} EST -05:00\e[0m")
|
12
23
|
end
|
13
24
|
|
14
25
|
it 'should format HashWithIndifferentAccess as regular Hash' do
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_mapper? }.call do
|
@@ -29,8 +31,8 @@ RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_map
|
|
29
31
|
user = MongoUser.new(first_name: 'Al', last_name: 'Capone')
|
30
32
|
|
31
33
|
out = @ap.send(:awesome, user)
|
32
|
-
|
33
|
-
|
34
|
+
.gsub(/#\<Proc:.+?\>/, 'amazing_print_PROC_STUB')
|
35
|
+
.gsub(/BSON::ObjectId\('[\da-f]+?'\)/, "BSON::ObjectId('123456789')")
|
34
36
|
|
35
37
|
str = if MongoMapper::Version >= '0.13'
|
36
38
|
<<~EOS.strip
|
@@ -232,10 +234,10 @@ RSpec.describe 'AmazingPrint/MongoMapper', skip: -> { !ExtVerifier.has_mongo_map
|
|
232
234
|
describe 'with show associations turned on and inline embedded turned on' do
|
233
235
|
before :each do
|
234
236
|
@ap = AmazingPrint::Inspector.new plain: true,
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
237
|
+
mongo_mapper: {
|
238
|
+
show_associations: true,
|
239
|
+
inline_embedded: true
|
240
|
+
}
|
239
241
|
end
|
240
242
|
|
241
243
|
it 'should render an instance with associations shown and embeds there' do
|
data/spec/ext/mongoid_spec.rb
CHANGED
data/spec/ext/nobrainer_spec.rb
CHANGED
data/spec/ext/nokogiri_spec.rb
CHANGED
data/spec/ext/ostruct_spec.rb
CHANGED
data/spec/ext/ripple_spec.rb
CHANGED
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'sequel_helper'
|
5
|
+
|
6
|
+
RSpec.describe 'AmazingPrint/Sequel', skip: -> { !ExtVerifier.has_sequel? }.call do
|
7
|
+
before do
|
8
|
+
@ap = AmazingPrint::Inspector.new plain: true, sort_keys: true
|
9
|
+
@user1 = SequelUser.new first_name: 'Jeremy', last_name: 'Evans'
|
10
|
+
@user2 = SequelUser.new first_name: 'Sequel', last_name: 'Five'
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'display single record' do
|
14
|
+
out = @ap.awesome(@user1)
|
15
|
+
str = <<~EOS.strip
|
16
|
+
#<SequelUser:placeholder_id> {
|
17
|
+
:first_name => "Jeremy",
|
18
|
+
:last_name => "Evans"
|
19
|
+
}
|
20
|
+
EOS
|
21
|
+
expect(out).to be_similar_to(str)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'display multiple records' do
|
25
|
+
out = @ap.awesome([@user1, @user2])
|
26
|
+
str = <<~EOS.strip
|
27
|
+
[
|
28
|
+
[0] #<SequelUser:placeholder_id> {
|
29
|
+
:first_name => "Jeremy",
|
30
|
+
:last_name => "Evans"
|
31
|
+
},
|
32
|
+
[1] #<SequelUser:placeholder_id> {
|
33
|
+
:first_name => "Sequel",
|
34
|
+
:last_name => "Five"
|
35
|
+
}
|
36
|
+
]
|
37
|
+
EOS
|
38
|
+
expect(out).to be_similar_to(str)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'does not crash if on Sequel::Model' do
|
42
|
+
out = @ap.awesome(::Sequel::Model)
|
43
|
+
expect(out).to be_similar_to('Sequel::Model < Object')
|
44
|
+
end
|
45
|
+
end
|
data/spec/formats_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'bigdecimal'
|
3
5
|
require 'set'
|
@@ -489,7 +491,7 @@ RSpec.describe 'AmazingPrint' do
|
|
489
491
|
describe 'File' do
|
490
492
|
it 'should display a file (plain)' do
|
491
493
|
File.open(__FILE__, 'r') do |f|
|
492
|
-
expect(f.ai(plain: true)).to eq("#{f.inspect}\n"
|
494
|
+
expect(f.ai(plain: true)).to eq("#{f.inspect}\n" + `ls -alF #{f.path}`.chop)
|
493
495
|
end
|
494
496
|
end
|
495
497
|
end
|
@@ -498,7 +500,7 @@ RSpec.describe 'AmazingPrint' do
|
|
498
500
|
describe 'Dir' do
|
499
501
|
it 'should display a direcory (plain)' do
|
500
502
|
Dir.open(File.dirname(__FILE__)) do |d|
|
501
|
-
expect(d.ai(plain: true)).to eq("#{d.inspect}\n"
|
503
|
+
expect(d.ai(plain: true)).to eq("#{d.inspect}\n" + `ls -alF #{d.path}`.chop)
|
502
504
|
end
|
503
505
|
end
|
504
506
|
end
|
@@ -566,19 +568,19 @@ RSpec.describe 'AmazingPrint' do
|
|
566
568
|
end
|
567
569
|
else # Prior to Ruby 1.9 the order of set values is unpredicatble.
|
568
570
|
it 'plain multiline' do
|
569
|
-
expect(@set.sort_by
|
571
|
+
expect(@set.sort_by(&:to_s).ai(plain: true)).to eq(@arr.sort_by(&:to_s).ai(plain: true))
|
570
572
|
end
|
571
573
|
|
572
574
|
it 'plain multiline indented' do
|
573
|
-
expect(@set.sort_by
|
575
|
+
expect(@set.sort_by(&:to_s).ai(plain: true, indent: 1)).to eq(@arr.sort_by(&:to_s).ai(plain: true, indent: 1))
|
574
576
|
end
|
575
577
|
|
576
578
|
it 'plain single line' do
|
577
|
-
expect(@set.sort_by
|
579
|
+
expect(@set.sort_by(&:to_s).ai(plain: true, multiline: false)).to eq(@arr.sort_by(&:to_s).ai(plain: true, multiline: false))
|
578
580
|
end
|
579
581
|
|
580
582
|
it 'colored multiline (default)' do
|
581
|
-
expect(@set.sort_by
|
583
|
+
expect(@set.sort_by(&:to_s).ai).to eq(@arr.sort_by(&:to_s).ai)
|
582
584
|
end
|
583
585
|
end
|
584
586
|
end
|
@@ -695,7 +697,7 @@ RSpec.describe 'AmazingPrint' do
|
|
695
697
|
rescue StandardError
|
696
698
|
File.new('nul')
|
697
699
|
end
|
698
|
-
expect(my.ai(plain: true)).to eq("#{my.inspect}\n"
|
700
|
+
expect(my.ai(plain: true)).to eq("#{my.inspect}\n" + `ls -alF #{my.path}`.chop)
|
699
701
|
end
|
700
702
|
|
701
703
|
it 'inherited from Dir should be displayed as Dir' do
|
@@ -703,7 +705,7 @@ RSpec.describe 'AmazingPrint' do
|
|
703
705
|
|
704
706
|
require 'tmpdir'
|
705
707
|
my = My.new(Dir.tmpdir)
|
706
|
-
expect(my.ai(plain: true)).to eq("#{my.inspect}\n"
|
708
|
+
expect(my.ai(plain: true)).to eq("#{my.inspect}\n" + `ls -alF #{my.path}`.chop)
|
707
709
|
end
|
708
710
|
|
709
711
|
it 'should handle a class that defines its own #send method' do
|
data/spec/methods_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
RSpec.describe 'Single method' do
|
@@ -33,6 +35,38 @@ RSpec.describe 'Single method' do
|
|
33
35
|
expect(method.ai).to eq("\e[1;33mString\e[0m#\e[0;35minclude?\e[0m\e[0;37m(arg1)\e[0m")
|
34
36
|
end
|
35
37
|
|
38
|
+
it 'plain: should handle a method with one required keyword argument' do
|
39
|
+
class A
|
40
|
+
def one(foo:); end
|
41
|
+
end
|
42
|
+
method = A.new.method(:one)
|
43
|
+
expect(method.ai(plain: true)).to eq('A#one(foo:)')
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'color: should handle a method with one required keyword argument' do
|
47
|
+
class A
|
48
|
+
def one(foo:); end
|
49
|
+
end
|
50
|
+
method = A.new.method(:one)
|
51
|
+
expect(method.ai).to eq("\e[1;33mA\e[0m#\e[0;35mone\e[0m\e[0;37m(foo:)\e[0m")
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'plain: should handle a method with one required and one optional keyword arguments' do
|
55
|
+
class A
|
56
|
+
def one(foo:, bar: 'baz'); end
|
57
|
+
end
|
58
|
+
method = A.new.method(:one)
|
59
|
+
expect(method.ai(plain: true)).to eq('A#one(foo:, *bar:)')
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'color: should handle a method with one required and one optional keyword arguments' do
|
63
|
+
class A
|
64
|
+
def one(foo:, bar: 'baz'); end
|
65
|
+
end
|
66
|
+
method = A.new.method(:one)
|
67
|
+
expect(method.ai).to eq("\e[1;33mA\e[0m#\e[0;35mone\e[0m\e[0;37m(foo:, *bar:)\e[0m")
|
68
|
+
end
|
69
|
+
|
36
70
|
it 'plain: should handle a method with two arguments' do
|
37
71
|
method = ''.method(:tr)
|
38
72
|
expect(method.ai(plain: true)).to eq('String#tr(arg1, arg2)')
|
@@ -454,16 +488,16 @@ RSpec.describe 'Methods arrays' do
|
|
454
488
|
def him; end
|
455
489
|
|
456
490
|
def his
|
457
|
-
private_methods.grep(/^h
|
491
|
+
private_methods.grep(/^h..$/, &:to_sym)
|
458
492
|
end
|
459
493
|
|
460
494
|
def her
|
461
|
-
private_methods.grep(/^.e
|
495
|
+
private_methods.grep(/^.e.$/, &:to_sym)
|
462
496
|
end
|
463
497
|
end
|
464
498
|
|
465
499
|
hello = Hello.new
|
466
|
-
expect((hello.send(:his) - hello.send(:her)).sort_by
|
500
|
+
expect((hello.send(:his) - hello.send(:her)).sort_by(&:to_s)).to eq(%i[him his])
|
467
501
|
end
|
468
502
|
|
469
503
|
it 'appending garbage to methods array should not raise error' do
|
data/spec/misc_spec.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
RSpec.describe 'AmazingPrint' do
|
@@ -14,7 +16,7 @@ RSpec.describe 'AmazingPrint' do
|
|
14
16
|
it 'handle frozen object.inspect' do
|
15
17
|
weird = Class.new do
|
16
18
|
def inspect
|
17
|
-
'ice'
|
19
|
+
'ice'
|
18
20
|
end
|
19
21
|
end
|
20
22
|
expect(weird.new.ai(plain: false)).to eq('ice')
|
data/spec/objects_spec.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
if ExtVerifier.has_sequel?
|
4
|
+
# Establish connection to in-memory SQLite DB
|
5
|
+
DB = RUBY_PLATFORM == 'java' ? Sequel.connect('jdbc:sqlite::memory:') : Sequel.sqlite
|
6
|
+
|
7
|
+
# Create the users table
|
8
|
+
DB.create_table :sequel_users do
|
9
|
+
primary_key :id
|
10
|
+
String :first_name
|
11
|
+
String :last_name
|
12
|
+
TrueClass :admin
|
13
|
+
DateTime :created_at
|
14
|
+
end
|
15
|
+
|
16
|
+
# Create models
|
17
|
+
class SequelUser < Sequel::Model; end
|
18
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Copyright (c) 2010-2016 Michael Dvorkin and contributors
|
2
4
|
#
|
3
5
|
# AmazingPrint is freely distributable under the terms of MIT license.
|
@@ -21,7 +23,7 @@
|
|
21
23
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
22
24
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
23
25
|
|
24
|
-
Dir[File.dirname(__FILE__) + '/support/**/*.rb'].each do |file|
|
26
|
+
Dir[File.dirname(__FILE__) + '/support/**/*.rb'].sort.each do |file|
|
25
27
|
require file
|
26
28
|
end
|
27
29
|
|
@@ -29,12 +31,14 @@ ExtVerifier.require_dependencies!(
|
|
29
31
|
%w[
|
30
32
|
rails
|
31
33
|
active_record
|
34
|
+
action_controller
|
32
35
|
action_view
|
33
36
|
active_support/all
|
34
37
|
mongoid
|
35
38
|
mongo_mapper
|
36
39
|
ripple nobrainer
|
37
40
|
ostruct
|
41
|
+
sequel
|
38
42
|
]
|
39
43
|
)
|
40
44
|
require 'nokogiri'
|
@@ -0,0 +1,109 @@
|
|
1
|
+
#<User:placeholder_id
|
2
|
+
@_start_transaction_state = nil,
|
3
|
+
@association_cache = {},
|
4
|
+
@destroyed = false,
|
5
|
+
@marked_for_destruction = false,
|
6
|
+
@new_record = true,
|
7
|
+
@previously_new_record = false,
|
8
|
+
@primary_key = "id",
|
9
|
+
@readonly = false,
|
10
|
+
@strict_loading = false,
|
11
|
+
attr_accessor :attributes = #<ActiveModel::AttributeSet:placeholder_id
|
12
|
+
@attributes = {
|
13
|
+
"admin" => #<ActiveModel::Attribute::FromUser:placeholder_id
|
14
|
+
@original_attribute = #<ActiveModel::Attribute::FromDatabase:placeholder_id
|
15
|
+
@original_attribute = nil,
|
16
|
+
attr_reader :name = "admin",
|
17
|
+
attr_reader :type = #<ActiveModel::Type::Boolean:placeholder_id
|
18
|
+
attr_reader :limit = nil,
|
19
|
+
attr_reader :precision = nil,
|
20
|
+
attr_reader :scale = nil
|
21
|
+
>,
|
22
|
+
attr_reader :value_before_type_cast = nil
|
23
|
+
>,
|
24
|
+
attr_reader :name = "admin",
|
25
|
+
attr_reader :type = #<ActiveModel::Type::Boolean:placeholder_id
|
26
|
+
attr_reader :limit = nil,
|
27
|
+
attr_reader :precision = nil,
|
28
|
+
attr_reader :scale = nil
|
29
|
+
>,
|
30
|
+
attr_reader :value_before_type_cast = false
|
31
|
+
>,
|
32
|
+
"created_at" => #<ActiveModel::Attribute::FromUser:placeholder_id
|
33
|
+
@original_attribute = #<ActiveModel::Attribute::FromDatabase:placeholder_id
|
34
|
+
@original_attribute = nil,
|
35
|
+
attr_reader :name = "created_at",
|
36
|
+
attr_reader :type = #<ActiveRecord::Type::DateTime:placeholder_id
|
37
|
+
attr_reader :limit = nil,
|
38
|
+
attr_reader :precision = nil,
|
39
|
+
attr_reader :scale = nil
|
40
|
+
>,
|
41
|
+
attr_reader :value_before_type_cast = nil
|
42
|
+
>,
|
43
|
+
attr_reader :name = "created_at",
|
44
|
+
attr_reader :type = #<ActiveRecord::Type::DateTime:placeholder_id
|
45
|
+
attr_reader :limit = nil,
|
46
|
+
attr_reader :precision = nil,
|
47
|
+
attr_reader :scale = nil
|
48
|
+
>,
|
49
|
+
attr_reader :value_before_type_cast = "1992-10-10 12:30:00"
|
50
|
+
>,
|
51
|
+
"id" => #<ActiveModel::Attribute::FromDatabase:placeholder_id
|
52
|
+
@original_attribute = nil,
|
53
|
+
attr_reader :name = "id",
|
54
|
+
attr_reader :type = #<ActiveRecord::ConnectionAdapters::SQLite3Adapter::SQLite3Integer:placeholder_id
|
55
|
+
@range = -9223372036854775808...9223372036854775808,
|
56
|
+
attr_reader :limit = nil,
|
57
|
+
attr_reader :precision = nil,
|
58
|
+
attr_reader :scale = nil
|
59
|
+
>,
|
60
|
+
attr_reader :value_before_type_cast = nil
|
61
|
+
>,
|
62
|
+
"name" => #<ActiveModel::Attribute::FromUser:placeholder_id
|
63
|
+
@original_attribute = #<ActiveModel::Attribute::FromDatabase:placeholder_id
|
64
|
+
@original_attribute = nil,
|
65
|
+
attr_reader :name = "name",
|
66
|
+
attr_reader :type = #<ActiveModel::Type::String:placeholder_id
|
67
|
+
@false = "f",
|
68
|
+
@true = "t",
|
69
|
+
attr_reader :limit = nil,
|
70
|
+
attr_reader :precision = nil,
|
71
|
+
attr_reader :scale = nil
|
72
|
+
>,
|
73
|
+
attr_reader :value_before_type_cast = nil
|
74
|
+
>,
|
75
|
+
attr_reader :name = "name",
|
76
|
+
attr_reader :type = #<ActiveModel::Type::String:placeholder_id
|
77
|
+
@false = "f",
|
78
|
+
@true = "t",
|
79
|
+
attr_reader :limit = nil,
|
80
|
+
attr_reader :precision = nil,
|
81
|
+
attr_reader :scale = nil
|
82
|
+
>,
|
83
|
+
attr_reader :value_before_type_cast = "Diana"
|
84
|
+
>,
|
85
|
+
"rank" => #<ActiveModel::Attribute::FromUser:placeholder_id
|
86
|
+
@original_attribute = #<ActiveModel::Attribute::FromDatabase:placeholder_id
|
87
|
+
@original_attribute = nil,
|
88
|
+
attr_reader :name = "rank",
|
89
|
+
attr_reader :type = #<ActiveRecord::ConnectionAdapters::SQLite3Adapter::SQLite3Integer:placeholder_id
|
90
|
+
@range = -9223372036854775808...9223372036854775808,
|
91
|
+
attr_reader :limit = nil,
|
92
|
+
attr_reader :precision = nil,
|
93
|
+
attr_reader :scale = nil
|
94
|
+
>,
|
95
|
+
attr_reader :value_before_type_cast = nil
|
96
|
+
>,
|
97
|
+
attr_reader :name = "rank",
|
98
|
+
attr_reader :type = #<ActiveRecord::ConnectionAdapters::SQLite3Adapter::SQLite3Integer:placeholder_id
|
99
|
+
@range = -9223372036854775808...9223372036854775808,
|
100
|
+
attr_reader :limit = nil,
|
101
|
+
attr_reader :precision = nil,
|
102
|
+
attr_reader :scale = nil
|
103
|
+
>,
|
104
|
+
attr_reader :value_before_type_cast = 1
|
105
|
+
>
|
106
|
+
}
|
107
|
+
>,
|
108
|
+
attr_accessor :destroyed_by_association = nil
|
109
|
+
>
|