ardb 0.28.1 → 0.29.2
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 +7 -7
- data/.l.yml +8 -0
- data/.rubocop.yml +3 -0
- data/.t.yml +6 -0
- data/Gemfile +21 -8
- data/README.md +252 -3
- data/ardb.gemspec +14 -10
- data/bin/ardb +3 -1
- data/lib/ardb.rb +110 -80
- data/lib/ardb/adapter/base.rb +73 -47
- data/lib/ardb/adapter/mysql.rb +4 -17
- data/lib/ardb/adapter/postgresql.rb +51 -46
- data/lib/ardb/adapter/sqlite.rb +11 -15
- data/lib/ardb/adapter_spy.rb +18 -30
- data/lib/ardb/cli.rb +29 -24
- data/lib/ardb/cli/clirb.rb +19 -17
- data/lib/ardb/cli/commands.rb +308 -129
- data/lib/ardb/db_tests.rb +4 -4
- data/lib/ardb/default_order_by.rb +13 -21
- data/lib/ardb/migration.rb +15 -16
- data/lib/ardb/record_spy.rb +46 -61
- data/lib/ardb/relation_spy.rb +27 -31
- data/lib/ardb/require_autoloaded_active_record_files.rb +174 -58
- data/lib/ardb/test_helpers.rb +13 -14
- data/lib/ardb/use_db_default.rb +10 -19
- data/lib/ardb/version.rb +3 -1
- data/script/determine_autoloaded_active_record_files.rb +31 -24
- data/test/helper.rb +6 -13
- data/test/support/factory.rb +4 -3
- data/test/support/fake_schema.rb +3 -1
- data/test/support/postgresql/migrations/{.gitkeep → .keep} +0 -0
- data/test/support/postgresql/schema.rb +2 -1
- data/test/support/postgresql/setup_test_db.rb +17 -15
- data/test/support/relative_require_test_db_file.rb +1 -0
- data/test/support/require_test_db_file.rb +1 -0
- data/test/system/.keep +0 -0
- data/test/unit/adapter/base_tests.rb +83 -55
- data/test/unit/adapter/mysql_tests.rb +4 -19
- data/test/unit/adapter/postgresql_tests.rb +21 -30
- data/test/unit/adapter/sqlite_tests.rb +5 -11
- data/test/unit/adapter_spy_tests.rb +6 -17
- data/test/unit/ardb_tests.rb +81 -53
- data/test/unit/cli_tests.rb +232 -157
- data/test/unit/db_tests_tests.rb +7 -7
- data/test/unit/default_order_by_tests.rb +21 -20
- data/test/unit/migration_tests.rb +17 -18
- data/test/unit/record_spy_tests.rb +36 -34
- data/test/unit/relation_spy_tests.rb +40 -63
- data/test/unit/test_helpers_tests.rb +7 -15
- data/test/unit/use_db_default_tests.rb +22 -17
- metadata +117 -84
- data/lib/ardb/has_slug.rb +0 -107
- data/lib/ardb/migration_helpers.rb +0 -77
- data/lib/ardb/pg_json.rb +0 -90
- data/test/support/postgresql/pg_json_migrations/20160519133432_create_pg_json_migrate_test.rb +0 -13
- data/test/system/pg_json_tests.rb +0 -85
- data/test/unit/has_slug_tests.rb +0 -341
- data/test/unit/migration_helpers_tests.rb +0 -65
- data/test/unit/pg_json_tests.rb +0 -39
@@ -1,69 +1,185 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# ActiveRecord makes use of autoload to load some of its components as-needed.
|
2
|
-
# This doesn
|
4
|
+
# This doesn"t work well with threaded environments, and causes uninitialized
|
3
5
|
# constants. To avoid this, this file manually requires the following files that
|
4
|
-
# are not required using `require
|
6
|
+
# are not required using `require "active_record"`. Trying to automatically
|
5
7
|
# require every file in ActiveRecord is slow and inefficient. Many of the files
|
6
|
-
# fail to require and there are some we don
|
8
|
+
# fail to require and there are some we don"t want to require. Thus, this is a
|
7
9
|
# manual list of requires.
|
8
10
|
|
9
11
|
# To re-build this list of requires, run the following:
|
10
12
|
# bundle exec ruby script/determine_autoloaded_active_record_files.rb
|
11
13
|
|
12
14
|
# For compatibility, we require active record first
|
13
|
-
require
|
14
|
-
|
15
|
-
require 'active_record/aggregations'
|
16
|
-
require 'active_record/associations'
|
17
|
-
require 'active_record/associations/alias_tracker'
|
18
|
-
require 'active_record/associations/association'
|
19
|
-
require 'active_record/associations/association_scope'
|
20
|
-
require 'active_record/associations/belongs_to_association'
|
21
|
-
require 'active_record/associations/belongs_to_polymorphic_association'
|
22
|
-
require 'active_record/associations/builder/association'
|
23
|
-
require 'active_record/associations/builder/belongs_to'
|
24
|
-
require 'active_record/associations/builder/collection_association'
|
25
|
-
require 'active_record/associations/builder/has_and_belongs_to_many'
|
26
|
-
require 'active_record/associations/builder/has_many'
|
27
|
-
require 'active_record/associations/builder/has_one'
|
28
|
-
require 'active_record/associations/collection_association'
|
29
|
-
require 'active_record/associations/collection_proxy'
|
30
|
-
require 'active_record/associations/has_and_belongs_to_many_association'
|
31
|
-
require 'active_record/associations/has_many_association'
|
32
|
-
require 'active_record/associations/has_many_through_association'
|
33
|
-
require 'active_record/associations/has_one_association'
|
34
|
-
require 'active_record/associations/has_one_through_association'
|
35
|
-
require 'active_record/associations/join_dependency'
|
36
|
-
require 'active_record/associations/join_dependency/join_association'
|
37
|
-
require 'active_record/associations/join_dependency/join_base'
|
38
|
-
require 'active_record/associations/preloader'
|
39
|
-
require 'active_record/associations/preloader/association'
|
40
|
-
require 'active_record/associations/preloader/belongs_to'
|
41
|
-
require 'active_record/associations/preloader/collection_association'
|
42
|
-
require 'active_record/associations/preloader/has_and_belongs_to_many'
|
43
|
-
require 'active_record/associations/preloader/has_many'
|
44
|
-
require 'active_record/associations/preloader/has_many_through'
|
45
|
-
require 'active_record/associations/preloader/has_one'
|
46
|
-
require 'active_record/associations/preloader/has_one_through'
|
47
|
-
require 'active_record/attribute_assignment'
|
48
|
-
require 'active_record/attribute_methods/before_type_cast'
|
49
|
-
require 'active_record/attribute_methods/deprecated_underscore_read'
|
50
|
-
require 'active_record/attribute_methods/dirty'
|
51
|
-
require 'active_record/attribute_methods/primary_key'
|
52
|
-
require 'active_record/attribute_methods/query'
|
53
|
-
require 'active_record/attribute_methods/read'
|
54
|
-
require 'active_record/attribute_methods/serialization'
|
55
|
-
require 'active_record/attribute_methods/time_zone_conversion'
|
56
|
-
require 'active_record/autosave_association'
|
57
|
-
require 'active_record/base'
|
58
|
-
require 'active_record/dynamic_finder_match'
|
59
|
-
require 'active_record/dynamic_scope_match'
|
60
|
-
require 'active_record/observer'
|
61
|
-
require 'active_record/relation'
|
62
|
-
require 'active_record/relation/predicate_builder'
|
63
|
-
require 'active_record/result'
|
15
|
+
require "active_record"
|
64
16
|
|
65
|
-
|
66
|
-
|
67
|
-
|
17
|
+
if (
|
18
|
+
ActiveRecord.version.segments[0] == 6 &&
|
19
|
+
ActiveRecord.version.segments[1] > 0
|
20
|
+
)
|
21
|
+
require "active_record/aggregations"
|
22
|
+
require "active_record/association_relation"
|
23
|
+
require "active_record/associations"
|
24
|
+
require "active_record/associations/alias_tracker"
|
25
|
+
require "active_record/associations/association"
|
26
|
+
require "active_record/associations/association_scope"
|
27
|
+
require "active_record/associations/belongs_to_association"
|
28
|
+
require "active_record/associations/belongs_to_polymorphic_association"
|
29
|
+
require "active_record/associations/builder/association"
|
30
|
+
require "active_record/associations/builder/belongs_to"
|
31
|
+
require "active_record/associations/builder/collection_association"
|
32
|
+
require "active_record/associations/builder/has_and_belongs_to_many"
|
33
|
+
require "active_record/associations/builder/has_many"
|
34
|
+
require "active_record/associations/builder/has_one"
|
35
|
+
require "active_record/associations/collection_association"
|
36
|
+
require "active_record/associations/collection_proxy"
|
37
|
+
require "active_record/associations/foreign_association"
|
38
|
+
require "active_record/associations/has_many_association"
|
39
|
+
require "active_record/associations/has_many_through_association"
|
40
|
+
require "active_record/associations/has_one_association"
|
41
|
+
require "active_record/associations/has_one_through_association"
|
42
|
+
require "active_record/associations/join_dependency"
|
43
|
+
require "active_record/associations/join_dependency/join_association"
|
44
|
+
require "active_record/associations/join_dependency/join_base"
|
45
|
+
require "active_record/associations/preloader"
|
46
|
+
require "active_record/associations/preloader/association"
|
47
|
+
require "active_record/associations/preloader/through_association"
|
48
|
+
require "active_record/attribute_assignment"
|
49
|
+
require "active_record/attribute_methods/before_type_cast"
|
50
|
+
require "active_record/attribute_methods/dirty"
|
51
|
+
require "active_record/attribute_methods/primary_key"
|
52
|
+
require "active_record/attribute_methods/query"
|
53
|
+
require "active_record/attribute_methods/read"
|
54
|
+
require "active_record/attribute_methods/serialization"
|
55
|
+
require "active_record/attribute_methods/time_zone_conversion"
|
56
|
+
require "active_record/attribute_methods/write"
|
57
|
+
require "active_record/attributes"
|
58
|
+
require "active_record/autosave_association"
|
59
|
+
require "active_record/base"
|
60
|
+
require "active_record/coders/json"
|
61
|
+
require "active_record/internal_metadata"
|
62
|
+
require "active_record/legacy_yaml_adapter"
|
63
|
+
require "active_record/middleware/database_selector"
|
64
|
+
require "active_record/null_relation"
|
65
|
+
require "active_record/relation/predicate_builder"
|
66
|
+
require "active_record/relation/record_fetch_warning"
|
67
|
+
require "active_record/result"
|
68
|
+
require "active_record/runtime_registry"
|
69
|
+
require "active_record/statement_cache"
|
70
|
+
require "active_record/table_metadata"
|
71
|
+
require "active_record/tasks/database_tasks"
|
72
|
+
require "active_record/tasks/mysql_database_tasks"
|
73
|
+
require "active_record/tasks/postgresql_database_tasks"
|
74
|
+
require "active_record/tasks/sqlite_database_tasks"
|
75
|
+
require "arel/collectors/bind"
|
76
|
+
require "arel/collectors/composite"
|
77
|
+
require "arel/collectors/substitute_binds"
|
78
|
+
elsif (
|
79
|
+
ActiveRecord.version.segments[0] == 6 &&
|
80
|
+
ActiveRecord.version.segments[1] == 0
|
81
|
+
)
|
82
|
+
require "active_record/advisory_lock_base"
|
83
|
+
require "active_record/associations/alias_tracker"
|
84
|
+
require "active_record/associations/association"
|
85
|
+
require "active_record/associations/association_scope"
|
86
|
+
require "active_record/associations/belongs_to_association"
|
87
|
+
require "active_record/associations/belongs_to_polymorphic_association"
|
88
|
+
require "active_record/associations/builder/belongs_to"
|
89
|
+
require "active_record/associations/builder/collection_association"
|
90
|
+
require "active_record/associations/builder/has_and_belongs_to_many"
|
91
|
+
require "active_record/associations/builder/has_many"
|
92
|
+
require "active_record/associations/builder/has_one"
|
93
|
+
require "active_record/associations/collection_association"
|
94
|
+
require "active_record/associations/foreign_association"
|
95
|
+
require "active_record/associations/has_many_association"
|
96
|
+
require "active_record/associations/has_many_through_association"
|
97
|
+
require "active_record/associations/has_one_association"
|
98
|
+
require "active_record/associations/has_one_through_association"
|
99
|
+
require "active_record/associations/join_dependency"
|
100
|
+
require "active_record/associations/join_dependency/join_association"
|
101
|
+
require "active_record/associations/join_dependency/join_base"
|
102
|
+
require "active_record/associations/preloader"
|
103
|
+
require "active_record/associations/preloader/association"
|
104
|
+
require "active_record/associations/preloader/through_association"
|
105
|
+
require "active_record/coders/json"
|
106
|
+
require "active_record/internal_metadata"
|
107
|
+
require "active_record/legacy_yaml_adapter"
|
108
|
+
require "active_record/middleware/database_selector"
|
109
|
+
require "active_record/null_relation"
|
110
|
+
require "active_record/relation/predicate_builder"
|
111
|
+
require "active_record/relation/record_fetch_warning"
|
112
|
+
require "active_record/result"
|
113
|
+
require "active_record/runtime_registry"
|
114
|
+
require "active_record/statement_cache"
|
115
|
+
require "active_record/table_metadata"
|
116
|
+
require "active_record/tasks/database_tasks"
|
117
|
+
require "active_record/tasks/mysql_database_tasks"
|
118
|
+
require "active_record/tasks/postgresql_database_tasks"
|
119
|
+
require "active_record/tasks/sqlite_database_tasks"
|
120
|
+
elsif ActiveRecord.version.segments[0] == 5
|
121
|
+
require "active_record/aggregations"
|
122
|
+
require "active_record/association_relation"
|
123
|
+
require "active_record/associations"
|
124
|
+
require "active_record/associations/alias_tracker"
|
125
|
+
require "active_record/associations/association"
|
126
|
+
require "active_record/associations/association_scope"
|
127
|
+
require "active_record/associations/belongs_to_association"
|
128
|
+
require "active_record/associations/belongs_to_polymorphic_association"
|
129
|
+
require "active_record/associations/builder/association"
|
130
|
+
require "active_record/associations/builder/belongs_to"
|
131
|
+
require "active_record/associations/builder/collection_association"
|
132
|
+
require "active_record/associations/builder/has_and_belongs_to_many"
|
133
|
+
require "active_record/associations/builder/has_many"
|
134
|
+
require "active_record/associations/builder/has_one"
|
135
|
+
require "active_record/associations/collection_association"
|
136
|
+
require "active_record/associations/collection_proxy"
|
137
|
+
require "active_record/associations/foreign_association"
|
138
|
+
require "active_record/associations/has_many_association"
|
139
|
+
require "active_record/associations/has_many_through_association"
|
140
|
+
require "active_record/associations/has_one_association"
|
141
|
+
require "active_record/associations/has_one_through_association"
|
142
|
+
require "active_record/associations/join_dependency"
|
143
|
+
require "active_record/associations/join_dependency/join_association"
|
144
|
+
require "active_record/associations/join_dependency/join_base"
|
145
|
+
require "active_record/associations/preloader"
|
146
|
+
require "active_record/associations/preloader/association"
|
147
|
+
require "active_record/associations/preloader/through_association"
|
148
|
+
require "active_record/attribute_assignment"
|
149
|
+
require "active_record/attribute_decorators"
|
150
|
+
require "active_record/attribute_methods/before_type_cast"
|
151
|
+
require "active_record/attribute_methods/dirty"
|
152
|
+
require "active_record/attribute_methods/primary_key"
|
153
|
+
require "active_record/attribute_methods/query"
|
154
|
+
require "active_record/attribute_methods/read"
|
155
|
+
require "active_record/attribute_methods/serialization"
|
156
|
+
require "active_record/attribute_methods/time_zone_conversion"
|
157
|
+
require "active_record/attribute_methods/write"
|
158
|
+
require "active_record/attributes"
|
159
|
+
require "active_record/autosave_association"
|
160
|
+
require "active_record/base"
|
161
|
+
require "active_record/coders/json"
|
162
|
+
require "active_record/internal_metadata"
|
163
|
+
require "active_record/legacy_yaml_adapter"
|
164
|
+
require "active_record/null_relation"
|
165
|
+
require "active_record/relation/predicate_builder"
|
166
|
+
require "active_record/relation/record_fetch_warning"
|
167
|
+
require "active_record/result"
|
168
|
+
require "active_record/runtime_registry"
|
169
|
+
require "active_record/statement_cache"
|
170
|
+
require "active_record/table_metadata"
|
171
|
+
require "active_record/tasks/database_tasks"
|
172
|
+
require "active_record/tasks/mysql_database_tasks"
|
173
|
+
require "active_record/tasks/postgresql_database_tasks"
|
174
|
+
require "active_record/tasks/sqlite_database_tasks"
|
175
|
+
else
|
176
|
+
raise(
|
177
|
+
"ActiveRecord #{ActiveRecord.version} isn't supported. "\
|
178
|
+
"Switch to 5.X or 6.X",
|
179
|
+
)
|
180
|
+
end
|
68
181
|
|
69
|
-
require
|
182
|
+
# There are also issues with requiring ActiveSupport. This doesn"t require every
|
183
|
+
# ActiveSupport file though, only ones we"ve seen cause problems.
|
184
|
+
require "active_support"
|
185
|
+
require "active_support/multibyte/chars"
|
data/lib/ardb/test_helpers.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "active_record"
|
4
|
+
require "ardb"
|
3
5
|
|
4
6
|
# Use theses helpers in your test suite. They all generally assume Ardb has
|
5
7
|
# already been initialized by calling `Ardb.init`.
|
6
8
|
|
7
9
|
module Ardb
|
8
|
-
|
9
10
|
module TestHelpers
|
10
|
-
|
11
|
+
extend self
|
11
12
|
|
12
13
|
def drop_tables
|
13
14
|
Ardb.adapter.drop_tables
|
@@ -23,7 +24,7 @@ module Ardb
|
|
23
24
|
|
24
25
|
def create_db
|
25
26
|
@create_db ||= begin
|
26
|
-
|
27
|
+
create_db!
|
27
28
|
true
|
28
29
|
end
|
29
30
|
end
|
@@ -34,7 +35,7 @@ module Ardb
|
|
34
35
|
|
35
36
|
def drop_db
|
36
37
|
@drop_db ||= begin
|
37
|
-
|
38
|
+
drop_db!
|
38
39
|
true
|
39
40
|
end
|
40
41
|
end
|
@@ -45,7 +46,7 @@ module Ardb
|
|
45
46
|
|
46
47
|
def connect_db
|
47
48
|
@connect_db ||= begin
|
48
|
-
|
49
|
+
connect_db!
|
49
50
|
true
|
50
51
|
end
|
51
52
|
end
|
@@ -56,24 +57,22 @@ module Ardb
|
|
56
57
|
|
57
58
|
def migrate_db
|
58
59
|
@migrate_db ||= begin
|
59
|
-
|
60
|
+
migrate_db!
|
60
61
|
true
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
64
65
|
def reset_db!
|
65
|
-
|
66
|
-
|
67
|
-
|
66
|
+
drop_db!
|
67
|
+
create_db!
|
68
|
+
load_schema
|
68
69
|
end
|
69
70
|
|
70
71
|
def reset_db
|
71
72
|
@reset_db ||= begin
|
72
|
-
|
73
|
+
reset_db!
|
73
74
|
true
|
74
75
|
end
|
75
76
|
end
|
76
|
-
|
77
77
|
end
|
78
|
-
|
79
78
|
end
|
data/lib/ardb/use_db_default.rb
CHANGED
@@ -1,22 +1,18 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require "much-mixin"
|
4
4
|
|
5
|
+
module Ardb
|
5
6
|
module UseDbDefault
|
6
|
-
include
|
7
|
-
|
8
|
-
plugin_included do
|
9
|
-
extend ClassMethods
|
10
|
-
include InstanceMethods
|
7
|
+
include MuchMixin
|
11
8
|
|
9
|
+
mixin_included do
|
12
10
|
@ardb_use_db_default_attrs = []
|
13
11
|
|
14
12
|
around_create :ardb_allow_db_to_default_attrs
|
15
|
-
|
16
13
|
end
|
17
14
|
|
18
|
-
|
19
|
-
|
15
|
+
mixin_class_methods do
|
20
16
|
def ardb_use_db_default_attrs
|
21
17
|
@ardb_use_db_default_attrs
|
22
18
|
end
|
@@ -25,11 +21,9 @@ module Ardb
|
|
25
21
|
@ardb_use_db_default_attrs += attrs.map(&:to_s)
|
26
22
|
@ardb_use_db_default_attrs.uniq!
|
27
23
|
end
|
28
|
-
|
29
24
|
end
|
30
25
|
|
31
|
-
|
32
|
-
|
26
|
+
mixin_instance_methods do
|
33
27
|
private
|
34
28
|
|
35
29
|
def ardb_allow_db_to_default_attrs
|
@@ -37,20 +31,17 @@ module Ardb
|
|
37
31
|
# activerecord from adding the attr into the sql `INSERT`, which will
|
38
32
|
# make the DB default its value
|
39
33
|
unchanged_names = self.class.ardb_use_db_default_attrs.reject do |name|
|
40
|
-
|
34
|
+
send("#{name}_changed?")
|
41
35
|
end
|
42
36
|
unchanged_names.each{ |name| @attributes.delete(name) }
|
43
37
|
yield
|
44
38
|
# we have to go and fetch the attr value from the DB, otherwise
|
45
|
-
# activerecord doesn
|
46
|
-
scope = self.class.where(:
|
39
|
+
# activerecord doesn"t know the value that the DB used
|
40
|
+
scope = self.class.where(id: id)
|
47
41
|
unchanged_names.each do |name|
|
48
42
|
@attributes[name] = scope.pluck(name).first
|
49
43
|
end
|
50
44
|
end
|
51
|
-
|
52
45
|
end
|
53
|
-
|
54
46
|
end
|
55
|
-
|
56
47
|
end
|
data/lib/ardb/version.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require "active_record"
|
4
|
+
|
5
|
+
# this can be slow, this is one of the reasons this shouldn"t be done during
|
4
6
|
# the startup of our apps
|
5
|
-
gemspec = Gem.loaded_specs[
|
7
|
+
gemspec = Gem.loaded_specs["activerecord"]
|
6
8
|
|
7
9
|
puts "Looking at files in: "
|
8
10
|
puts " #{gemspec.lib_dirs_glob.inspect}"
|
@@ -11,16 +13,21 @@ paths = Dir["#{gemspec.lib_dirs_glob}/**/*.rb"]
|
|
11
13
|
|
12
14
|
# these are regexs for files we want to ignore requiring. for example,
|
13
15
|
# generators fail when we try to require them. the others are pieces of active
|
14
|
-
# record we don
|
16
|
+
# record we don"t use in a production environment
|
15
17
|
ignored_regexes = [
|
16
|
-
/
|
17
|
-
/
|
18
|
-
/
|
19
|
-
/
|
20
|
-
/
|
21
|
-
/
|
22
|
-
/
|
23
|
-
|
18
|
+
%r{rails/generators},
|
19
|
+
%r{active_record/railtie},
|
20
|
+
%r{active_record/migration},
|
21
|
+
%r{active_record/fixtures},
|
22
|
+
%r{active_record/fixture_set},
|
23
|
+
%r{active_record/schema},
|
24
|
+
%r{active_record/connection_adapters},
|
25
|
+
%r{active_record/test_case},
|
26
|
+
%r{active_record/test_databases},
|
27
|
+
%r{active_record/test_fixtures},
|
28
|
+
%r{active_record/coders/yaml_column},
|
29
|
+
# `destroy_association_async_job` requires `ActiveJob` to be required.
|
30
|
+
%r{active_record/destroy_association_async_job},
|
24
31
|
]
|
25
32
|
|
26
33
|
Result = Struct.new(:file, :state, :reason)
|
@@ -31,18 +38,18 @@ ignored = []
|
|
31
38
|
errored = []
|
32
39
|
|
33
40
|
paths.sort.each do |full_path|
|
34
|
-
relative_path_with_rb = full_path.gsub("#{gemspec.lib_dirs_glob}/",
|
35
|
-
relative_path = relative_path_with_rb.gsub(/\.rb\z/,
|
41
|
+
relative_path_with_rb = full_path.gsub("#{gemspec.lib_dirs_glob}/", "")
|
42
|
+
relative_path = relative_path_with_rb.gsub(/\.rb\z/, "")
|
36
43
|
|
37
44
|
result = Result.new(relative_path)
|
38
45
|
|
39
|
-
# see if it
|
46
|
+
# see if it"s ignored
|
40
47
|
ignored_regexes.each do |regex|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
48
|
+
next unless relative_path =~ regex
|
49
|
+
|
50
|
+
result.state = :ignored
|
51
|
+
result.reason = "matched #{regex}"
|
52
|
+
break
|
46
53
|
end
|
47
54
|
if result.state == :ignored
|
48
55
|
ignored << result
|
@@ -51,14 +58,14 @@ paths.sort.each do |full_path|
|
|
51
58
|
|
52
59
|
# try requiring the file
|
53
60
|
begin
|
54
|
-
if result.state = require(relative_path)
|
61
|
+
if (result.state = require(relative_path))
|
55
62
|
needs_to_be_required << result
|
56
63
|
else
|
57
64
|
already_required << result
|
58
65
|
end
|
59
|
-
rescue LoadError, SyntaxError =>
|
66
|
+
rescue LoadError, SyntaxError => ex
|
60
67
|
result.state = :errored
|
61
|
-
result.reason = "#{
|
68
|
+
result.reason = "#{ex.class}: #{ex.message}"
|
62
69
|
errored << result
|
63
70
|
end
|
64
71
|
end
|
@@ -87,5 +94,5 @@ puts "\n"
|
|
87
94
|
|
88
95
|
puts "Needs To Be Required:\n"
|
89
96
|
needs_to_be_required.each do |result|
|
90
|
-
puts "require
|
97
|
+
puts "require \"#{result.file}\""
|
91
98
|
end
|