cocoapods-core 0.33.1 → 0.34.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2bcb2950b28f20e026b96f84fd961d4952fa62a8
4
- data.tar.gz: c7ee976b781166cae7270542b3d94da6a00fd57b
3
+ metadata.gz: 0c766e4a992ce00a3c5e383dfb5ce948ac9f2415
4
+ data.tar.gz: d651129ce2d932f29abe25534aac47e3207388d5
5
5
  SHA512:
6
- metadata.gz: 452e1a67f966f6d9b6288f0030d2d0da659e7e37fd6c58e1cd16bdb81a4a40164660076d876a0bbb40baab65bc1e403519a10f3ee4e02eb3601b2ae44a0f5ee3
7
- data.tar.gz: eeb446c15c3bcde0280e2f8a03dc7a8308cf69241871640730e98247921c29c775bb0b128af0f68faf6835972cda0e754a2b4972d5ef9e0e5a806c583adc67a4
6
+ metadata.gz: 50cfb988efe23be79ddcf97e5bcd4dee9b54d8b4237e5745b7702d673a3462b8a971cfb07bb3af946f773b94a04401a1703d577680ab41d6977c7097a75164fd
7
+ data.tar.gz: 788e5574fdf5c4ea4557e353c4a4b9957e3212ce396baae8972ddec0945cb15de1d1a5380a1c264910b8791de569831350ef18d8b05661d086669ddc1ffdb7d8
@@ -179,7 +179,7 @@ module Pod
179
179
  return false unless head? == other.head?
180
180
  return false unless external_source == other.external_source
181
181
 
182
- other.requirement.requirements.all? do | operator, version |
182
+ other.requirement.requirements.all? do | _operator, version |
183
183
  requirement.satisfied_by? Version.new(version)
184
184
  end
185
185
  end
@@ -1,5 +1,5 @@
1
1
  module Pod
2
2
  # The version of the cocoapods-core.
3
3
  #
4
- CORE_VERSION = '0.33.1' unless defined? Pod::CORE_VERSION
4
+ CORE_VERSION = '0.34.0.rc1' unless defined? Pod::CORE_VERSION
5
5
  end
@@ -42,7 +42,7 @@ module Pod
42
42
  begin
43
43
  url = get_actual_url(url)
44
44
  resp = perform_head_request(url)
45
- rescue SocketError
45
+ rescue SocketError, URI::InvalidURIError, REST::Error
46
46
  resp = nil
47
47
  end
48
48
 
@@ -60,16 +60,17 @@ module Pod
60
60
  def self.perform_head_request(url)
61
61
  require 'rest'
62
62
 
63
- resp = ::REST.head(url)
63
+ resp = ::REST.head(url, 'User-Agent' => USER_AGENT)
64
64
 
65
65
  if resp.status_code >= 400
66
- resp = ::REST.get(url)
66
+ resp = ::REST.get(url, 'User-Agent' => USER_AGENT)
67
67
  end
68
68
 
69
69
  resp
70
70
  end
71
71
 
72
72
  MAX_HTTP_REDIRECTS = 3
73
+ USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/538.43.40 (KHTML, like Gecko) Version/8.0 Safari/538.43.40'
73
74
 
74
75
  #-------------------------------------------------------------------------#
75
76
  end
@@ -38,7 +38,7 @@ module Pod
38
38
  def self.from_file(path)
39
39
  return nil unless path.exist?
40
40
  require 'yaml'
41
- hash = File.open(path) { |f| YAMLHelper.load(f) }
41
+ hash = YAMLHelper.load_file(path)
42
42
  unless hash && hash.is_a?(Hash)
43
43
  raise Informative, "Invalid Lockfile in `#{path}`"
44
44
  end
@@ -133,20 +133,21 @@ module Pod
133
133
  #
134
134
  # @raise If there is no version stored for the given name.
135
135
  #
136
- # @return [Dependency] the generated dependency.
136
+ # @return [Array<Dependency>] the generated dependency.
137
137
  #
138
- def dependency_to_lock_pod_named(name)
139
- dep = dependencies.find { |d| d.name == name || d.root_name == name }
140
- version = version(name)
141
-
142
- unless dep && version
143
- raise StandardError, "Attempt to lock the `#{name}` Pod without an " \
138
+ def dependencies_to_lock_pod_named(name)
139
+ deps = dependencies.select { |d| d.root_name == name }
140
+ if deps.empty?
141
+ raise StandardError, "Attempt to lock the `#{name}` Pod without a " \
144
142
  'known dependency.'
145
143
  end
146
144
 
147
- locked_dependency = dep.dup
148
- locked_dependency.specific_version = version
149
- locked_dependency
145
+ deps.map do |dep|
146
+ version = version(dep.name)
147
+ locked_dependency = dep.dup
148
+ locked_dependency.specific_version = version
149
+ locked_dependency
150
+ end
150
151
  end
151
152
 
152
153
  # @return [Version] The version of CocoaPods which generated this lockfile.
@@ -233,8 +234,8 @@ module Pod
233
234
  [:added, :changed, :removed, :unchanged].each { |k| result[k] = [] }
234
235
 
235
236
  installed_deps = dependencies.map do |dep|
236
- dependency_to_lock_pod_named(dep.name)
237
- end
237
+ dependencies_to_lock_pod_named(dep.root_name)
238
+ end.flatten
238
239
  all_dep_names = (dependencies + podfile.dependencies).map(&:name).uniq
239
240
  all_dep_names.each do |name|
240
241
  installed_dep = installed_deps.find { |d| d.name == name }
@@ -393,7 +394,7 @@ module Pod
393
394
  # @return [Array] the generated data.
394
395
  #
395
396
  def generate_dependencies_data(podfile)
396
- podfile.dependencies.map { |d| d.to_s }.sort
397
+ podfile.dependencies.map(&:to_s).sort
397
398
  end
398
399
 
399
400
  # Generates the information of the external sources.
@@ -431,7 +432,7 @@ module Pod
431
432
  #
432
433
  def generate_checksums(specs)
433
434
  checksums = {}
434
- specs.select { |spec| spec.defined_in_file }.each do |spec|
435
+ specs.select(&:defined_in_file).each do |spec|
435
436
  checksums[spec.root.name] = spec.checksum
436
437
  end
437
438
  checksums
@@ -89,6 +89,26 @@ module Pod
89
89
  #
90
90
  # ------
91
91
  #
92
+ # ### Build configurations
93
+ #
94
+ # *IMPORTANT*: the following syntax is tentative and might change without
95
+ # notice in future. This feature is released in this state due to
96
+ # the strong demand for it. You can use it but you might need to change
97
+ # your Podfile to use future versions of CocoaPods. Anyway a clear and
98
+ # simple upgrade path will be provided.
99
+ #
100
+ # By default dependencies are installed on all the build configurations
101
+ # of the target. For debug purposes or for other reasons, they can be
102
+ # enabled only on a given list of build configuration names.
103
+ #
104
+ # pod 'PonyDebugger', :configurations => ['Release', 'App Store']
105
+ #
106
+ # Alternatively you can white-list only a single build configuration.
107
+ #
108
+ # pod 'PonyDebugger', :configuration => ['Release']
109
+ #
110
+ # ------
111
+ #
92
112
  # Dependencies can be obtained also from external sources.
93
113
  #
94
114
  #
@@ -145,7 +165,7 @@ module Pod
145
165
  # @note This method allow a nil name and the raises to be more
146
166
  # informative.
147
167
  #
148
- # @note Support for inline podspecs has been deprecated.
168
+ # @note Support for inline podspecs has been deprecated.
149
169
  #
150
170
  # @return [void]
151
171
  #
@@ -448,6 +468,44 @@ module Pod
448
468
 
449
469
  #-----------------------------------------------------------------------#
450
470
 
471
+ # @!group Sources
472
+ #
473
+ # The Podfile retrieves specs from a given list of sources (repos).
474
+ #
475
+ # Sources are __global__ and they are not stored per target definition.
476
+
477
+ #-----------------------------------------------------------------------#
478
+
479
+ # Specifies the location of specs
480
+ #
481
+ # -----
482
+ #
483
+ # By default, the github Cocoapods/specs repository is used. Use this
484
+ # method to specify (an) other(s) source(s). The order of the sources is
485
+ # relevant. CocoaPods will use the highest version of a Pod of the first
486
+ # source which includes the Pod (regardless whether other sources have a
487
+ # higher version).
488
+ #
489
+ # @param [String] source
490
+ # The name of a specs repo. Previously specified by user
491
+ # via pod repo add command
492
+ #
493
+ # @example Specifying to use first `my_private_repo` and then the
494
+ # CocoaPods Master Repo
495
+ #
496
+ # source 'my_private_repo'
497
+ # source 'master'
498
+ #
499
+ # @return [void]
500
+ #
501
+ def source(source)
502
+ hash_sources = get_hash_value('sources') || []
503
+ hash_sources << source
504
+ set_hash_value('sources', hash_sources.uniq)
505
+ end
506
+
507
+ #-----------------------------------------------------------------------#
508
+
451
509
  # @!group Hooks
452
510
  # The Podfile provides hooks that will be called during the
453
511
  # installation process.
@@ -460,7 +518,7 @@ module Pod
460
518
  # been downloaded but before they are installed.
461
519
  #
462
520
  # It receives the
463
- # [`Pod::Hooks::InstallerRepresentation`](http://docs.cocoapods.org/cocoapods/pod/hooks/installerrepresentation/)
521
+ # [`Pod::Hooks::InstallerRepresentation`](http://rubydoc.info/gems/cocoapods/Pod/Hooks/InstallerRepresentation/)
464
522
  # as its only argument.
465
523
  #
466
524
  # @example Defining a pre install hook in a Podfile.
@@ -479,7 +537,7 @@ module Pod
479
537
  # to perform.
480
538
  #
481
539
  # It receives the
482
- # [`Pod::Hooks::InstallerRepresentation`](http://docs.cocoapods.org/cocoapods/pod/hooks/installerrepresentation/)
540
+ # [`Pod::Hooks::InstallerRepresentation`](http://rubydoc.info/gems/cocoapods/Pod/Hooks/InstallerRepresentation/)
483
541
  # as its only argument.
484
542
  #
485
543
  # @example Customizing the `OTHER_LDFLAGS` of all targets
@@ -316,6 +316,67 @@ module Pod
316
316
 
317
317
  #--------------------------------------#
318
318
 
319
+ # Whether a specific pod should be linked to the target when building for
320
+ # a specific configuration. If a pod has not been explicitly whitelisted
321
+ # for any configuration, it is implicitly whitelisted.
322
+ #
323
+ # @param [String] pod_name
324
+ # The pod that we're querying about inclusion for in the given
325
+ # configuration.
326
+ #
327
+ # @param [String] configuration_name
328
+ # The configuration that we're querying about inclusion of the
329
+ # pod in.
330
+ #
331
+ # @note Build configurations are case compared case-insensitively in
332
+ # CocoaPods.
333
+ #
334
+ # @return [Bool] flag
335
+ # Whether the pod should be linked with the target
336
+ #
337
+ def pod_whitelisted_for_configuration?(pod_name, configuration_name)
338
+ found = false
339
+ configuration_pod_whitelist.each do |configuration, pods|
340
+ if pods.include?(pod_name)
341
+ found = true
342
+ if configuration.downcase == configuration_name.to_s.downcase
343
+ return true
344
+ end
345
+ end
346
+ end
347
+ !found
348
+ end
349
+
350
+ # Whitelists a pod for a specific configuration. If a pod is whitelisted
351
+ # for any configuration, it will only be linked with the target in the
352
+ # configuration(s) specified. If it is not whitelisted for any
353
+ # configuration, it is implicitly included in all configurations.
354
+ #
355
+ # @param [String] pod_name
356
+ # The pod that should be included in the given configuration.
357
+ #
358
+ # @param [String, Symbol] configuration_name
359
+ # The configuration that the pod should be included in
360
+ #
361
+ # @note Build configurations are stored as a String.
362
+ #
363
+ # @return [void]
364
+ #
365
+ def whitelist_pod_for_configuration(pod_name, configuration_name)
366
+ configuration_name = configuration_name.to_s
367
+ configuration_pod_whitelist[configuration_name] ||= []
368
+ configuration_pod_whitelist[configuration_name] << pod_name
369
+ end
370
+
371
+ # @return [Array<String>] unique list of all configurations for which
372
+ # pods have been whitelisted.
373
+ #
374
+ def all_whitelisted_configurations
375
+ configuration_pod_whitelist.keys.uniq
376
+ end
377
+
378
+ #--------------------------------------#
379
+
319
380
  # @return [Platform] the platform of the target definition.
320
381
  #
321
382
  # @note If no deployment target has been specified a default value is
@@ -384,6 +445,7 @@ module Pod
384
445
  #
385
446
  def store_pod(name, *requirements)
386
447
  parse_inhibit_warnings(name, requirements)
448
+ parse_configuration_whitelist(name, requirements)
387
449
 
388
450
  if requirements && !requirements.empty?
389
451
  pod = { name => requirements }
@@ -444,6 +506,7 @@ module Pod
444
506
  build_configurations
445
507
  dependencies
446
508
  children
509
+ configuration_pod_whitelist
447
510
  ).freeze
448
511
 
449
512
  # @return [Hash] The hash representation of the target definition.
@@ -537,6 +600,16 @@ module Pod
537
600
  get_hash_value('inhibit_warnings', {})
538
601
  end
539
602
 
603
+ # Returns the configuration_pod_whitelist hash
604
+ #
605
+ # @return [Hash<String, Array>] Hash with configuration name as key,
606
+ # array of pod names to be linked in builds with that configuration
607
+ # as value.
608
+ #
609
+ def configuration_pod_whitelist
610
+ get_hash_value('configuration_pod_whitelist', {})
611
+ end
612
+
540
613
  # @return [Array<Dependency>] The dependencies specified by the user for
541
614
  # this target definition.
542
615
  #
@@ -558,7 +631,7 @@ module Pod
558
631
  # @note The podspec directive is intended include the dependencies of a
559
632
  # spec in the project where it is developed. For this reason the
560
633
  # spec, or any of it subspecs, cannot be included in the
561
- # dependencies. Otherwise it would generate an chicken-and-egg
634
+ # dependencies. Otherwise it would generate a chicken-and-egg
562
635
  # problem.
563
636
  #
564
637
  def podspec_dependencies
@@ -619,6 +692,32 @@ module Pod
619
692
  requirements.pop if options.empty?
620
693
  end
621
694
 
695
+ # Removes :configurations or :configuration from the requirements list,
696
+ # and adds the pod's name into the internal hash for which pods should be
697
+ # linked in which configuration only.
698
+ #
699
+ # @param [String] pod name
700
+ #
701
+ # @param [Array] requirements
702
+ # If :configurations is the only key in the hash, the hash
703
+ # should be destroyed because it confuses Gem::Dependency.
704
+ #
705
+ # @return [void]
706
+ #
707
+ def parse_configuration_whitelist(name, requirements)
708
+ options = requirements.last
709
+ return requirements unless options.is_a?(Hash)
710
+
711
+ configurations = options.delete(:configurations)
712
+ configurations ||= options.delete(:configuration)
713
+ if configurations
714
+ Array(configurations).each do |configuration|
715
+ whitelist_pod_for_configuration(name, configuration)
716
+ end
717
+ end
718
+ requirements.pop if options.empty?
719
+ end
720
+
622
721
  #-----------------------------------------------------------------------#
623
722
  end
624
723
  end
@@ -95,6 +95,12 @@ module Pod
95
95
 
96
96
  # @!group Attributes
97
97
 
98
+ # @return [Array<String>] The name of the sources.
99
+ #
100
+ def sources
101
+ get_hash_value('sources') || []
102
+ end
103
+
98
104
  # @return [String] the path of the workspace if specified by the user.
99
105
  #
100
106
  def workspace_path
@@ -173,6 +179,7 @@ module Pod
173
179
  HASH_KEYS = %w(
174
180
  target_definitions
175
181
  workspace
182
+ sources
176
183
  generate_bridge_support
177
184
  set_arc_compatibility_flag
178
185
  ).freeze
@@ -239,7 +246,7 @@ module Pod
239
246
  # rubocop:disable Eval
240
247
  eval(string, nil, path.to_s)
241
248
  # rubocop:enable Eval
242
- rescue Exception => e
249
+ rescue => e
243
250
  message = "Invalid `#{path.basename}` file: #{e.message}"
244
251
  raise DSLError.new(message, path, e.backtrace)
245
252
  end
@@ -264,7 +271,7 @@ module Pod
264
271
  if string.respond_to?(:encoding) && string.encoding.name != 'UTF-8'
265
272
  string.encode!('UTF-8')
266
273
  end
267
- hash = YAMLHelper.load(string)
274
+ hash = YAMLHelper.load_string(string)
268
275
  from_hash(hash, path)
269
276
  end
270
277
 
@@ -45,7 +45,7 @@ module Pod
45
45
  new('>= 0')
46
46
  end
47
47
 
48
- # Parses the given object returning an tuple where the first entry is an
48
+ # Parses the given object returning a tuple where the first entry is an
49
49
  # operator and the second a version. If not operator is provided it
50
50
  # defaults to `=`.
51
51
  #
@@ -33,7 +33,7 @@ module Pod
33
33
  # @param [String] name
34
34
  # The name of the Pod.
35
35
  #
36
- def versions(name)
36
+ def versions(_name)
37
37
  raise StandardError, 'Abstract method.'
38
38
  end
39
39
 
@@ -45,7 +45,7 @@ module Pod
45
45
  # @param [String] version
46
46
  # The version of the Pod.
47
47
  #
48
- def specification(name, version)
48
+ def specification(_name, _version)
49
49
  raise StandardError, 'Abstract method.'
50
50
  end
51
51
 
@@ -58,7 +58,7 @@ module Pod
58
58
  # @param [String] version
59
59
  # the version of the Pod.
60
60
  #
61
- def specification_contents(name, version)
61
+ def specification_contents(_name, _version)
62
62
  raise StandardError, 'Abstract method.'
63
63
  end
64
64
 
@@ -3,38 +3,38 @@ module Pod
3
3
  # The Aggregate manages a directory of sources repositories.
4
4
  #
5
5
  class Aggregate
6
- # @return [Pathname] the directory were the repositories are stored.
6
+ # @return [Array<Pathname>] The ordered list of source directories.
7
7
  #
8
- attr_reader :repos_dir
8
+ attr_reader :directories
9
9
 
10
- # @param [Pathname] repos_dir @see repos_dir.
10
+ # @param [Array<Pathname>] repos_dirs @see directories
11
11
  #
12
- def initialize(repos_dir)
13
- @repos_dir = repos_dir
12
+ def initialize(repos_dirs)
13
+ @directories = Array(repos_dirs)
14
14
  end
15
15
 
16
- # @return [Array<Source>] all the sources.
16
+ # @return [Array<Source>] The ordered list of the sources.
17
17
  #
18
- def all
19
- @sources ||= dirs.map { |repo| Source.new(repo) }.sort_by(&:name)
18
+ def sources
19
+ @sources ||= directories.map { |repo| Source.new(repo) }
20
20
  end
21
21
 
22
22
  # @return [Array<String>] the names of all the pods available.
23
23
  #
24
24
  def all_pods
25
- all.map(&:pods).flatten.uniq
25
+ sources.map(&:pods).flatten.uniq
26
26
  end
27
27
 
28
- # @return [Array<Set>] the sets for all the pods available.
28
+ # @return [Array<Set>] The sets for all the pods available.
29
29
  #
30
30
  # @note Implementation detail: The sources don't cache their values
31
31
  # because they might change in response to an update. Therefore
32
- # this method to prevent slowness caches the values before
32
+ # this method to preserve performance caches the values before
33
33
  # processing them.
34
34
  #
35
35
  def all_sets
36
36
  pods_by_source = {}
37
- all.each do |source|
37
+ sources.each do |source|
38
38
  pods_by_source[source] = source.pods
39
39
  end
40
40
  sources = pods_by_source.keys
@@ -47,20 +47,6 @@ module Pod
47
47
  end
48
48
  end
49
49
 
50
- # @return [Array<Pathname>] the directories where the sources are stored.
51
- #
52
- # @note If the repos dir doesn't exits this will return an empty array.
53
- #
54
- # @raise If the repos dir doesn't exits.
55
- #
56
- def dirs
57
- if repos_dir.exist?
58
- repos_dir.children.select(&:directory?)
59
- else
60
- []
61
- end
62
- end
63
-
64
50
  # Returns a set configured with the source which contains the highest
65
51
  # version in the aggregate.
66
52
  #
@@ -73,7 +59,7 @@ module Pod
73
59
  def representative_set(name)
74
60
  representative_source = nil
75
61
  highest_version = nil
76
- all.each do |source|
62
+ sources.each do |source|
77
63
  source_versions = source.versions(name)
78
64
  if source_versions
79
65
  source_version = source_versions.first
@@ -100,9 +86,9 @@ module Pod
100
86
  # @see Source#search
101
87
  #
102
88
  def search(dependency)
103
- sources = all.select { |s| s.search(dependency) }
104
- unless sources.empty?
105
- Specification::Set.new(dependency.root_name, sources)
89
+ found_sources = sources.select { |s| s.search(dependency) }
90
+ unless found_sources.empty?
91
+ Specification::Set.new(dependency.root_name, found_sources)
106
92
  end
107
93
  end
108
94
 
@@ -117,7 +103,7 @@ module Pod
117
103
  def search_by_name(query, full_text_search = false)
118
104
  pods_by_source = {}
119
105
  result = []
120
- all.each do |s|
106
+ sources.each do |s|
121
107
  source_pods = s.search_by_name(query, full_text_search)
122
108
  pods_by_source[s] = source_pods.map(&:name)
123
109
  end
@@ -180,8 +180,8 @@ module Pod
180
180
  def value_for_attribute(attr_name)
181
181
  attr = Specification::DSL.attributes[attr_name]
182
182
  value = value_with_inheritance(spec, attr)
183
- value ||= attr.default(platform_name)
184
- value ||= attr.container.new if attr.container
183
+ value = attr.default(platform_name) if value.nil?
184
+ value = attr.container.new if value.nil? && attr.container
185
185
  value
186
186
  end
187
187
 
@@ -3,8 +3,8 @@ module Pod
3
3
  module DSL
4
4
  # @return [Array<Attribute>] The attributes of the class.
5
5
  #
6
- def self.attributes
7
- @attributes
6
+ class << self
7
+ attr_reader :attributes
8
8
  end
9
9
 
10
10
  # This module provides support for storing the runtime information of the
@@ -14,7 +14,7 @@ module Pod
14
14
  # Defines a root attribute for the extended class.
15
15
  #
16
16
  # Root attributes make sense only in root specification, they never are
17
- # multiplatform, they don't have inheritance, and they never have a
17
+ # multi-platform, they don't have inheritance, and they never have a
18
18
  # default value.
19
19
  #
20
20
  # @param [String] name
@@ -33,7 +33,7 @@ module Pod
33
33
 
34
34
  # Defines an attribute for the extended class.
35
35
  #
36
- # Regular attributes in general support inheritance and multi platform
36
+ # Regular attributes in general support inheritance and multi-platform
37
37
  # values, so resolving them for a given specification is not trivial.
38
38
  #
39
39
  # @param [String] name
@@ -9,43 +9,6 @@ module Pod
9
9
  CoreUI.warn "[#{self}] `preferred_dependency` has been renamed "\
10
10
  'to `default_subspecs`.'
11
11
  end
12
-
13
- def singleton_method_added(method)
14
- if method == :header_mappings
15
- raise Informative, "[#{self}] The use of the `header_mappings` " \
16
- "hook has been deprecated.\n Use the `header_dir` and the " \
17
- '`header_mappings_dir` attributes.'
18
-
19
- elsif method == :copy_header_mapping
20
- raise Informative, "[#{self}] The use of the " \
21
- "`copy_header_mapping` hook has been deprecated.\nUse" \
22
- 'the `header_dir` and the `header_mappings_dir` attributes.'
23
- end
24
- end
25
-
26
- def documentation=(value)
27
- CoreUI.warn "[#{self}] The `documentation` DSL directive of the " \
28
- 'podspec format has been deprecated.'
29
- end
30
-
31
- def clean_paths=(value)
32
- raise Informative, "[#{self}] Clean paths are deprecated. " \
33
- 'CocoaPods now cleans unused files by default. Use the ' \
34
- '`preserve_paths` attribute if needed.'
35
- end
36
-
37
- DEPRECATED_METHODS = [
38
- :part_of_dependency=,
39
- :part_of=,
40
- :exclude_header_search_paths=,
41
- ]
42
-
43
- DEPRECATED_METHODS.each do |method|
44
- define_method method do |value|
45
- raise Informative, "[#{self}] Attribute "\
46
- "`#{method.to_s[0..-2]}` has been deprecated."
47
- end
48
- end
49
12
  end
50
13
  end
51
14
  end