faker-ruby/faker · error · ArgumentError
length must be an Integer and be lesser than 10
Error message
length must be an Integer and be lesser than 10
What it means
Raised by Faker::PhoneNumber.subscriber_number (aliased as extension) when the length: keyword is not an Integer or is greater than 10. Phone extensions and subscriber numbers are conventionally at most 10 digits, so longer or non-integer lengths are rejected before generation. Note the message says 'lesser than 10' but the code actually allows length == 10.
Source
Thrown at lib/faker/default/phone_number.rb:141
fetch('phone_number.exchange_code')
end
##
# Produces a random extension / subscriber number. Can be used for both extensions and last four digits of phone number.
#
# @param length [Integer] Specifies the length of the return value. Defaults to 4.
# @return [String]
#
# @example
# Faker::PhoneNumber.subscriber_number #=> "3873"
# Faker::PhoneNumber.subscriber_number(length: 2) #=> "39"
# Faker::PhoneNumber.extension #=> "3764"
# Faker::PhoneNumber.extension(length: 2) => "37"
#
# @faker.version 1.3.0
def subscriber_number(length: 4)
if !length.is_a?(Integer) || length > 10
raise ArgumentError, 'length must be an Integer and be lesser than 10'
end
generate(:string) do |g|
g.int(length: length)
end
end
alias extension subscriber_number
end
end
end
View on GitHub (pinned to cca4184947)
Solutions
- Pass an Integer between 1 and 10, e.g. length: 4 (default).
- Cast config values: length: ENV['EXT_LEN'].to_i.
- If you need more than 10 digits, use Faker::Number.number(digits: n) and format it yourself instead of subscriber_number.
Example fix
# before Faker::PhoneNumber.subscriber_number(length: ENV['EXTENSION_LENGTH']) # string -> ArgumentError # after Faker::PhoneNumber.subscriber_number(length: ENV['EXTENSION_LENGTH'].to_i)
Defensive patterns
Strategy: validation
Validate before calling
length = length.to_i length = 4 unless length.between?(1, 10) Faker::PhoneNumber.subscriber_number(length: length)
Type guard
def valid_subscriber_length?(length) length.is_a?(Integer) && length <= 10 && length > 0 end
Try / catch
begin Faker::PhoneNumber.subscriber_number(length: len) rescue ArgumentError Faker::PhoneNumber.subscriber_number # default length 4 end
Prevention
- Cast env/config lengths with to_i.
- Cap desired digit counts at 10; use Faker::Number.number for longer values.
- Note the misleading message: 10 is actually allowed, 11 is not.
When it happens
Trigger: Faker::PhoneNumber.subscriber_number(length: 11), length: '4' (string), length: 4.0 (Float), or length: nil raises at lib/faker/default/phone_number.rb:141; length: 4 and length: 10 are fine.
Common situations: Reading the extension length from config/env where it arrives as a string; generating fake numbers that must match a fixed-width column longer than 10 digits; porting code that assumed no length cap.
Related errors
- invalid amount
- Invalid gender #{gender}. Must be one of male, female, or be
- Invalid birthday: #{birthday}. Danish CPR numbers are only d
- Search terms must be specified for grayscale images
- Search terms must be specified for pixelated images
AI-assisted analysis of faker-ruby/faker@cca4184947 (2026-08-21).
Data as JSON: /api/errors/ebc06da332a1d376.
Report an issue: GitHub.