clowne 1.1.0 → 1.2.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.
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: []