clowne 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +11 -51
  3. data/.travis.yml +11 -23
  4. data/Gemfile +9 -9
  5. data/README.md +8 -7
  6. data/Rakefile +3 -3
  7. data/clowne.gemspec +14 -8
  8. data/docs/.nojekyll +0 -0
  9. data/docs/.rubocop.yml +8 -2
  10. data/docs/CNAME +1 -0
  11. data/docs/README.md +131 -0
  12. data/docs/_sidebar.md +25 -0
  13. data/docs/active_record.md +2 -5
  14. data/docs/after_clone.md +3 -6
  15. data/docs/after_persist.md +7 -10
  16. data/docs/architecture.md +2 -5
  17. data/docs/assets/docsify.min.js +1 -0
  18. data/docs/assets/prism-ruby.min.js +1 -0
  19. data/docs/assets/styles.css +348 -0
  20. data/docs/assets/vue.css +1 -0
  21. data/docs/clone_mapper.md +2 -5
  22. data/docs/customization.md +1 -4
  23. data/docs/exclude_association.md +1 -4
  24. data/docs/finalize.md +4 -8
  25. data/docs/from_v02_to_v1.md +2 -10
  26. data/docs/getting_started.md +171 -0
  27. data/docs/implicit_cloner.md +1 -4
  28. data/docs/include_association.md +3 -6
  29. data/docs/index.html +29 -0
  30. data/docs/init_as.md +4 -8
  31. data/docs/inline_configuration.md +1 -4
  32. data/docs/nullify.md +1 -5
  33. data/docs/operation.md +3 -6
  34. data/docs/parameters.md +5 -8
  35. data/docs/sequel.md +1 -4
  36. data/docs/supported_adapters.md +3 -6
  37. data/docs/testing.md +18 -21
  38. data/docs/traits.md +1 -4
  39. data/gemfiles/activerecord42.gemfile +5 -5
  40. data/gemfiles/jruby.gemfile +6 -6
  41. data/gemfiles/railsmaster.gemfile +6 -6
  42. data/lib/clowne.rb +11 -11
  43. data/lib/clowne/adapters/active_record.rb +3 -3
  44. data/lib/clowne/adapters/active_record/associations.rb +7 -7
  45. data/lib/clowne/adapters/active_record/associations/base.rb +1 -1
  46. data/lib/clowne/adapters/active_record/associations/belongs_to.rb +1 -1
  47. data/lib/clowne/adapters/active_record/associations/has_one.rb +1 -1
  48. data/lib/clowne/adapters/active_record/resolvers/association.rb +1 -1
  49. data/lib/clowne/adapters/base.rb +6 -6
  50. data/lib/clowne/adapters/sequel.rb +7 -7
  51. data/lib/clowne/adapters/sequel/associations.rb +6 -6
  52. data/lib/clowne/adapters/sequel/associations/base.rb +2 -2
  53. data/lib/clowne/adapters/sequel/associations/many_to_many.rb +4 -4
  54. data/lib/clowne/adapters/sequel/associations/one_to_many.rb +1 -1
  55. data/lib/clowne/adapters/sequel/associations/one_to_one.rb +1 -1
  56. data/lib/clowne/adapters/sequel/operation.rb +3 -2
  57. data/lib/clowne/adapters/sequel/resolvers/after_persist.rb +1 -1
  58. data/lib/clowne/adapters/sequel/resolvers/association.rb +1 -1
  59. data/lib/clowne/adapters/sequel/specifications/after_persist_does_not_support.rb +1 -1
  60. data/lib/clowne/cloner.rb +8 -8
  61. data/lib/clowne/declarations.rb +15 -15
  62. data/lib/clowne/declarations/after_clone.rb +1 -1
  63. data/lib/clowne/declarations/after_persist.rb +1 -1
  64. data/lib/clowne/declarations/finalize.rb +1 -1
  65. data/lib/clowne/declarations/include_association.rb +1 -1
  66. data/lib/clowne/declarations/init_as.rb +1 -1
  67. data/lib/clowne/declarations/nullify.rb +1 -1
  68. data/lib/clowne/ext/orm_ext.rb +1 -1
  69. data/lib/clowne/ext/record_key.rb +1 -1
  70. data/lib/clowne/ext/string_constantize.rb +1 -1
  71. data/lib/clowne/ext/yield_self_then.rb +1 -1
  72. data/lib/clowne/planner.rb +1 -1
  73. data/lib/clowne/rspec.rb +3 -3
  74. data/lib/clowne/rspec/clone_association.rb +3 -3
  75. data/lib/clowne/rspec/clone_associations.rb +2 -2
  76. data/lib/clowne/rspec/helpers.rb +1 -1
  77. data/lib/clowne/utils/clone_mapper.rb +1 -1
  78. data/lib/clowne/utils/operation.rb +3 -3
  79. data/lib/clowne/utils/params.rb +1 -1
  80. data/lib/clowne/version.rb +1 -1
  81. metadata +50 -35
  82. data/docs/alternatives.md +0 -26
  83. data/docs/basic_example.md +0 -83
  84. data/docs/installation.md +0 -46
  85. data/docs/overview.md +0 -25
  86. data/docs/web/.gitignore +0 -11
  87. data/docs/web/README.md +0 -6
  88. data/docs/web/core/Footer.js +0 -88
  89. data/docs/web/i18n/en.json +0 -141
  90. data/docs/web/package.json +0 -14
  91. data/docs/web/pages/en/help.js +0 -50
  92. data/docs/web/pages/en/index.js +0 -231
  93. data/docs/web/pages/en/users.js +0 -47
  94. data/docs/web/sidebars.json +0 -38
  95. data/docs/web/siteConfig.js +0 -46
  96. data/docs/web/static/css/custom.css +0 -235
  97. data/docs/web/static/fonts/FiraCode-Medium.woff +0 -0
  98. data/docs/web/static/fonts/FiraCode-Regular.woff +0 -0
  99. data/docs/web/static/img/favicon/favicon.ico +0 -0
  100. data/docs/web/yarn.lock +0 -1741
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'clowne/adapters/sequel/specifications/after_persist_does_not_support'
3
+ require "clowne/adapters/sequel/specifications/after_persist_does_not_support"
4
4
 
5
5
  module Clowne
6
6
  module Adapters # :nodoc: all
@@ -36,7 +36,7 @@ module Clowne
36
36
 
37
37
  def clonable_assoc?(source, declaration)
38
38
  source.class.plugins.include?(::Sequel::Plugins::NestedAttributes) &&
39
- source.respond_to?(:"#{declaration.name.to_s}_attributes=")
39
+ source.respond_to?(:"#{declaration.name}_attributes=")
40
40
  end
41
41
  end
42
42
  end
@@ -6,7 +6,7 @@ module Clowne
6
6
  module Specifications # :nodoc: all
7
7
  class AfterPersistDoesNotSupportException < StandardError
8
8
  def message
9
- 'Sequel adapter does not support after_persist callback'
9
+ "Sequel adapter does not support after_persist callback"
10
10
  end
11
11
  end
12
12
  end
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'clowne/planner'
4
- require 'clowne/dsl'
5
- require 'clowne/utils/options'
6
- require 'clowne/utils/params'
7
- require 'clowne/utils/operation'
3
+ require "clowne/planner"
4
+ require "clowne/dsl"
5
+ require "clowne/utils/options"
6
+ require "clowne/utils/params"
7
+ require "clowne/utils/operation"
8
8
 
9
9
  module Clowne # :nodoc: all
10
10
  class UnprocessableSourceError < StandardError; end
@@ -45,12 +45,12 @@ module Clowne # :nodoc: all
45
45
 
46
46
  # rubocop: disable Metrics/AbcSize, Metrics/MethodLength
47
47
  def call(object, **options)
48
- raise(UnprocessableSourceError, 'Nil is not cloneable object') if object.nil?
48
+ raise(UnprocessableSourceError, "Nil is not cloneable object") if object.nil?
49
49
 
50
50
  options = Clowne::Utils::Options.new(options)
51
51
  current_adapter = current_adapter(options.adapter)
52
52
 
53
- raise(ConfigurationError, 'Adapter is not defined') if current_adapter.nil?
53
+ raise(ConfigurationError, "Adapter is not defined") if current_adapter.nil?
54
54
 
55
55
  plan =
56
56
  if options.traits.empty?
@@ -79,7 +79,7 @@ module Clowne # :nodoc: all
79
79
 
80
80
  def plan_with_traits(ids, current_adapter: adapter)
81
81
  # Cache plans for combinations of traits
82
- traits_id = ids.map(&:to_s).join(':')
82
+ traits_id = ids.map(&:to_s).join(":")
83
83
  return traits_plans[traits_id] if traits_plans.key?(traits_id)
84
84
 
85
85
  traits_plans[traits_id] = Clowne::Planner.compile(
@@ -1,18 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'clowne/dsl'
4
- require 'clowne/utils/plan'
3
+ require "clowne/dsl"
4
+ require "clowne/utils/plan"
5
5
 
6
6
  module Clowne
7
7
  module Declarations # :nodoc:
8
8
  module_function
9
9
 
10
- def add(id, declaration = nil)
11
- declaration = Proc.new if block_given?
10
+ def add(id, declaration = nil, &block)
11
+ declaration = block if block_given?
12
12
 
13
13
  if declaration.is_a?(Class)
14
- DSL.send(:define_method, id) do |*args, &block|
15
- declarations.push declaration.new(*args, &block)
14
+ DSL.send(:define_method, id) do |*args, &inner_block|
15
+ declarations.push declaration.new(*args, &inner_block)
16
16
  end
17
17
  elsif declaration.is_a?(Proc)
18
18
  DSL.send(:define_method, id, &declaration)
@@ -23,12 +23,12 @@ module Clowne
23
23
  end
24
24
  end
25
25
 
26
- require 'clowne/declarations/base'
27
- require 'clowne/declarations/init_as'
28
- require 'clowne/declarations/exclude_association'
29
- require 'clowne/declarations/finalize'
30
- require 'clowne/declarations/include_association'
31
- require 'clowne/declarations/nullify'
32
- require 'clowne/declarations/trait'
33
- require 'clowne/declarations/after_persist'
34
- require 'clowne/declarations/after_clone'
26
+ require "clowne/declarations/base"
27
+ require "clowne/declarations/init_as"
28
+ require "clowne/declarations/exclude_association"
29
+ require "clowne/declarations/finalize"
30
+ require "clowne/declarations/include_association"
31
+ require "clowne/declarations/nullify"
32
+ require "clowne/declarations/trait"
33
+ require "clowne/declarations/after_persist"
34
+ require "clowne/declarations/after_clone"
@@ -6,7 +6,7 @@ module Clowne
6
6
  attr_reader :block
7
7
 
8
8
  def initialize
9
- raise ArgumentError, 'Block is required for after_clone' unless block_given?
9
+ raise ArgumentError, "Block is required for after_clone" unless block_given?
10
10
 
11
11
  @block = Proc.new
12
12
  end
@@ -6,7 +6,7 @@ module Clowne
6
6
  attr_reader :block
7
7
 
8
8
  def initialize
9
- raise ArgumentError, 'Block is required for after_persist' unless block_given?
9
+ raise ArgumentError, "Block is required for after_persist" unless block_given?
10
10
 
11
11
  @block = Proc.new
12
12
  end
@@ -6,7 +6,7 @@ module Clowne
6
6
  attr_reader :block
7
7
 
8
8
  def initialize
9
- raise ArgumentError, 'Block is required for finalize' unless block_given?
9
+ raise ArgumentError, "Block is required for finalize" unless block_given?
10
10
 
11
11
  @block = Proc.new
12
12
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'clowne/ext/string_constantize'
3
+ require "clowne/ext/string_constantize"
4
4
 
5
5
  module Clowne
6
6
  module Declarations
@@ -6,7 +6,7 @@ module Clowne
6
6
  attr_reader :block
7
7
 
8
8
  def initialize
9
- raise ArgumentError, 'Block is required for init_as' unless block_given?
9
+ raise ArgumentError, "Block is required for init_as" unless block_given?
10
10
 
11
11
  @block = Proc.new
12
12
  end
@@ -6,7 +6,7 @@ module Clowne
6
6
  attr_reader :attributes
7
7
 
8
8
  def initialize(*attributes)
9
- raise ArgumentError, 'At least one attribute required' if attributes.empty?
9
+ raise ArgumentError, "At least one attribute required" if attributes.empty?
10
10
 
11
11
  @attributes = attributes
12
12
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'clowne/ext/string_constantize'
3
+ require "clowne/ext/string_constantize"
4
4
 
5
5
  module Clowne
6
6
  module Ext
@@ -5,7 +5,7 @@ module Clowne
5
5
  module RecordKey # :nodoc: all
6
6
  def key(record)
7
7
  id = record.respond_to?(:id) && record.id ? record.id : record.__id__
8
- [record.class.name, id].join('#')
8
+ [record.class.name, id].join("#")
9
9
  end
10
10
  end
11
11
  end
@@ -6,7 +6,7 @@ module Clowne
6
6
  module StringConstantize
7
7
  refine String do
8
8
  def constantize
9
- names = split('::')
9
+ names = split("::")
10
10
 
11
11
  return nil if names.empty?
12
12
 
@@ -15,7 +15,7 @@ module Clowne
15
15
  end
16
16
 
17
17
  # See https://github.com/jruby/jruby/issues/5220
18
- ::Object.include(Ext) if RUBY_PLATFORM =~ /java/i
18
+ ::Object.include(Ext) if RUBY_PLATFORM.match?(/java/i)
19
19
 
20
20
  refine Object do
21
21
  include Ext
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'clowne/utils/plan'
3
+ require "clowne/utils/plan"
4
4
 
5
5
  module Clowne
6
6
  class Planner # :nodoc: all
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'clowne/rspec/helpers'
4
- require 'clowne/rspec/clone_associations'
5
- require 'clowne/rspec/clone_association'
3
+ require "clowne/rspec/helpers"
4
+ require "clowne/rspec/clone_associations"
5
+ require "clowne/rspec/clone_association"
@@ -23,7 +23,7 @@ module Clowne
23
23
  # rubocop: disable Metrics/AbcSize
24
24
  def match(expected, _actual)
25
25
  @actual = plan.declarations
26
- .find { |key, decl| key == :association && decl.name == expected }
26
+ .find { |key, decl| key == :association && decl.name == expected }
27
27
 
28
28
  return false if @actual.nil?
29
29
 
@@ -60,10 +60,10 @@ module Clowne
60
60
  expected_params[param] = options.fetch(param, UNDEFINED)
61
61
  end
62
62
 
63
- raise ArgumentError, 'Lambda scope is not supported' if
63
+ raise ArgumentError, "Lambda scope is not supported" if
64
64
  expected_params[:scope].is_a?(Proc)
65
65
 
66
- raise ArgumentError, 'Lambda params is not supported' if
66
+ raise ArgumentError, "Lambda params is not supported" if
67
67
  expected_params[:params].is_a?(Proc)
68
68
  end
69
69
 
@@ -9,8 +9,8 @@ module Clowne
9
9
 
10
10
  def convert_actual_to_an_array
11
11
  @actual = plan.declarations
12
- .select { |key, _| key == :association }
13
- .map { |_, decl| decl.name }
12
+ .select { |key, _| key == :association }
13
+ .map { |_, decl| decl.name }
14
14
  end
15
15
  end
16
16
  end
@@ -27,7 +27,7 @@ module Clowne
27
27
  end
28
28
 
29
29
  def non_cloner_message
30
- 'expected a cloner to be passed to `expect(...)`, ' \
30
+ "expected a cloner to be passed to `expect(...)`, " \
31
31
  "but got #{actual_formatted}"
32
32
  end
33
33
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'clowne/ext/record_key'
3
+ require "clowne/ext/record_key"
4
4
 
5
5
  module Clowne
6
6
  module Utils
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'clowne/utils/clone_mapper'
3
+ require "clowne/utils/clone_mapper"
4
4
 
5
5
  module Clowne
6
6
  module Utils
@@ -74,12 +74,12 @@ module Clowne
74
74
  end
75
75
 
76
76
  def save
77
- warn '[DEPRECATION] `save` is deprecated. Please use `persist` instead.'
77
+ warn "[DEPRECATION] `save` is deprecated. Please use `persist` instead."
78
78
  @clone.save
79
79
  end
80
80
 
81
81
  def save!
82
- warn '[DEPRECATION] `save!` is deprecated. Please use `persist!` instead.'
82
+ warn "[DEPRECATION] `save!` is deprecated. Please use `persist!` instead."
83
83
  @clone.save!
84
84
  end
85
85
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'clowne/ext/lambda_as_proc'
3
+ require "clowne/ext/lambda_as_proc"
4
4
 
5
5
  module Clowne
6
6
  module Utils
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Clowne
4
- VERSION = '1.1.0'
4
+ VERSION = "1.2.0"
5
5
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clowne
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladimir Dementyev
8
8
  - Sverchkov Nikolay
9
9
  autorequire:
10
- bindir: exe
10
+ bindir: bin
11
11
  cert_chain: []
12
- date: 2019-03-20 00:00:00.000000000 Z
12
+ date: 2020-07-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -31,14 +31,20 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '10.0'
34
+ version: '12.3'
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: 12.3.3
35
38
  type: :development
36
39
  prerelease: false
37
40
  version_requirements: !ruby/object:Gem::Requirement
38
41
  requirements:
39
42
  - - "~>"
40
43
  - !ruby/object:Gem::Version
41
- version: '10.0'
44
+ version: '12.3'
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 12.3.3
42
48
  - !ruby/object:Gem::Dependency
43
49
  name: rspec
44
50
  requirement: !ruby/object:Gem::Requirement
@@ -73,42 +79,56 @@ dependencies:
73
79
  requirements:
74
80
  - - "~>"
75
81
  - !ruby/object:Gem::Version
76
- version: '0.61'
82
+ version: 0.75.0
77
83
  type: :development
78
84
  prerelease: false
79
85
  version_requirements: !ruby/object:Gem::Requirement
80
86
  requirements:
81
87
  - - "~>"
82
88
  - !ruby/object:Gem::Version
83
- version: '0.61'
89
+ version: 0.75.0
84
90
  - !ruby/object:Gem::Dependency
85
91
  name: rubocop-md
86
92
  requirement: !ruby/object:Gem::Requirement
87
93
  requirements:
88
94
  - - "~>"
89
95
  - !ruby/object:Gem::Version
90
- version: '0.2'
96
+ version: 0.3.0
91
97
  type: :development
92
98
  prerelease: false
93
99
  version_requirements: !ruby/object:Gem::Requirement
94
100
  requirements:
95
101
  - - "~>"
96
102
  - !ruby/object:Gem::Version
97
- version: '0.2'
103
+ version: 0.3.0
98
104
  - !ruby/object:Gem::Dependency
99
105
  name: rubocop-rspec
100
106
  requirement: !ruby/object:Gem::Requirement
101
107
  requirements:
102
108
  - - "~>"
103
109
  - !ruby/object:Gem::Version
104
- version: '1.31'
110
+ version: 1.36.0
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.36.0
118
+ - !ruby/object:Gem::Dependency
119
+ name: standard
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.1.5
105
125
  type: :development
106
126
  prerelease: false
107
127
  version_requirements: !ruby/object:Gem::Requirement
108
128
  requirements:
109
129
  - - "~>"
110
130
  - !ruby/object:Gem::Version
111
- version: '1.31'
131
+ version: 0.1.5
112
132
  description: A flexible gem for cloning your models.
113
133
  email:
114
134
  - palkan@evilmartians.com
@@ -132,46 +152,37 @@ files:
132
152
  - bin/console
133
153
  - bin/setup
134
154
  - clowne.gemspec
155
+ - docs/.nojekyll
135
156
  - docs/.rubocop.yml
157
+ - docs/CNAME
158
+ - docs/README.md
159
+ - docs/_sidebar.md
136
160
  - docs/active_record.md
137
161
  - docs/after_clone.md
138
162
  - docs/after_persist.md
139
- - docs/alternatives.md
140
163
  - docs/architecture.md
141
- - docs/basic_example.md
164
+ - docs/assets/docsify.min.js
165
+ - docs/assets/prism-ruby.min.js
166
+ - docs/assets/styles.css
167
+ - docs/assets/vue.css
142
168
  - docs/clone_mapper.md
143
169
  - docs/customization.md
144
170
  - docs/exclude_association.md
145
171
  - docs/finalize.md
146
172
  - docs/from_v02_to_v1.md
173
+ - docs/getting_started.md
147
174
  - docs/implicit_cloner.md
148
175
  - docs/include_association.md
176
+ - docs/index.html
149
177
  - docs/init_as.md
150
178
  - docs/inline_configuration.md
151
- - docs/installation.md
152
179
  - docs/nullify.md
153
180
  - docs/operation.md
154
- - docs/overview.md
155
181
  - docs/parameters.md
156
182
  - docs/sequel.md
157
183
  - docs/supported_adapters.md
158
184
  - docs/testing.md
159
185
  - docs/traits.md
160
- - docs/web/.gitignore
161
- - docs/web/README.md
162
- - docs/web/core/Footer.js
163
- - docs/web/i18n/en.json
164
- - docs/web/package.json
165
- - docs/web/pages/en/help.js
166
- - docs/web/pages/en/index.js
167
- - docs/web/pages/en/users.js
168
- - docs/web/sidebars.json
169
- - docs/web/siteConfig.js
170
- - docs/web/static/css/custom.css
171
- - docs/web/static/fonts/FiraCode-Medium.woff
172
- - docs/web/static/fonts/FiraCode-Regular.woff
173
- - docs/web/static/img/favicon/favicon.ico
174
- - docs/web/yarn.lock
175
186
  - gemfiles/activerecord42.gemfile
176
187
  - gemfiles/jruby.gemfile
177
188
  - gemfiles/railsmaster.gemfile
@@ -235,10 +246,15 @@ files:
235
246
  - lib/clowne/utils/params.rb
236
247
  - lib/clowne/utils/plan.rb
237
248
  - lib/clowne/version.rb
238
- homepage: https://github.com/palkan/clowne
249
+ homepage: https://github.com/clowne-rb/clowne
239
250
  licenses:
240
251
  - MIT
241
- metadata: {}
252
+ metadata:
253
+ bug_tracker_uri: http://github.com/clowne-rb/clowne/issues
254
+ changelog_uri: https://github.com/clowne-rb/clowne/blob/master/CHANGELOG.md
255
+ documentation_uri: https://clowne.evilmartians.io/
256
+ homepage_uri: https://clowne.evilmartians.io/
257
+ source_code_uri: http://github.com/clowne-rb/clowne
242
258
  post_install_message:
243
259
  rdoc_options: []
244
260
  require_paths:
@@ -254,9 +270,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
270
  - !ruby/object:Gem::Version
255
271
  version: '0'
256
272
  requirements: []
257
- rubyforge_project:
258
- rubygems_version: 2.7.6
273
+ rubygems_version: 3.0.3
259
274
  signing_key:
260
275
  specification_version: 4
261
- summary: A flexible gem for cloning your models.
276
+ summary: A flexible gem for cloning your models
262
277
  test_files: []