faker 3.4.1 → 3.5.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.
- 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
|
[](https://github.com/faker-ruby/faker/actions?query=workflow%3ATests)
|
|
5
5
|
[](https://badge.fury.io/rb/faker)
|
|
6
6
|
[](https://inch-ci.org/github/faker-ruby/faker)
|
|
7
|
-
[](https://codeclimate.com/github/stympy/faker/test_coverage)
|
|
8
|
-
[](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
|