bullet 7.0.7 → 7.1.6

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/CHANGELOG.md +35 -2
  3. data/README.md +7 -3
  4. data/lib/bullet/active_record4.rb +21 -6
  5. data/lib/bullet/active_record41.rb +21 -6
  6. data/lib/bullet/active_record42.rb +32 -12
  7. data/lib/bullet/active_record5.rb +40 -12
  8. data/lib/bullet/active_record52.rb +40 -12
  9. data/lib/bullet/active_record60.rb +40 -12
  10. data/lib/bullet/active_record61.rb +40 -12
  11. data/lib/bullet/active_record70.rb +54 -20
  12. data/lib/bullet/active_record71.rb +318 -0
  13. data/lib/bullet/dependency.rb +12 -0
  14. data/lib/bullet/detector/n_plus_one_query.rb +2 -5
  15. data/lib/bullet/detector/unused_eager_loading.rb +5 -2
  16. data/lib/bullet/ext/object.rb +14 -3
  17. data/lib/bullet/mongoid8x.rb +59 -0
  18. data/lib/bullet/notification/base.rb +22 -10
  19. data/lib/bullet/notification/counter_cache.rb +1 -1
  20. data/lib/bullet/rack.rb +4 -2
  21. data/lib/bullet/registry/association.rb +2 -1
  22. data/lib/bullet/stack_trace_filter.rb +3 -2
  23. data/lib/bullet/version.rb +1 -1
  24. data/lib/bullet.rb +11 -2
  25. metadata +7 -155
  26. data/.github/workflows/main.yml +0 -82
  27. data/.gitignore +0 -15
  28. data/.rspec +0 -2
  29. data/Gemfile +0 -24
  30. data/Gemfile.mongoid +0 -12
  31. data/Gemfile.mongoid-4.0 +0 -15
  32. data/Gemfile.mongoid-5.0 +0 -15
  33. data/Gemfile.mongoid-6.0 +0 -15
  34. data/Gemfile.mongoid-7.0 +0 -15
  35. data/Gemfile.rails-4.0 +0 -16
  36. data/Gemfile.rails-4.1 +0 -16
  37. data/Gemfile.rails-4.2 +0 -16
  38. data/Gemfile.rails-5.0 +0 -15
  39. data/Gemfile.rails-5.1 +0 -15
  40. data/Gemfile.rails-5.2 +0 -15
  41. data/Gemfile.rails-6.0 +0 -15
  42. data/Gemfile.rails-6.1 +0 -15
  43. data/Gemfile.rails-7.0 +0 -10
  44. data/Guardfile +0 -8
  45. data/Hacking.md +0 -75
  46. data/Rakefile +0 -51
  47. data/bullet.gemspec +0 -33
  48. data/perf/benchmark.rb +0 -118
  49. data/rails/init.rb +0 -3
  50. data/spec/bullet/detector/association_spec.rb +0 -28
  51. data/spec/bullet/detector/base_spec.rb +0 -10
  52. data/spec/bullet/detector/counter_cache_spec.rb +0 -58
  53. data/spec/bullet/detector/n_plus_one_query_spec.rb +0 -150
  54. data/spec/bullet/detector/unused_eager_loading_spec.rb +0 -126
  55. data/spec/bullet/ext/object_spec.rb +0 -44
  56. data/spec/bullet/ext/string_spec.rb +0 -15
  57. data/spec/bullet/notification/base_spec.rb +0 -94
  58. data/spec/bullet/notification/counter_cache_spec.rb +0 -14
  59. data/spec/bullet/notification/n_plus_one_query_spec.rb +0 -29
  60. data/spec/bullet/notification/unused_eager_loading_spec.rb +0 -18
  61. data/spec/bullet/notification_collector_spec.rb +0 -34
  62. data/spec/bullet/rack_spec.rb +0 -296
  63. data/spec/bullet/registry/association_spec.rb +0 -28
  64. data/spec/bullet/registry/base_spec.rb +0 -46
  65. data/spec/bullet/registry/object_spec.rb +0 -26
  66. data/spec/bullet/stack_trace_filter_spec.rb +0 -26
  67. data/spec/bullet_spec.rb +0 -136
  68. data/spec/integration/active_record/association_spec.rb +0 -822
  69. data/spec/integration/counter_cache_spec.rb +0 -68
  70. data/spec/integration/mongoid/association_spec.rb +0 -246
  71. data/spec/models/address.rb +0 -5
  72. data/spec/models/attachment.rb +0 -5
  73. data/spec/models/author.rb +0 -5
  74. data/spec/models/base_user.rb +0 -7
  75. data/spec/models/category.rb +0 -12
  76. data/spec/models/city.rb +0 -5
  77. data/spec/models/client.rb +0 -8
  78. data/spec/models/comment.rb +0 -8
  79. data/spec/models/company.rb +0 -5
  80. data/spec/models/country.rb +0 -5
  81. data/spec/models/deal.rb +0 -5
  82. data/spec/models/document.rb +0 -7
  83. data/spec/models/entry.rb +0 -5
  84. data/spec/models/firm.rb +0 -7
  85. data/spec/models/folder.rb +0 -4
  86. data/spec/models/group.rb +0 -4
  87. data/spec/models/mongoid/address.rb +0 -9
  88. data/spec/models/mongoid/category.rb +0 -10
  89. data/spec/models/mongoid/comment.rb +0 -9
  90. data/spec/models/mongoid/company.rb +0 -9
  91. data/spec/models/mongoid/entry.rb +0 -9
  92. data/spec/models/mongoid/post.rb +0 -14
  93. data/spec/models/mongoid/user.rb +0 -7
  94. data/spec/models/newspaper.rb +0 -5
  95. data/spec/models/page.rb +0 -4
  96. data/spec/models/person.rb +0 -5
  97. data/spec/models/pet.rb +0 -5
  98. data/spec/models/post.rb +0 -34
  99. data/spec/models/relationship.rb +0 -6
  100. data/spec/models/reply.rb +0 -5
  101. data/spec/models/role.rb +0 -7
  102. data/spec/models/student.rb +0 -5
  103. data/spec/models/submission.rb +0 -7
  104. data/spec/models/teacher.rb +0 -5
  105. data/spec/models/user.rb +0 -8
  106. data/spec/models/writer.rb +0 -4
  107. data/spec/spec_helper.rb +0 -97
  108. data/spec/support/bullet_ext.rb +0 -56
  109. data/spec/support/mongo_seed.rb +0 -59
  110. data/spec/support/rack_double.rb +0 -49
  111. data/spec/support/sqlite_seed.rb +0 -284
  112. data/test.sh +0 -15
  113. data/update.sh +0 -10
data/spec/spec_helper.rb DELETED
@@ -1,97 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rspec'
4
- begin
5
- require 'active_record'
6
- rescue LoadError
7
- end
8
- begin
9
- require 'mongoid'
10
- rescue LoadError
11
- end
12
-
13
- module Rails
14
- class << self
15
- def root
16
- File.expand_path(__FILE__).split('/')[0..-3].join('/')
17
- end
18
-
19
- def env
20
- 'test'
21
- end
22
- end
23
- end
24
-
25
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))
26
- require 'bullet'
27
- extend Bullet::Dependency
28
- Bullet.enable = true
29
-
30
- MODELS = File.join(File.dirname(__FILE__), 'models')
31
- $LOAD_PATH.unshift(MODELS)
32
- SUPPORT = File.join(File.dirname(__FILE__), 'support')
33
- Dir[File.join(SUPPORT, '*.rb')].reject { |filename| filename =~ /_seed.rb$/ }.sort.each { |file| require file }
34
-
35
- RSpec.configure do |config|
36
- config.extend Bullet::Dependency
37
-
38
- config.filter_run focus: true
39
- config.run_all_when_everything_filtered = true
40
- end
41
-
42
- if active_record?
43
- ActiveRecord::Migration.verbose = false
44
-
45
- # Autoload every active_record model for the test suite that sits in spec/models.
46
- Dir[File.join(MODELS, '*.rb')].sort.each do |filename|
47
- name = File.basename(filename, '.rb')
48
- autoload name.camelize.to_sym, name
49
- end
50
- require File.join(SUPPORT, 'sqlite_seed.rb')
51
-
52
- RSpec.configure do |config|
53
- config.before(:suite) do
54
- Support::SqliteSeed.setup_db
55
- Support::SqliteSeed.seed_db
56
- end
57
-
58
- config.before(:example) do
59
- Bullet.start_request
60
- Bullet.enable = true
61
- end
62
-
63
- config.after(:example) { Bullet.end_request }
64
- end
65
-
66
- if ENV['BULLET_LOG']
67
- require 'logger'
68
- ActiveRecord::Base.logger = Logger.new(STDOUT)
69
- end
70
- end
71
-
72
- if mongoid?
73
- # Autoload every mongoid model for the test suite that sits in spec/models.
74
- Dir[File.join(MODELS, 'mongoid', '*.rb')].sort.each { |file| require file }
75
- require File.join(SUPPORT, 'mongo_seed.rb')
76
-
77
- RSpec.configure do |config|
78
- config.before(:suite) do
79
- Support::MongoSeed.setup_db
80
- Support::MongoSeed.seed_db
81
- end
82
-
83
- config.after(:suite) do
84
- Support::MongoSeed.setup_db
85
- Support::MongoSeed.teardown_db
86
- end
87
-
88
- config.before(:each) { Bullet.start_request }
89
-
90
- config.after(:each) { Bullet.end_request }
91
- end
92
-
93
- if ENV['BULLET_LOG']
94
- Mongoid.logger = Logger.new(STDOUT)
95
- Moped.logger = Logger.new(STDOUT)
96
- end
97
- end
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Bullet
4
- def self.collected_notifications_of_class(notification_class)
5
- Bullet.notification_collector.collection.select { |notification| notification.is_a? notification_class }
6
- end
7
-
8
- def self.collected_counter_cache_notifications
9
- collected_notifications_of_class Bullet::Notification::CounterCache
10
- end
11
-
12
- def self.collected_n_plus_one_query_notifications
13
- collected_notifications_of_class Bullet::Notification::NPlusOneQuery
14
- end
15
-
16
- def self.collected_unused_eager_association_notifications
17
- collected_notifications_of_class Bullet::Notification::UnusedEagerLoading
18
- end
19
- end
20
-
21
- module Bullet
22
- module Detector
23
- class Association
24
- class << self
25
- # returns true if all associations are preloaded
26
- def completely_preloading_associations?
27
- Bullet.collected_n_plus_one_query_notifications.empty?
28
- end
29
-
30
- def has_unused_preload_associations?
31
- Bullet.collected_unused_eager_association_notifications.present?
32
- end
33
-
34
- # returns true if a given object has a specific association
35
- def creating_object_association_for?(object, association)
36
- object_associations[object.bullet_key].present? &&
37
- object_associations[object.bullet_key].include?(association)
38
- end
39
-
40
- # returns true if a given class includes the specific unpreloaded association
41
- def detecting_unpreloaded_association_for?(klass, association)
42
- Bullet.collected_n_plus_one_query_notifications.select do |notification|
43
- notification.base_class == klass.to_s && notification.associations.include?(association)
44
- end.present?
45
- end
46
-
47
- # returns true if the given class includes the specific unused preloaded association
48
- def unused_preload_associations_for?(klass, association)
49
- Bullet.collected_unused_eager_association_notifications.select do |notification|
50
- notification.base_class == klass.to_s && notification.associations.include?(association)
51
- end.present?
52
- end
53
- end
54
- end
55
- end
56
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Support
4
- module MongoSeed
5
- module_function
6
-
7
- def seed_db
8
- category1 = Mongoid::Category.create(name: 'first')
9
- category2 = Mongoid::Category.create(name: 'second')
10
-
11
- post1 = category1.posts.create(name: 'first')
12
- post1a = category1.posts.create(name: 'like first')
13
- post2 = category2.posts.create(name: 'second')
14
-
15
- post1.users << Mongoid::User.create(name: 'first')
16
- post1.users << Mongoid::User.create(name: 'another')
17
- post2.users << Mongoid::User.create(name: 'second')
18
-
19
- comment1 = post1.comments.create(name: 'first')
20
- comment2 = post1.comments.create(name: 'first2')
21
- comment3 = post1.comments.create(name: 'first3')
22
- comment4 = post1.comments.create(name: 'second')
23
- comment8 = post1a.comments.create(name: 'like first 1')
24
- comment9 = post1a.comments.create(name: 'like first 2')
25
- comment5 = post2.comments.create(name: 'third')
26
- comment6 = post2.comments.create(name: 'fourth')
27
- comment7 = post2.comments.create(name: 'fourth')
28
-
29
- entry1 = category1.entries.create(name: 'first')
30
- entry2 = category1.entries.create(name: 'second')
31
-
32
- company1 = Mongoid::Company.create(name: 'first')
33
- company2 = Mongoid::Company.create(name: 'second')
34
-
35
- Mongoid::Address.create(name: 'first', company: company1)
36
- Mongoid::Address.create(name: 'second', company: company2)
37
- end
38
-
39
- def setup_db
40
- if Mongoid::VERSION =~ /\A4/
41
- Mongoid.configure do |config|
42
- config.load_configuration(sessions: { default: { database: 'bullet', hosts: %w[localhost:27017] } })
43
- end
44
- else
45
- Mongoid.configure do |config|
46
- config.load_configuration(clients: { default: { database: 'bullet', hosts: %w[localhost:27017] } })
47
- end
48
-
49
- # Increase the level from DEBUG in order to avoid excessive logging to the screen
50
- Mongo::Logger.logger.level = Logger::WARN
51
- end
52
- end
53
-
54
- def teardown_db
55
- Mongoid.purge!
56
- Mongoid::IdentityMap.clear if Mongoid.const_defined?(:IdentityMap)
57
- end
58
- end
59
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Support
4
- class AppDouble
5
- def call(_env)
6
- env = @env
7
- [status, headers, response]
8
- end
9
-
10
- attr_writer :status
11
-
12
- attr_writer :headers
13
-
14
- def headers
15
- @headers ||= { 'Content-Type' => 'text/html' }
16
- @headers
17
- end
18
-
19
- attr_writer :response
20
-
21
- private
22
-
23
- def status
24
- @status || 200
25
- end
26
-
27
- def response
28
- @response || ResponseDouble.new
29
- end
30
- end
31
-
32
- class ResponseDouble
33
- def initialize(actual_body = nil)
34
- @actual_body = actual_body
35
- end
36
-
37
- def body
38
- @body ||= '<html><head></head><body></body></html>'
39
- end
40
-
41
- attr_writer :body
42
-
43
- def each
44
- yield body
45
- end
46
-
47
- def close; end
48
- end
49
- end
@@ -1,284 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Support
4
- module SqliteSeed
5
- module_function
6
-
7
- def seed_db
8
- newspaper1 = Newspaper.create(name: 'First Newspaper')
9
- newspaper2 = Newspaper.create(name: 'Second Newspaper')
10
-
11
- writer1 = Writer.create(name: 'first', newspaper: newspaper1)
12
- writer2 = Writer.create(name: 'second', newspaper: newspaper2)
13
- user1 = BaseUser.create(name: 'third', newspaper: newspaper1)
14
- user2 = BaseUser.create(name: 'fourth', newspaper: newspaper2)
15
-
16
- category1 = Category.create(name: 'first')
17
- category2 = Category.create(name: 'second')
18
-
19
- post1 = category1.posts.create(name: 'first', writer: writer1)
20
- post1a = category1.posts.create(name: 'like first', writer: writer2, active: false)
21
- post2 = category2.posts.create(name: 'second', writer: writer2)
22
- post3 = category2.posts.create(name: 'third', writer: writer2)
23
-
24
- deal1 = Deal.new(name: 'Deal 1')
25
- deal1.posts << post1
26
- deal1.posts << post2
27
- deal2 = Deal.new(name: 'Deal 2')
28
- post1.deals << deal1
29
- post1.deals << deal2
30
-
31
- comment1 = post1.comments.create(name: 'first', author: writer1)
32
- comment2 = post1.comments.create(name: 'first2', author: writer1)
33
- comment3 = post1.comments.create(name: 'first3', author: writer1)
34
- comment4 = post1.comments.create(name: 'second', author: writer2)
35
- comment8 = post1a.comments.create(name: 'like first 1', author: writer1)
36
- comment9 = post1a.comments.create(name: 'like first 2', author: writer2)
37
- comment5 = post2.comments.create(name: 'third', author: user1)
38
- comment6 = post2.comments.create(name: 'fourth', author: user2)
39
- comment7 = post2.comments.create(name: 'fourth', author: writer1)
40
-
41
- entry1 = category1.entries.create(name: 'first')
42
- entry2 = category1.entries.create(name: 'second')
43
-
44
- student1 = Student.create(name: 'first')
45
- student2 = Student.create(name: 'second')
46
- teacher1 = Teacher.create(name: 'first')
47
- teacher2 = Teacher.create(name: 'second')
48
- student1.teachers = [teacher1, teacher2]
49
- student2.teachers = [teacher1, teacher2]
50
- teacher1.students << student1
51
- teacher2.students << student2
52
-
53
- firm1 = Firm.create(name: 'first')
54
- firm2 = Firm.create(name: 'second')
55
- group1 = Group.create(name: 'first')
56
- group2 = Group.create(name: 'second')
57
- client1 = Client.create(name: 'first', group: group1)
58
- client2 = Client.create(name: 'second', group: group2)
59
- firm1.clients = [client1, client2]
60
- firm2.clients = [client1, client2]
61
- client1.firms << firm1
62
- client2.firms << firm2
63
-
64
- company1 = Company.create(name: 'first')
65
- company2 = Company.create(name: 'second')
66
-
67
- Address.create(name: 'first', company: company1)
68
- Address.create(name: 'second', company: company2)
69
-
70
- country1 = Country.create(name: 'first')
71
- country2 = Country.create(name: 'second')
72
-
73
- country1.cities.create(name: 'first')
74
- country1.cities.create(name: 'second')
75
- country2.cities.create(name: 'third')
76
- country2.cities.create(name: 'fourth')
77
-
78
- person1 = Person.create(name: 'first')
79
- person2 = Person.create(name: 'second')
80
-
81
- person1.pets.create(name: 'first')
82
- person1.pets.create(name: 'second')
83
- person2.pets.create(name: 'third')
84
- person2.pets.create(name: 'fourth')
85
-
86
- author1 = Author.create(name: 'author1')
87
- author2 = Author.create(name: 'author2')
88
- folder1 = Folder.create(name: 'folder1', author_id: author1.id)
89
- folder2 = Folder.create(name: 'folder2', author_id: author2.id)
90
- page1 = Page.create(name: 'page1', parent_id: folder1.id, author_id: author1.id)
91
- page2 = Page.create(name: 'page2', parent_id: folder1.id, author_id: author1.id)
92
- page3 = Page.create(name: 'page3', parent_id: folder2.id, author_id: author2.id)
93
- page4 = Page.create(name: 'page4', parent_id: folder2.id, author_id: author2.id)
94
-
95
- role1 = Role.create(name: 'Admin')
96
- role2 = Role.create(name: 'User')
97
-
98
- user1 = User.create(name: 'user1', category: category1)
99
- user2 = User.create(name: 'user2', category: category1)
100
-
101
- user1.roles << role1
102
- user1.roles << role2
103
- user2.roles << role2
104
-
105
- submission1 = user1.create_submission(name: 'submission1')
106
- submission2 = user2.create_submission(name: 'submission2')
107
-
108
- submission1.replies.create(name: 'reply1')
109
- submission1.replies.create(name: 'reply2')
110
- submission2.replies.create(name: 'reply3')
111
- submission2.replies.create(name: 'reply4')
112
-
113
- submission1.create_attachment(file_name: 'submission1 file')
114
- submission2.create_attachment(file_name: 'submission2 file')
115
- end
116
-
117
- def setup_db
118
- ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
119
-
120
- ActiveRecord::Schema.define(version: 1) do
121
- create_table :addresses do |t|
122
- t.column :name, :string
123
- t.column :company_id, :integer
124
- end
125
-
126
- create_table :authors do |t|
127
- t.string :name
128
- end
129
-
130
- create_table :base_users do |t|
131
- t.column :name, :string
132
- t.column :type, :string
133
- t.column :newspaper_id, :integer
134
- end
135
-
136
- create_table :categories do |t|
137
- t.column :name, :string
138
- end
139
-
140
- create_table :cities do |t|
141
- t.string :name
142
- t.integer :country_id
143
- end
144
-
145
- create_table :clients do |t|
146
- t.column :name, :string
147
- t.column :group_id, :integer
148
- end
149
-
150
- create_table :comments do |t|
151
- t.column :name, :string
152
- t.column :post_id, :integer
153
- t.column :author_id, :integer
154
- end
155
-
156
- create_table :companies do |t|
157
- t.column :name, :string
158
- end
159
-
160
- create_table :contacts do |t|
161
- t.column :name, :string
162
- end
163
-
164
- create_table :countries do |t|
165
- t.string :name
166
- end
167
-
168
- create_table :deals do |t|
169
- t.column :name, :string
170
- t.column :hotel_id, :integer
171
- end
172
-
173
- create_table :deals_posts do |t|
174
- t.column :deal_id, :integer
175
- t.column :post_id, :integer
176
- end
177
-
178
- create_table :documents do |t|
179
- t.string :name
180
- t.string :type
181
- t.integer :parent_id
182
- t.integer :author_id
183
- end
184
-
185
- create_table :emails do |t|
186
- t.column :name, :string
187
- t.column :contact_id, :integer
188
- end
189
-
190
- create_table :entries do |t|
191
- t.column :name, :string
192
- t.column :category_id, :integer
193
- end
194
-
195
- create_table :firms do |t|
196
- t.column :name, :string
197
- end
198
-
199
- create_table :groups do |t|
200
- t.column :name, :string
201
- end
202
-
203
- create_table :hotels do |t|
204
- t.column :name, :string
205
- t.column :location_id, :integer
206
- end
207
-
208
- create_table :locations do |t|
209
- t.column :name, :string
210
- end
211
-
212
- create_table :newspapers do |t|
213
- t.column :name, :string
214
- end
215
-
216
- create_table :people do |t|
217
- t.string :name
218
- t.integer :pets_count
219
- end
220
-
221
- create_table :pets do |t|
222
- t.string :name
223
- t.integer :person_id
224
- end
225
-
226
- create_table :posts do |t|
227
- t.column :name, :string
228
- t.column :category_id, :integer
229
- t.column :writer_id, :integer
230
- t.column :active, :boolean, default: true
231
- end
232
-
233
- create_table :relationships do |t|
234
- t.column :firm_id, :integer
235
- t.column :client_id, :integer
236
- end
237
-
238
- create_table :students do |t|
239
- t.column :name, :string
240
- end
241
-
242
- create_table :students_teachers, id: false do |t|
243
- t.column :student_id, :integer
244
- t.column :teacher_id, :integer
245
- end
246
-
247
- create_table :teachers do |t|
248
- t.column :name, :string
249
- end
250
-
251
- create_table :replies do |t|
252
- t.column :name, :string
253
- t.column :submission_id, :integer
254
- end
255
-
256
- create_table :roles do |t|
257
- t.column :name, :string
258
- t.column :resource_id, :integer
259
- t.column :resource_type, :string
260
- end
261
-
262
- create_table :roles_users do |t|
263
- t.column :role_id, :integer
264
- t.column :user_id, :integer
265
- end
266
-
267
- create_table :submissions do |t|
268
- t.column :name, :string
269
- t.column :user_id, :integer
270
- end
271
-
272
- create_table :users do |t|
273
- t.column :name, :string
274
- t.column :category_id, :integer
275
- end
276
-
277
- create_table :attachments do |t|
278
- t.column :file_name, :string
279
- t.column :submission_id, :integer
280
- end
281
- end
282
- end
283
- end
284
- end
data/test.sh DELETED
@@ -1,15 +0,0 @@
1
- #bundle update rails && bundle exec rspec spec
2
- #BUNDLE_GEMFILE=Gemfile.mongoid bundle update mongoid && BUNDLE_GEMFILE=Gemfile.mongoid bundle exec rspec spec
3
- BUNDLE_GEMFILE=Gemfile.rails-7.0 bundle && BUNDLE_GEMFILE=Gemfile.rails-7.0 bundle exec rspec spec
4
- BUNDLE_GEMFILE=Gemfile.rails-6.1 bundle && BUNDLE_GEMFILE=Gemfile.rails-6.1 bundle exec rspec spec
5
- BUNDLE_GEMFILE=Gemfile.rails-6.0 bundle && BUNDLE_GEMFILE=Gemfile.rails-6.0 bundle exec rspec spec
6
- BUNDLE_GEMFILE=Gemfile.rails-5.2 bundle && BUNDLE_GEMFILE=Gemfile.rails-5.2 bundle exec rspec spec
7
- BUNDLE_GEMFILE=Gemfile.rails-5.1 bundle && BUNDLE_GEMFILE=Gemfile.rails-5.1 bundle exec rspec spec
8
- BUNDLE_GEMFILE=Gemfile.rails-5.0 bundle && BUNDLE_GEMFILE=Gemfile.rails-5.0 bundle exec rspec spec
9
- BUNDLE_GEMFILE=Gemfile.rails-4.2 bundle && BUNDLE_GEMFILE=Gemfile.rails-4.2 bundle exec rspec spec
10
- BUNDLE_GEMFILE=Gemfile.rails-4.1 bundle && BUNDLE_GEMFILE=Gemfile.rails-4.1 bundle exec rspec spec
11
- BUNDLE_GEMFILE=Gemfile.rails-4.0 bundle && BUNDLE_GEMFILE=Gemfile.rails-4.0 bundle exec rspec spec
12
- BUNDLE_GEMFILE=Gemfile.mongoid-7.0 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-7.0 bundle exec rspec spec
13
- BUNDLE_GEMFILE=Gemfile.mongoid-6.0 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-6.0 bundle exec rspec spec
14
- BUNDLE_GEMFILE=Gemfile.mongoid-5.0 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-5.0 bundle exec rspec spec
15
- BUNDLE_GEMFILE=Gemfile.mongoid-4.0 bundle && BUNDLE_GEMFILE=Gemfile.mongoid-4.0 bundle exec rspec spec
data/update.sh DELETED
@@ -1,10 +0,0 @@
1
- BUNDLE_GEMFILE=Gemfile.rails-5.2 bundle update
2
- BUNDLE_GEMFILE=Gemfile.rails-5.1 bundle update
3
- BUNDLE_GEMFILE=Gemfile.rails-5.0 bundle update
4
- BUNDLE_GEMFILE=Gemfile.rails-4.2 bundle update
5
- BUNDLE_GEMFILE=Gemfile.rails-4.1 bundle update
6
- BUNDLE_GEMFILE=Gemfile.rails-4.0 bundle update
7
- BUNDLE_GEMFILE=Gemfile.mongoid-7.0 bundle update
8
- BUNDLE_GEMFILE=Gemfile.mongoid-6.0 bundle update
9
- BUNDLE_GEMFILE=Gemfile.mongoid-5.0 bundle update
10
- BUNDLE_GEMFILE=Gemfile.mongoid-4.0 bundle update