deep_cloneable 3.0.0 → 3.2.1

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.
@@ -1,79 +1,21 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
- # stub: deep_cloneable 3.0.0 ruby lib
1
+ # frozen_string_literal: true
6
2
 
7
- Gem::Specification.new do |s|
8
- s.name = "deep_cloneable".freeze
9
- s.version = "3.0.0"
10
-
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib".freeze]
13
- s.authors = ["Reinier de Lange".freeze]
14
- s.date = "2019-08-18"
15
- s.description = "Extends the functionality of ActiveRecord::Base#dup to perform a deep clone that includes user specified associations. ".freeze
16
- s.email = "rjdelange@icloud.com".freeze
17
- s.extra_rdoc_files = [
18
- "LICENSE"
19
- ]
20
- s.files = [
21
- ".document",
22
- ".rubocop.yml",
23
- ".travis.yml",
24
- "Appraisals",
25
- "CHANGELOG.md",
26
- "Gemfile",
27
- "Gemfile.lock",
28
- "LICENSE",
29
- "Rakefile",
30
- "VERSION",
31
- "deep_cloneable.gemspec",
32
- "gemfiles/3.1.gemfile",
33
- "gemfiles/3.1.gemfile.lock",
34
- "gemfiles/3.2.gemfile",
35
- "gemfiles/3.2.gemfile.lock",
36
- "gemfiles/4.0.gemfile",
37
- "gemfiles/4.0.gemfile.lock",
38
- "gemfiles/4.1.gemfile",
39
- "gemfiles/4.1.gemfile.lock",
40
- "gemfiles/4.2.gemfile",
41
- "gemfiles/4.2.gemfile.lock",
42
- "gemfiles/5.0.gemfile",
43
- "gemfiles/5.0.gemfile.lock",
44
- "gemfiles/5.1.gemfile",
45
- "gemfiles/5.1.gemfile.lock",
46
- "gemfiles/5.2.gemfile",
47
- "gemfiles/5.2.gemfile.lock",
48
- "gemfiles/6.0.gemfile",
49
- "gemfiles/6.0.gemfile.lock",
50
- "init.rb",
51
- "lib/deep_cloneable.rb",
52
- "lib/deep_cloneable/association_not_found_exception.rb",
53
- "lib/deep_cloneable/deep_clone.rb",
54
- "lib/deep_cloneable/skip_validations.rb",
55
- "readme.md",
56
- "test/database.yml",
57
- "test/models.rb",
58
- "test/schema.rb",
59
- "test/test_deep_cloneable.rb",
60
- "test/test_helper.rb"
61
- ]
62
- s.homepage = "http://github.com/moiristo/deep_cloneable".freeze
63
- s.licenses = ["MIT".freeze]
64
- s.rubygems_version = "3.0.2".freeze
65
- s.summary = "This gem gives every ActiveRecord::Base object the possibility to do a deep clone.".freeze
66
-
67
- if s.respond_to? :specification_version then
68
- s.specification_version = 4
3
+ $:.unshift File.expand_path('../lib', __FILE__)
4
+ require 'deep_cloneable/version'
69
5
 
70
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
71
- s.add_runtime_dependency(%q<activerecord>.freeze, [">= 3.1.0", "< 7"])
72
- else
73
- s.add_dependency(%q<activerecord>.freeze, [">= 3.1.0", "< 7"])
74
- end
75
- else
76
- s.add_dependency(%q<activerecord>.freeze, [">= 3.1.0", "< 7"])
77
- end
6
+ Gem::Specification.new do |s|
7
+ s.name = 'deep_cloneable'
8
+ s.version = DeepCloneable::VERSION
9
+ s.authors = ['Reinier de Lange']
10
+ s.description = 'Extends the functionality of ActiveRecord::Base#dup to perform a deep clone that includes user specified associations.'
11
+ s.summary = 'This gem gives every ActiveRecord::Base object the possibility to do a deep clone.'
12
+ s.email = 'rjdelange@icloud.com'
13
+ s.extra_rdoc_files = ['LICENSE']
14
+ s.files = Dir.glob('{bin/*,lib/**/*,[A-Z]*}')
15
+ s.homepage = 'https://github.com/moiristo/deep_cloneable'
16
+ s.licenses = ['MIT']
17
+ s.platform = Gem::Platform::RUBY
18
+ s.required_ruby_version = '>= 1.9.3'
19
+ s.require_paths = ['lib']
20
+ s.add_runtime_dependency('activerecord', ['>= 3.1.0', '< 9'])
78
21
  end
79
-
data/init.rb CHANGED
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'deep_cloneable'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DeepCloneable
2
4
  class AssociationNotFoundException < StandardError
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DeepCloneable
2
4
  module DeepClone
3
5
  # Deep dups an ActiveRecord model. See README.rdoc
@@ -5,7 +7,7 @@ module DeepCloneable
5
7
  options = args[0] || {}
6
8
 
7
9
  dictionary = options[:dictionary]
8
- dictionary ||= {} if options.delete(:use_dictionary)
10
+ dictionary ||= {} if options[:use_dictionary]
9
11
 
10
12
  kopy = if dictionary
11
13
  find_in_dictionary_or_dup(dictionary)
@@ -13,6 +15,8 @@ module DeepCloneable
13
15
  dup
14
16
  end
15
17
 
18
+ options[:preprocessor].call(self, kopy) if options.key?(:preprocessor)
19
+
16
20
  deep_exceptions = {}
17
21
  if options[:except]
18
22
  exceptions = Array.wrap(options[:except])
@@ -44,13 +48,21 @@ module DeepCloneable
44
48
  association = association.keys.first
45
49
  end
46
50
 
47
- if conditions_or_deep_associations.is_a?(Hash)
51
+ case conditions_or_deep_associations
52
+ when Hash
48
53
  conditions_or_deep_associations = conditions_or_deep_associations.dup
49
54
  conditions[:if] = conditions_or_deep_associations.delete(:if) if conditions_or_deep_associations[:if]
50
55
  conditions[:unless] = conditions_or_deep_associations.delete(:unless) if conditions_or_deep_associations[:unless]
51
- elsif conditions_or_deep_associations.is_a?(Array)
52
- conditions_or_deep_associations = conditions_or_deep_associations.dup
53
- conditions_or_deep_associations.delete_if { |entry| conditions.merge!(entry) if entry.is_a?(Hash) && (entry.key?(:if) || entry.key?(:unless)) }
56
+ when Array
57
+ conditions_or_deep_associations = conditions_or_deep_associations.map { |entry| entry.is_a?(Hash) ? entry.dup : entry }
58
+ conditions_or_deep_associations.each_with_index do |entry, index|
59
+ if entry.is_a?(Hash)
60
+ conditions[:if] = entry.delete(:if) if entry[:if]
61
+ conditions[:unless] = entry.delete(:unless) if entry[:unless]
62
+ end
63
+
64
+ conditions_or_deep_associations.delete_at(index) if entry.empty?
65
+ end
54
66
  end
55
67
 
56
68
  dup_options = {}
@@ -59,7 +71,7 @@ module DeepCloneable
59
71
  dup_options[:only] = deep_onlinesses[association] if deep_onlinesses[association]
60
72
  dup_options[:dictionary] = dictionary if dictionary
61
73
 
62
- [:skip_missing_associations, :validate].each do |option|
74
+ [:skip_missing_associations, :validate, :preprocessor, :postprocessor].each do |option|
63
75
  dup_options[option] = options[option] if options.key?(option)
64
76
  end
65
77
 
@@ -81,6 +93,7 @@ module DeepCloneable
81
93
  end
82
94
 
83
95
  yield(self, kopy) if block
96
+ options[:postprocessor].call(self, kopy) if options.key?(:postprocessor)
84
97
 
85
98
  kopy
86
99
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DeepCloneable
2
4
  module SkipValidations
3
5
  def perform_validations(options = {})
@@ -0,0 +1,3 @@
1
+ module DeepCloneable
2
+ VERSION = '3.2.1'
3
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_record'
2
4
  require 'active_support/lazy_load_hooks'
3
5
  require 'active_support/core_ext/array/wrap'
data/readme.md CHANGED
@@ -1,21 +1,21 @@
1
1
  # deep_cloneable
2
2
 
3
- [![Build Status](https://travis-ci.org/moiristo/deep_cloneable.svg?branch=master)](https://travis-ci.org/moiristo/deep_cloneable)
3
+ ![Build Status](https://github.com/moiristo/deep_cloneable/actions/workflows/ruby.yml/badge.svg)
4
4
 
5
5
  This gem gives every ActiveRecord::Base object the possibility to do a deep clone that includes user specified associations. It is a rails 3+ upgrade of the [deep_cloning plugin](http://github.com/openminds/deep_cloning).
6
6
 
7
7
  ## Requirements
8
8
 
9
- * Ruby 1.9.3, 2.0.0, 2.1.5, 2.2.2, 2.3.0, 2.4.4, 2.5.5 (tested)
10
- * Activerecord 3.1, 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2, 6.0 (tested)
11
- * Rails 2.x/3.0 users, please check out the 'rails2.x-3.0' branch
9
+ - Ruby 2.3.0, 2.4.4, 2.5.5, 2.6.3, 2.7.5, 3.3.5 (tested)
10
+ - Activerecord 3.2, 4.0, 4.1, 4.2, 5.0, 5.1, 5.2, 6.0, 7.0, 8.0 (tested)
11
+ - Rails 2.x/3.0 users, please check out the 'rails2.x-3.0' branch
12
12
 
13
13
  ## Installation
14
14
 
15
- * Add deep_cloneable to your Gemfile:
15
+ - Add deep_cloneable to your Gemfile:
16
16
 
17
17
  ```ruby
18
- gem 'deep_cloneable', '~> 3.0.0'
18
+ gem 'deep_cloneable', '~> 3.2.1'
19
19
  ```
20
20
 
21
21
  ## Upgrade details
@@ -24,8 +24,8 @@ gem 'deep_cloneable', '~> 3.0.0'
24
24
 
25
25
  There are two breaking changes that you might need to pay attention to:
26
26
 
27
- * When using an optional block (see below), the block used to be evaluated before `deep_cloneable` had performed its changes (inclusions, exclusions, includes). In v3, the block is evaluated after all processing has been done, just before the copy is about to be returned.
28
- * When a defined association is not found, `deep_cloneable` raises an exception. The exception class has changed namespace: the class definition used to be `ActiveRecord::Base::DeepCloneable::AssociationNotFoundException` and this has changed to `DeepCloneable::AssociationNotFoundException`.
27
+ - When using an optional block (see below), the block used to be evaluated before `deep_cloneable` had performed its changes (inclusions, exclusions, includes). In v3, the block is evaluated after all processing has been done, just before the copy is about to be returned.
28
+ - When a defined association is not found, `deep_cloneable` raises an exception. The exception class has changed namespace: the class definition used to be `ActiveRecord::Base::DeepCloneable::AssociationNotFoundException` and this has changed to `DeepCloneable::AssociationNotFoundException`.
29
29
 
30
30
  ### Upgrading from v1
31
31
 
@@ -33,7 +33,7 @@ The `dup` method with arguments has been replaced in deep_cloneable 2 by the met
33
33
 
34
34
  ## Usage
35
35
 
36
- The `deep_clone` method supports a couple options that can be specified by passing an options hash. Without options, the behaviour is the same as ActiveRecord's [`dup`](http://apidock.com/rails/ActiveRecord/Core/dup) method.
36
+ The `deep_clone` method supports a couple options that can be specified by passing an options hash. Without options, the behaviour is the same as ActiveRecord's [`dup`](http://apidock.com/rails/ActiveRecord/Core/dup) method.
37
37
 
38
38
  ### Association inclusion
39
39
 
@@ -85,6 +85,7 @@ pirate.deep_clone include: [ :mateys, { treasures: [ :matey, :gold_pieces ] } ],
85
85
  The `deep_clone` method supports both `except` and `only` for specifying which attributes should be duped:
86
86
 
87
87
  #### Exceptions
88
+
88
89
  ```ruby
89
90
  # Single exception
90
91
  pirate.deep_clone except: :name
@@ -97,6 +98,7 @@ pirate.deep_clone include: :parrot, except: [ :name, { parrot: [ :name ] } ]
97
98
  ```
98
99
 
99
100
  #### Inclusions
101
+
100
102
  ```ruby
101
103
  # Single attribute inclusion
102
104
  pirate.deep_clone only: :name
@@ -109,6 +111,19 @@ pirate.deep_clone include: :parrot, only: [ :name, { parrot: [ :name ] } ]
109
111
 
110
112
  ```
111
113
 
114
+ ### Pre- and postprocessor
115
+
116
+ You can specify a pre- and/or a postprocessor to modify a duped object after duplication:
117
+
118
+ ```ruby
119
+ pirate.deep_clone(include: :parrot, preprocessor: ->(original, kopy) { kopy.cloned_from_id = original.id if kopy.respond_to?(:cloned_from_id) })
120
+ pirate.deep_clone(include: :parrot, postprocessor: ->(original, kopy) { kopy.cloned_from_id = original.id if kopy.respond_to?(:cloned_from_id) })
121
+ ```
122
+
123
+ _Note_: Specifying a postprocessor is essentially the same as specifying an optional block (see below).
124
+
125
+ _Note_: Using `deep_clone` with a processors will pass all associated objects that are being cloned to the processor, so be sure to check whether the object actually responds to your method of choice.
126
+
112
127
  ### Optional Block
113
128
 
114
129
  Pass a block to `deep_clone` to modify a duped object after duplication:
@@ -119,9 +134,7 @@ pirate.deep_clone include: :parrot do |original, kopy|
119
134
  end
120
135
  ```
121
136
 
122
- *Note*: The block is invoked before attributes are excluded.
123
-
124
- *Note*: Using `deep_clone` with a block will also pass the associated objects that are being cloned to the block, so be sure to check whether the object actually responds to your method of choice.
137
+ _Note_: Using `deep_clone` with a block will also pass the associated objects that are being cloned to the block, so be sure to check whether the object actually responds to your method of choice.
125
138
 
126
139
  ### Cloning models with files
127
140
 
@@ -130,6 +143,7 @@ end
130
143
  If you are cloning models that have associated files through Carrierwave these will not get transferred automatically. To overcome the issue you need to explicitly set the file attribute.
131
144
 
132
145
  Easiest solution is to add the code in a clone block as described above.
146
+
133
147
  ```ruby
134
148
  pirate.deep_clone include: :parrot do |original, kopy|
135
149
  kopy.thumbnail = original.thumbnail
@@ -143,11 +157,52 @@ For ActiveStorage, you have two options: you can either make a full copy, or sha
143
157
  ##### Full copy example
144
158
 
145
159
  ```ruby
160
+ # Rails 5.2, has_one_attached example 1
161
+ pirate.deep_clone include: [:parrot, :avatar_attachment, :avatar_blob]
162
+
163
+ # Rails 5.2, has_one_attached example 2
164
+ pirate.deep_clone include: :parrot do |original, kopy|
165
+ if kopy.is_a?(Pirate) && original.avatar.attached?
166
+ attachment = original.avatar
167
+ kopy.avatar.attach \
168
+ :io => StringIO.new(attachment.download),
169
+ :filename => attachment.filename,
170
+ :content_type => attachment.content_type
171
+ end
172
+ end
173
+
174
+ # Rails 5.2, has_many_attached example 1 (attach one by one)
175
+ pirate.deep_clone include: :parrot do |original, kopy|
176
+ if kopy.is_a?(Pirate) && original.crew_members_images.attached?
177
+ original.crew_members_images.each do |attachment|
178
+ kopy.crew_members_images.attach \
179
+ :io => StringIO.new(attachment.download),
180
+ :filename => attachment.filename,
181
+ :content_type => attachment.content_type
182
+ end
183
+ end
184
+ end
185
+
186
+ # Rails 5.2, has_many_attached example 2 (attach bulk)
187
+ pirate.deep_clone include: :parrot do |original, kopy|
188
+ if kopy.is_a?(Pirate) && original.crew_members_images.attached?
189
+ all_attachments_arr = original.crew_members_images.map do |attachment|
190
+ {
191
+ :io => StringIO.new(attachment.download),
192
+ :filename => attachment.filename,
193
+ :content_type => attachment.content_type
194
+ }
195
+ end
196
+ kopy.crew_members_images.attach(all_attachments_arr) # attach all at once
197
+ end
198
+ end
199
+
200
+ # Rails 6
146
201
  pirate.deep_clone include: :parrot do |original, kopy|
147
202
  if kopy.is_a?(Pirate) && original.avatar.attached?
148
- ActiveStorage::Downloader.new(original.avatar).download_blob_to_tempfile do |tempfile|
203
+ original.avatar.open do |tempfile|
149
204
  kopy.avatar.attach({
150
- io: tempfile,
205
+ io: File.open(tempfile.path),
151
206
  filename: original.avatar.blob.filename,
152
207
  content_type: original.avatar.blob.content_type
153
208
  })
@@ -156,7 +211,6 @@ pirate.deep_clone include: :parrot do |original, kopy|
156
211
  end
157
212
  ```
158
213
 
159
-
160
214
  ##### Shallow copy example
161
215
 
162
216
  ```ruby
@@ -175,14 +229,14 @@ pirate.deep_clone include: [:parrot, :rum], skip_missing_associations: true
175
229
 
176
230
  ### Note on Patches/Pull Requests
177
231
 
178
- * Fork the project.
179
- * Make your feature addition or bug fix.
180
- * Add tests for it. This is important so I don't break it in a
232
+ - Fork the project.
233
+ - Make your feature addition or bug fix.
234
+ - Add tests for it. This is important so I don't break it in a
181
235
  future version unintentionally.
182
- * Commit, do not mess with rakefile, version, or history.
236
+ - Commit, do not mess with rakefile, version, or history.
183
237
  (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
184
- * Send me a pull request. Bonus points for topic branches.
238
+ - Send me a pull request. Bonus points for topic branches.
185
239
 
186
240
  ### Copyright
187
241
 
188
- Copyright &copy; 2019 Reinier de Lange. See LICENSE for details.
242
+ Copyright &copy; 2024 Reinier de Lange. See LICENSE for details.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deep_cloneable
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reinier de Lange
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-18 00:00:00.000000000 Z
11
+ date: 2024-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 3.1.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7'
22
+ version: '9'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,60 +29,34 @@ dependencies:
29
29
  version: 3.1.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7'
33
- description: 'Extends the functionality of ActiveRecord::Base#dup to perform a deep
34
- clone that includes user specified associations. '
32
+ version: '9'
33
+ description: Extends the functionality of ActiveRecord::Base#dup to perform a deep
34
+ clone that includes user specified associations.
35
35
  email: rjdelange@icloud.com
36
36
  executables: []
37
37
  extensions: []
38
38
  extra_rdoc_files:
39
39
  - LICENSE
40
40
  files:
41
- - ".document"
42
- - ".rubocop.yml"
43
- - ".travis.yml"
44
41
  - Appraisals
45
42
  - CHANGELOG.md
46
43
  - Gemfile
47
44
  - Gemfile.lock
48
45
  - LICENSE
49
46
  - Rakefile
50
- - VERSION
51
47
  - deep_cloneable.gemspec
52
- - gemfiles/3.1.gemfile
53
- - gemfiles/3.1.gemfile.lock
54
- - gemfiles/3.2.gemfile
55
- - gemfiles/3.2.gemfile.lock
56
- - gemfiles/4.0.gemfile
57
- - gemfiles/4.0.gemfile.lock
58
- - gemfiles/4.1.gemfile
59
- - gemfiles/4.1.gemfile.lock
60
- - gemfiles/4.2.gemfile
61
- - gemfiles/4.2.gemfile.lock
62
- - gemfiles/5.0.gemfile
63
- - gemfiles/5.0.gemfile.lock
64
- - gemfiles/5.1.gemfile
65
- - gemfiles/5.1.gemfile.lock
66
- - gemfiles/5.2.gemfile
67
- - gemfiles/5.2.gemfile.lock
68
- - gemfiles/6.0.gemfile
69
- - gemfiles/6.0.gemfile.lock
70
48
  - init.rb
71
49
  - lib/deep_cloneable.rb
72
50
  - lib/deep_cloneable/association_not_found_exception.rb
73
51
  - lib/deep_cloneable/deep_clone.rb
74
52
  - lib/deep_cloneable/skip_validations.rb
53
+ - lib/deep_cloneable/version.rb
75
54
  - readme.md
76
- - test/database.yml
77
- - test/models.rb
78
- - test/schema.rb
79
- - test/test_deep_cloneable.rb
80
- - test/test_helper.rb
81
- homepage: http://github.com/moiristo/deep_cloneable
55
+ homepage: https://github.com/moiristo/deep_cloneable
82
56
  licenses:
83
57
  - MIT
84
58
  metadata: {}
85
- post_install_message:
59
+ post_install_message:
86
60
  rdoc_options: []
87
61
  require_paths:
88
62
  - lib
@@ -90,15 +64,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
64
  requirements:
91
65
  - - ">="
92
66
  - !ruby/object:Gem::Version
93
- version: '0'
67
+ version: 1.9.3
94
68
  required_rubygems_version: !ruby/object:Gem::Requirement
95
69
  requirements:
96
70
  - - ">="
97
71
  - !ruby/object:Gem::Version
98
72
  version: '0'
99
73
  requirements: []
100
- rubygems_version: 3.0.2
101
- signing_key:
74
+ rubygems_version: 3.5.20
75
+ signing_key:
102
76
  specification_version: 4
103
77
  summary: This gem gives every ActiveRecord::Base object the possibility to do a deep
104
78
  clone.
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.rubocop.yml DELETED
@@ -1,20 +0,0 @@
1
- Metrics:
2
- Enabled: false
3
-
4
- Security/YAMLLoad:
5
- Enabled: false
6
-
7
- Style/ClassAndModuleChildren:
8
- Enabled: false
9
-
10
- Style/Documentation:
11
- Enabled: false
12
-
13
- Style/HashSyntax:
14
- EnforcedStyle: hash_rockets
15
-
16
- Style/Lambda:
17
- EnforcedStyle: lambda
18
-
19
- Style/SymbolArray:
20
- EnforcedStyle: brackets
data/.travis.yml DELETED
@@ -1,100 +0,0 @@
1
- language: ruby
2
-
3
- sudo: false
4
- cache: bundler
5
-
6
- rvm:
7
- - 1.9.3
8
- - 2.0.0
9
- - 2.1.5
10
- - 2.2.2
11
- - 2.3.0
12
- - 2.4.4
13
- - 2.5.5
14
- - 2.6.3
15
-
16
- before_install:
17
- - gem update --system 2.7.8
18
- - gem install bundler -v 1.17.3
19
-
20
- gemfile:
21
- - gemfiles/3.1.gemfile
22
- - gemfiles/3.2.gemfile
23
- - gemfiles/4.0.gemfile
24
- - gemfiles/4.1.gemfile
25
- - gemfiles/4.2.gemfile
26
- - gemfiles/5.0.gemfile
27
- - gemfiles/5.1.gemfile
28
- - gemfiles/5.2.gemfile
29
- - gemfiles/6.0.gemfile
30
-
31
- matrix:
32
- exclude:
33
- - rvm: 1.9.3
34
- gemfile: gemfiles/5.0.gemfile
35
- - rvm: 1.9.3
36
- gemfile: gemfiles/5.1.gemfile
37
- - rvm: 1.9.3
38
- gemfile: gemfiles/5.2.gemfile
39
- - rvm: 1.9.3
40
- gemfile: gemfiles/6.0.gemfile
41
- - rvm: 2.0.0
42
- gemfile: gemfiles/5.0.gemfile
43
- - rvm: 2.0.0
44
- gemfile: gemfiles/5.1.gemfile
45
- - rvm: 2.0.0
46
- gemfile: gemfiles/5.2.gemfile
47
- - rvm: 2.0.0
48
- gemfile: gemfiles/6.0.gemfile
49
- - rvm: 2.1.5
50
- gemfile: gemfiles/5.0.gemfile
51
- - rvm: 2.1.5
52
- gemfile: gemfiles/5.1.gemfile
53
- - rvm: 2.1.5
54
- gemfile: gemfiles/5.2.gemfile
55
- - rvm: 2.1.5
56
- gemfile: gemfiles/6.0.gemfile
57
- - rvm: 2.2.2
58
- gemfile: gemfiles/3.1.gemfile
59
- - rvm: 2.2.2
60
- gemfile: gemfiles/4.2.gemfile
61
- - rvm: 2.2.2
62
- gemfile: gemfiles/6.0.gemfile
63
- - rvm: 2.3.0
64
- gemfile: gemfiles/3.1.gemfile
65
- - rvm: 2.3.0
66
- gemfile: gemfiles/4.2.gemfile
67
- - rvm: 2.3.0
68
- gemfile: gemfiles/6.0.gemfile
69
- - rvm: 2.4.4
70
- gemfile: gemfiles/3.1.gemfile
71
- - rvm: 2.4.4
72
- gemfile: gemfiles/3.2.gemfile
73
- - rvm: 2.4.4
74
- gemfile: gemfiles/4.0.gemfile
75
- - rvm: 2.4.4
76
- gemfile: gemfiles/4.1.gemfile
77
- - rvm: 2.4.4
78
- gemfile: gemfiles/4.2.gemfile
79
- - rvm: 2.4.4
80
- gemfile: gemfiles/6.0.gemfile
81
- - rvm: 2.5.5
82
- gemfile: gemfiles/3.1.gemfile
83
- - rvm: 2.5.5
84
- gemfile: gemfiles/3.2.gemfile
85
- - rvm: 2.5.5
86
- gemfile: gemfiles/4.0.gemfile
87
- - rvm: 2.5.5
88
- gemfile: gemfiles/4.1.gemfile
89
- - rvm: 2.5.5
90
- gemfile: gemfiles/4.2.gemfile
91
- - rvm: 2.6.3
92
- gemfile: gemfiles/3.1.gemfile
93
- - rvm: 2.6.3
94
- gemfile: gemfiles/3.2.gemfile
95
- - rvm: 2.6.3
96
- gemfile: gemfiles/4.0.gemfile
97
- - rvm: 2.6.3
98
- gemfile: gemfiles/4.1.gemfile
99
- - rvm: 2.6.3
100
- gemfile: gemfiles/4.2.gemfile
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 3.0.0
data/gemfiles/3.1.gemfile DELETED
@@ -1,17 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source 'http://rubygems.org'
4
-
5
- gem 'activerecord', '~> 3.1.0'
6
- gem 'addressable', '~> 2.3.8'
7
- gem 'appraisal', :group => :test
8
- gem 'git', '~> 1.2.9', :group => :test
9
- gem 'highline', '~> 1.6.0', :group => :test
10
- gem 'i18n', '~> 0.6.5'
11
- gem 'jeweler', :group => :test
12
- gem 'minitest', :group => :test
13
- gem 'nokogiri', '~> 1.5.0', :group => :test
14
- gem 'rack', '~> 1.6', :group => :test
15
- gem 'rake', '~> 10.4', :group => :test
16
- gem 'rdoc', '< 5', :group => :test
17
- gem 'sqlite3', :group => :test