faker 3.4.1 → 3.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +107 -1
- data/README.md +0 -2
- data/lib/faker/default/address.rb +2 -2
- data/lib/faker/default/alphanumeric.rb +1 -1
- data/lib/faker/default/id_number.rb +1 -4
- data/lib/faker/default/internet.rb +1 -1
- data/lib/faker/default/invoice.rb +1 -1
- data/lib/faker/default/national_health_service.rb +7 -2
- data/lib/faker/default/theater.rb +0 -3
- data/lib/faker/default/vehicle.rb +4 -3
- data/lib/faker/games/heroes_of_the_storm.rb +0 -11
- data/lib/faker/japanese_media/fullmetal_alchemist_brotherhood.rb +0 -3
- data/lib/faker/locations/australia.rb +0 -3
- data/lib/faker/movies/star_wars.rb +1 -1
- data/lib/faker/tv_shows/buffy.rb +0 -13
- data/lib/faker/tv_shows/dr_who.rb +0 -13
- data/lib/faker/tv_shows/the_fresh_prince_of_bel_air.rb +0 -13
- data/lib/faker/version.rb +1 -1
- data/lib/faker.rb +7 -3
- data/lib/helpers/deprecator.rb +91 -3
- data/lib/locales/en/dog.yml +262 -7
- data/lib/locales/en/dota.yml +120 -67
- data/lib/locales/en/music.yml +25 -25
- data/lib/locales/en/vehicle.yml +1 -1
- data/lib/locales/pt-BR.yml +50 -0
- data/lib/locales/sv.yml +99 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad65b0b170d18a8541ff81c4db2ccce41263844bd877e4ecb0b78261a04f916a
|
4
|
+
data.tar.gz: 2c84244f6994575b1d94fb1a7e60a3d16122e17aeed81bcb6945360aeb5b7eda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a436fa77b8d61b96a5f52748061e823528c234b5e8ce5e6e3876254eaddb3f72b6fca43e52c0aeed3d6e00701c2ab81b77a192846929d46920f088182e20e5d9
|
7
|
+
data.tar.gz: 0d2eb003ccd5492d09a2e5565994380bbb61fb1cfa0ca94efcae3f556e27bce231dfc13e643be150893040137e6c856011c7891fcde0b19c4aea99bf3d2853a4
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,111 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [v3.5.1](https://github.com/faker-ruby/faker/tree/v3.5.1) (2024-10-18)
|
4
|
+
|
5
|
+
Happy October! 🎃
|
6
|
+
|
7
|
+
This version **drops support for Ruby < 3.0**. We only support one EOL Ruby version at a time. Please upgrade to Ruby 3.0 to update to this and future versions of faker-ruby.
|
8
|
+
|
9
|
+
Besides that, this version removes deprecated generators, fixes some bugs, and adds a Security Policy.
|
10
|
+
|
11
|
+
Thanks to all contributors!
|
12
|
+
|
13
|
+
## Breaking Changes
|
14
|
+
* Drop support for Ruby 2.7 by @tatheerf02 in https://github.com/faker-ruby/faker/pull/3006
|
15
|
+
* Removes deprecated generators by @stefannibrasil in https://github.com/faker-ruby/faker/pull/3014
|
16
|
+
|
17
|
+
The following deprecated generators are being removed. Please use the new generators:
|
18
|
+
|
19
|
+
|
20
|
+
| Deprecated | New |
|
21
|
+
| -------- | ------- |
|
22
|
+
| Faker::TvShows::TheFreshPrinceOfBelAir.celebrity | Faker::TvShows::TheFreshPrinceOfBelAir.actor |
|
23
|
+
| Faker::TvShows::Buffy.celebrity | Faker::TvShows::Buffy.actor |
|
24
|
+
| Faker::TvShows::DrWho.villian | Faker::TvShows::DrWho.villain |
|
25
|
+
| Faker::Games::HeroesOfTheStorm.class | Faker::Games::HeroesOfTheStorm.class_name |
|
26
|
+
| Faker::JapaneseMedia::FmaBrotherhood | Faker::JapaneseMedia::FullmetalAlchemistBrotherhood |
|
27
|
+
| Faker::Show | Faker::Theater |
|
28
|
+
| Faker::Australia | Faker::Locations::Australia |
|
29
|
+
| Faker::IDNumber | Faker::IdNumber |
|
30
|
+
|
31
|
+
### Improvements & Bug fixes
|
32
|
+
* Fix typos by @tagliala in https://github.com/faker-ruby/faker/pull/2982
|
33
|
+
* Fix benchmark:all_methods task by excluding Faker::Deprecator module from benchmark target by @amatsuda in https://github.com/faker-ruby/faker/pull/2988
|
34
|
+
* Add Brazilian Portuguese translations for `Faker::Subscription` by @murichristopher in https://github.com/faker-ruby/faker/pull/2960
|
35
|
+
* Deprecator improvements by @stefannibrasil in https://github.com/faker-ruby/faker/pull/2997
|
36
|
+
* Faker::Alphanumeric.alphanumeric determinism fix by @admtnnr in https://github.com/faker-ruby/faker/pull/2996
|
37
|
+
* Remove CodeClimate badges by @tagliala in https://github.com/faker-ruby/faker/pull/3003
|
38
|
+
* Update Company.logo example url by @dirschn in https://github.com/faker-ruby/faker/pull/3007
|
39
|
+
* fix(music.band): removes leading whitespace by @JeremasPosta in https://github.com/faker-ruby/faker/pull/3015
|
40
|
+
* Create SECURITY.md by @stefannibrasil in https://github.com/faker-ruby/faker/pull/3016
|
41
|
+
|
42
|
+
### Update local dependencies
|
43
|
+
* Bump i18n from 1.14.5 to 1.14.6 by @dependabot in https://github.com/faker-ruby/faker/pull/3005
|
44
|
+
* Bump minitest from 5.24.1 to 5.25.0 by @dependabot in https://github.com/faker-ruby/faker/pull/2991
|
45
|
+
* Bump rubocop-minitest from 0.35.1 to 0.36.0 by @dependabot in https://github.com/faker-ruby/faker/pull/2999
|
46
|
+
* Bump yard from 0.9.36 to 0.9.37 by @dependabot in https://github.com/faker-ruby/faker/pull/3000
|
47
|
+
* Bump rubocop from 1.65.1 to 1.66.1 by @dependabot in https://github.com/faker-ruby/faker/pull/3001
|
48
|
+
|
49
|
+
## New Contributors
|
50
|
+
* @murichristopher made their first contribution in https://github.com/faker-ruby/faker/pull/2960
|
51
|
+
* @admtnnr made their first contribution in https://github.com/faker-ruby/faker/pull/2996
|
52
|
+
* @dirschn made their first contribution in https://github.com/faker-ruby/faker/pull/3007
|
53
|
+
* @tatheerf02 made their first contribution in https://github.com/faker-ruby/faker/pull/3006
|
54
|
+
* @JeremasPosta made their first contribution in https://github.com/faker-ruby/faker/pull/3015
|
55
|
+
|
56
|
+
**Full Changelog**: https://github.com/faker-ruby/faker/compare/v3.4.2...v3.5.1
|
57
|
+
|
58
|
+
--------------------------------------
|
59
|
+
|
60
|
+
## [v3.4.2](https://github.com/faker-ruby/faker/tree/v3.4.2) (2024-07-16)
|
61
|
+
|
62
|
+
Happy July with a new faker-ruby release.
|
63
|
+
|
64
|
+
This version:
|
65
|
+
|
66
|
+
- introduces a breaking change for `Faker::NationalHealthService.british_number` (more details below)
|
67
|
+
- adds translation for some generators
|
68
|
+
- fixes bugs
|
69
|
+
|
70
|
+
### Breaking changes
|
71
|
+
|
72
|
+
The NHS sets aside a range of numbers from 999 000 0000 to 999 999 9999 for test purposes. The old range could
|
73
|
+
produce NHS numbers that were in use by real patients in the UK/England and Wales. In this version, `Faker::NationalHealthService.british_number` uses the test range for creating NHS numbers rather than the previous 400 000 0010 to 499 999 9999 range.
|
74
|
+
|
75
|
+
Breaking change was introduced in "Add test range param to NHS numbers" by @neanias in https://github.com/faker-ruby/faker/pull/2947
|
76
|
+
|
77
|
+
### Improvements & Bug fixes
|
78
|
+
|
79
|
+
* Add Bank and Sport to Swedish locale by @twk-mn in https://github.com/faker-ruby/faker/pull/2961
|
80
|
+
* docs: update with notes about validity for zips by @garrettgregor in https://github.com/faker-ruby/faker/pull/2963
|
81
|
+
* `Faker::Games::Dota` missing quotes and new heroes by @arthurka-o in https://github.com/faker-ruby/faker/pull/2907
|
82
|
+
* Add phone_number.country_code and address.full_address in locale sv by @larkro in https://github.com/faker-ruby/faker/pull/2965
|
83
|
+
* Fix typo by @fynsta in https://github.com/faker-ruby/faker/pull/2968
|
84
|
+
* fix: `Faker::Internet.username` should not generate duplicated punctuation by @thdaraujo in https://github.com/faker-ruby/faker/pull/2970
|
85
|
+
* Update dog breed names for `en-US` locale by @mononoken in https://github.com/faker-ruby/faker/pull/2972
|
86
|
+
* Add `Deprecator.skip_warning?` ability to silence deprecators on tests by @keshavbiswa in https://github.com/faker-ruby/faker/pull/2956
|
87
|
+
|
88
|
+
### Update local dependencies
|
89
|
+
|
90
|
+
* Bump timecop from 0.9.9 to 0.9.10 by @dependabot in https://github.com/faker-ruby/faker/pull/2969
|
91
|
+
* Bump minitest from 5.23.1 to 5.24.1 by @dependabot in https://github.com/faker-ruby/faker/pull/2975
|
92
|
+
* Bump bundler version to `2.4.22` by @thdaraujo in https://github.com/faker-ruby/faker/pull/2978
|
93
|
+
* Bump rubocop from 1.64.1 to 1.65.0 by @dependabot in https://github.com/faker-ruby/faker/pull/2979
|
94
|
+
* Bump rubocop-minitest from 0.35.0 to 0.35.1 by @dependabot in https://github.com/faker-ruby/faker/pull/2980
|
95
|
+
|
96
|
+
## New Contributors
|
97
|
+
* @twk-mn made their first contribution in https://github.com/faker-ruby/faker/pull/2961
|
98
|
+
* @neanias made their first contribution in https://github.com/faker-ruby/faker/pull/2947
|
99
|
+
* @garrettgregor made their first contribution in https://github.com/faker-ruby/faker/pull/2963
|
100
|
+
* @arthurka-o made their first contribution in https://github.com/faker-ruby/faker/pull/2907
|
101
|
+
* @larkro made their first contribution in https://github.com/faker-ruby/faker/pull/2965
|
102
|
+
* @fynsta made their first contribution in https://github.com/faker-ruby/faker/pull/2968
|
103
|
+
* @mononoken made their first contribution in https://github.com/faker-ruby/faker/pull/2972
|
104
|
+
|
105
|
+
**Full Changelog**: https://github.com/faker-ruby/faker/compare/v.3.4.1...v3.4.2
|
106
|
+
|
107
|
+
---------------------------------
|
108
|
+
|
3
109
|
## [v3.4.1](https://github.com/faker-ruby/faker/tree/v3.4.1) (2024-05-28)
|
4
110
|
|
5
111
|
### What's changed
|
@@ -2500,7 +2606,7 @@ Fix lib/faker/version.rb
|
|
2500
2606
|
- Fixed typo in dutch translation [\#679](https://github.com/stympy/faker/pull/679) ([nschmoller](https://github.com/nschmoller))
|
2501
2607
|
- Add pokemon [\#677](https://github.com/stympy/faker/pull/677) ([bakunyo](https://github.com/bakunyo))
|
2502
2608
|
- Food [\#672](https://github.com/stympy/faker/pull/672) ([martymclaugh](https://github.com/martymclaugh))
|
2503
|
-
- Added
|
2609
|
+
- Added characters and houses data for game of thrones in en.yml [\#670](https://github.com/stympy/faker/pull/670) ([vamsipavanmahesh](https://github.com/vamsipavanmahesh))
|
2504
2610
|
- add Faker::Commerce.promotion\_code [\#669](https://github.com/stympy/faker/pull/669) ([jGRUBBS](https://github.com/jGRUBBS))
|
2505
2611
|
- Eliminate and prevent leading and trailing white space [\#665](https://github.com/stympy/faker/pull/665) ([retroGiant89](https://github.com/retroGiant89))
|
2506
2612
|
- Fix for memory overflow error Issue: \#478 [\#664](https://github.com/stympy/faker/pull/664) ([anuj-verma](https://github.com/anuj-verma))
|
data/README.md
CHANGED
@@ -4,8 +4,6 @@
|
|
4
4
|
[![Tests](https://github.com/faker-ruby/faker/workflows/Tests/badge.svg)](https://github.com/faker-ruby/faker/actions?query=workflow%3ATests)
|
5
5
|
[![Gem Version](https://badge.fury.io/rb/faker.svg)](https://badge.fury.io/rb/faker)
|
6
6
|
[![Inline docs](https://inch-ci.org/github/faker-ruby/faker.svg?branch=main)](https://inch-ci.org/github/faker-ruby/faker)
|
7
|
-
[![Test Coverage](https://api.codeclimate.com/v1/badges/ef54c7f9df86e965d64b/test_coverage)](https://codeclimate.com/github/stympy/faker/test_coverage)
|
8
|
-
[![Maintainability](https://api.codeclimate.com/v1/badges/ef54c7f9df86e965d64b/maintainability)](https://codeclimate.com/github/stympy/faker/maintainability)
|
9
7
|
|
10
8
|
Faker is a port of [Perl's Data::Faker library](https://metacpan.org/pod/Data::Faker).
|
11
9
|
It's a library for generating fake data such as names, addresses, and phone numbers.
|
@@ -119,8 +119,8 @@ module Faker
|
|
119
119
|
return numerify(letterified_string, leading_zero: true)
|
120
120
|
end
|
121
121
|
|
122
|
-
# provide a zip code that
|
123
|
-
#
|
122
|
+
# provide a zip code that may be valid for the state provided
|
123
|
+
# note: zip code may appear in the correct format for the state provided but may not be an actual state zip.
|
124
124
|
bothify(fetch("address.postcode_by_state.#{state_abbreviation}"))
|
125
125
|
end
|
126
126
|
|
@@ -12,7 +12,7 @@ module Faker
|
|
12
12
|
].freeze
|
13
13
|
ZA_RACE_DIGIT = '8'
|
14
14
|
ZA_CITIZENSHIP_DIGITS = %w[0 1].freeze
|
15
|
-
BRAZILIAN_ID_FORMAT = /(\d{1,2})(\d{3})(\d{3})([\dX])
|
15
|
+
BRAZILIAN_ID_FORMAT = /(\d{1,2})(\d{3})(\d{3})([\dX])/
|
16
16
|
BRAZILIAN_ID_FROM = 10_000_000
|
17
17
|
BRAZILIAN_ID_TO = 99_999_999
|
18
18
|
|
@@ -421,7 +421,4 @@ module Faker
|
|
421
421
|
end
|
422
422
|
end
|
423
423
|
end
|
424
|
-
|
425
|
-
include Faker::Deprecator
|
426
|
-
deprecate_generator('IDNumber', IdNumber)
|
427
424
|
end
|
@@ -65,7 +65,7 @@ module Faker
|
|
65
65
|
with_locale(:en) do
|
66
66
|
case specifier
|
67
67
|
when ::String
|
68
|
-
names = specifier
|
68
|
+
names = specifier.gsub("'", '').scan(/[[:word:]]+/)
|
69
69
|
shuffled_names = shuffle(names)
|
70
70
|
|
71
71
|
return shuffled_names.join(sample(separators)).downcase
|
@@ -22,7 +22,7 @@ module Faker
|
|
22
22
|
end
|
23
23
|
|
24
24
|
##
|
25
|
-
# Produces a random valid reference
|
25
|
+
# Produces a random valid reference according to the International bank slip reference https://en.wikipedia.org/wiki/Creditor_Reference
|
26
26
|
#
|
27
27
|
# @param ref [String] Specifies reference base.
|
28
28
|
# @return [String]
|
@@ -6,14 +6,17 @@ module Faker
|
|
6
6
|
##
|
7
7
|
# Produces a random British NHS number.
|
8
8
|
#
|
9
|
+
# The NHS sets aside a range of numbers from 999 000 0000 to 999 999 9999
|
10
|
+
# for test purposes.
|
11
|
+
#
|
9
12
|
# @return [String]
|
10
13
|
#
|
11
14
|
# @example
|
12
|
-
# Faker::NationalHealthService.british_number #=> "
|
15
|
+
# Faker::NationalHealthService.british_number #=> "999 464 0232"
|
13
16
|
#
|
14
17
|
# @faker.version 1.9.2
|
15
18
|
def british_number
|
16
|
-
base_number = rand(
|
19
|
+
base_number = rand(999_000_001...999_999_999)
|
17
20
|
# If the check digit is equivalent to 10, the number is invalid.
|
18
21
|
# See https://en.wikipedia.org/wiki/NHS_number
|
19
22
|
base_number -= 1 if check_digit(number: base_number) == 10
|
@@ -24,6 +27,8 @@ module Faker
|
|
24
27
|
.join
|
25
28
|
end
|
26
29
|
|
30
|
+
private
|
31
|
+
|
27
32
|
##
|
28
33
|
# Produces a random British NHS number's check digit.
|
29
34
|
#
|
@@ -48,12 +48,13 @@ module Faker
|
|
48
48
|
# @return [String]
|
49
49
|
#
|
50
50
|
# @example
|
51
|
-
# Faker::Vehicle.
|
51
|
+
# Faker::Vehicle.manufacturer #=> "Lamborghini"
|
52
52
|
#
|
53
53
|
# @faker.version 1.6.4
|
54
|
-
def
|
55
|
-
fetch('vehicle.
|
54
|
+
def manufacturer
|
55
|
+
fetch('vehicle.manufacturer')
|
56
56
|
end
|
57
|
+
alias manufacture manufacturer
|
57
58
|
|
58
59
|
##
|
59
60
|
# Produces a random vehicle make.
|
@@ -17,17 +17,6 @@ module Faker
|
|
17
17
|
fetch('heroes_of_the_storm.battlegrounds')
|
18
18
|
end
|
19
19
|
|
20
|
-
##
|
21
|
-
# This method is deprecated. The implementation will be removed in a near future release.
|
22
|
-
# Use `HeroesOfTheStorm.class_name` instead.
|
23
|
-
#
|
24
|
-
# @deprecated Use {#class_name} instead.
|
25
|
-
def class
|
26
|
-
warn '`HeroesOfTheStorm.class` is deprecated. Use `HeroesOfTheStorm.class_name` instead.'
|
27
|
-
|
28
|
-
super
|
29
|
-
end
|
30
|
-
|
31
20
|
##
|
32
21
|
# Produces a class name from Heroes of the Storm.
|
33
22
|
#
|
data/lib/faker/tv_shows/buffy.rb
CHANGED
@@ -45,19 +45,6 @@ module Faker
|
|
45
45
|
fetch('buffy.actors')
|
46
46
|
end
|
47
47
|
|
48
|
-
##
|
49
|
-
# Produces a actor from Buffy the Vampire Slayer.
|
50
|
-
#
|
51
|
-
# @return [String]
|
52
|
-
#
|
53
|
-
# @example
|
54
|
-
# Faker::TvShows::Buffy.celebrity #=> "John Ritter"
|
55
|
-
#
|
56
|
-
# @deprecated Use the `actor` method instead.
|
57
|
-
#
|
58
|
-
# @faker.version 1.9.2
|
59
|
-
alias celebrity actor
|
60
|
-
|
61
48
|
##
|
62
49
|
# Produces a big bad from Buffy the Vampire Slayer.
|
63
50
|
#
|
@@ -84,19 +84,6 @@ module Faker
|
|
84
84
|
fetch('dr_who.villains')
|
85
85
|
end
|
86
86
|
|
87
|
-
##
|
88
|
-
# Produces a villain from Doctor Who.
|
89
|
-
#
|
90
|
-
# @return [String]
|
91
|
-
#
|
92
|
-
# @example
|
93
|
-
# Faker::TvShows::DrWho.villian #=> "The Master"
|
94
|
-
#
|
95
|
-
# @deprecated Use the correctly-spelled `villain` method instead.
|
96
|
-
#
|
97
|
-
# @faker.version 1.8.0
|
98
|
-
alias villian villain
|
99
|
-
|
100
87
|
##
|
101
88
|
# Produces a species from Doctor Who.
|
102
89
|
#
|
@@ -32,19 +32,6 @@ module Faker
|
|
32
32
|
fetch('the_fresh_prince_of_bel_air.actors')
|
33
33
|
end
|
34
34
|
|
35
|
-
##
|
36
|
-
# Produces a actor from The Fresh Prince of Bel-Air.
|
37
|
-
#
|
38
|
-
# @return [String]
|
39
|
-
#
|
40
|
-
# @example
|
41
|
-
# Faker::TvShows::TheFreshPrinceOfBelAir.celebrity #=> "Quincy Jones"
|
42
|
-
#
|
43
|
-
# @deprecated Use the `actor` method instead.
|
44
|
-
#
|
45
|
-
# @faker.version 1.8.3
|
46
|
-
alias celebrity actor
|
47
|
-
|
48
35
|
##
|
49
36
|
# Produces a quote from The Fresh Prince of Bel-Air.
|
50
37
|
#
|
data/lib/faker/version.rb
CHANGED
data/lib/faker.rb
CHANGED
@@ -5,7 +5,7 @@ mydir = __dir__
|
|
5
5
|
require 'psych'
|
6
6
|
require 'i18n'
|
7
7
|
|
8
|
-
Dir.glob(File.join(mydir, 'helpers', '*.rb')).
|
8
|
+
Dir.glob(File.join(mydir, 'helpers', '*.rb')).each { |file| require file }
|
9
9
|
|
10
10
|
I18n.load_path += Dir[File.join(mydir, 'locales', '**/*.yml')]
|
11
11
|
|
@@ -107,7 +107,7 @@ module Faker
|
|
107
107
|
# with an array of values and selecting one of them.
|
108
108
|
def fetch(key)
|
109
109
|
fetched = sample(translate("faker.#{key}"))
|
110
|
-
if fetched&.match(%r{^/}) && fetched
|
110
|
+
if fetched&.match(%r{^/}) && fetched.match(%r{/$}) # A regex
|
111
111
|
regexify(fetched)
|
112
112
|
else
|
113
113
|
fetched
|
@@ -249,6 +249,10 @@ module Faker
|
|
249
249
|
list.shuffle(random: Faker::Config.random)
|
250
250
|
end
|
251
251
|
|
252
|
+
def shuffle!(list)
|
253
|
+
list.shuffle!(random: Faker::Config.random)
|
254
|
+
end
|
255
|
+
|
252
256
|
def rand(max = nil)
|
253
257
|
if max.nil?
|
254
258
|
Faker::Config.random.rand
|
@@ -271,4 +275,4 @@ module Faker
|
|
271
275
|
end
|
272
276
|
|
273
277
|
# require faker objects
|
274
|
-
Dir.glob(File.join(mydir, 'faker', '/**/*.rb')).
|
278
|
+
Dir.glob(File.join(mydir, 'faker', '/**/*.rb')).each { |file| require file }
|
data/lib/helpers/deprecator.rb
CHANGED
@@ -1,16 +1,72 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Based on Rails ActiveSupport Deprecator
|
4
|
-
# https://github.com/rails/rails/blob/
|
4
|
+
# https://github.com/rails/rails/blob/main/activesupport/lib/active_support/deprecation/constant_accessor.rb
|
5
5
|
|
6
6
|
# rubocop:disable Style/ClassVars
|
7
7
|
module Faker
|
8
|
+
# Provides a way to rename generators, including their namespaces, with a deprecation cycle in which
|
9
|
+
# both the old and new names work, but using the old one prints a deprecation message.
|
10
|
+
#
|
11
|
+
# Deprecator provides a deprecate_generator method to be used when
|
12
|
+
# renaming a generator. For example, let's say we want to change the following Generator's
|
13
|
+
# name to <tt>Faker::NewGenerator</tt>:
|
14
|
+
#
|
15
|
+
# module Faker
|
16
|
+
# class Generator
|
17
|
+
# def self.generate
|
18
|
+
# "be kind"
|
19
|
+
# end
|
20
|
+
# end
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# To rename it, you need to do the update the name and declare the deprecation by
|
24
|
+
# including the <tt>Deprecator</tt> module and using the deprecate_generator method:
|
25
|
+
#
|
26
|
+
# module Faker
|
27
|
+
# class NewGenerator
|
28
|
+
# def self.generate
|
29
|
+
# "be kind"
|
30
|
+
# end
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# include Deprecator
|
34
|
+
# deprecate_generator('DeprecatedGenerator', NewGenerator)
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
# The first argument is a constant name (no colons) as a string. It is the name of
|
38
|
+
# the constant you want to deprecate.
|
39
|
+
#
|
40
|
+
# The second argument is the constant path of the replacement (no colons) as a constant.
|
41
|
+
#
|
42
|
+
# For this to work, a +const_missing+ hook is installed. When users
|
43
|
+
# reference the deprecated constant, the callback prints the
|
44
|
+
# message and constantizes the replacement.
|
45
|
+
#
|
46
|
+
# With that in place, references to <tt>Faker::Deprecator</tt> still work, they
|
47
|
+
# evaluate to <tt>Faker::NewGenerator</tt> now, and trigger a deprecation warning:
|
48
|
+
#
|
49
|
+
# Faker::Generator.generate
|
50
|
+
# # DEPRECATION WARNING: Faker::Generator is deprecated. Use Faker::NewGenerator instead
|
51
|
+
# # "be kind"
|
52
|
+
#
|
53
|
+
# For testing the deprecations, we provide <tt>assert_deprecated</tt>
|
54
|
+
# and <tt>assert_not_deprecated</tt> matchers.
|
55
|
+
#
|
56
|
+
# There's also a <tt>Faker::Deprecator.skip_warning</tt> helper to silence
|
57
|
+
# the deprecation messages in the *test* output. Use it for generators that have lots of tests
|
58
|
+
# to avoid too many noise when running the tests.
|
8
59
|
module Deprecator
|
9
60
|
def self.included(base)
|
10
61
|
extension = Module.new do
|
11
62
|
def const_missing(missing_const_name)
|
12
63
|
if class_variable_defined?(:@@_deprecated_constants) && (replacement = class_variable_get(:@@_deprecated_constants)[missing_const_name.to_s])
|
13
|
-
|
64
|
+
unless Faker::Deprecator.skip_warning?
|
65
|
+
deprecated_message = "#{name}::#{replacement[:old_generator]} is deprecated."
|
66
|
+
replacement_message = "Use #{replacement[:new_constant]} instead."
|
67
|
+
$stdout.puts("DEPRECATION WARNING: #{deprecated_message} #{replacement_message}")
|
68
|
+
end
|
69
|
+
|
14
70
|
return replacement[:new_constant]
|
15
71
|
end
|
16
72
|
|
@@ -19,12 +75,44 @@ module Faker
|
|
19
75
|
|
20
76
|
def deprecate_generator(old_generator_name, new_generator_constant)
|
21
77
|
class_variable_set(:@@_deprecated_constants, {}) unless class_variable_defined?(:@@_deprecated_constants)
|
22
|
-
class_variable_get(:@@_deprecated_constants)[old_generator_name] = {
|
78
|
+
class_variable_get(:@@_deprecated_constants)[old_generator_name] = {
|
79
|
+
new_constant: new_generator_constant,
|
80
|
+
old_generator: old_generator_name
|
81
|
+
}
|
23
82
|
end
|
24
83
|
end
|
25
84
|
|
26
85
|
base.singleton_class.prepend extension
|
27
86
|
end
|
87
|
+
|
88
|
+
# Silence deprecation warnings within the block.
|
89
|
+
#
|
90
|
+
# Faker::Generator.generate
|
91
|
+
# # => DEPRECATION WARNING: Faker::Generator is deprecated. Use Faker::NewGenerator instead.
|
92
|
+
#
|
93
|
+
# Faker::Deprecator.skip_warning do
|
94
|
+
# Faker::Generator.generate
|
95
|
+
# end
|
96
|
+
# # => nil
|
97
|
+
def self.skip_warning
|
98
|
+
original = Faker::Deprecator.skip
|
99
|
+
Faker::Deprecator.skip = true
|
100
|
+
yield
|
101
|
+
ensure
|
102
|
+
Faker::Deprecator.skip = original
|
103
|
+
end
|
104
|
+
|
105
|
+
def self.skip_warning?
|
106
|
+
skip == true
|
107
|
+
end
|
108
|
+
|
109
|
+
def self.skip
|
110
|
+
@skip ||= false
|
111
|
+
end
|
112
|
+
|
113
|
+
def self.skip=(value)
|
114
|
+
@skip = value
|
115
|
+
end
|
28
116
|
end
|
29
117
|
end
|
30
118
|
# rubocop:enable Style/ClassVars
|