{"record":{"id":"ebc06da332a1d376","repo":"faker-ruby/faker","slug":"length-must-be-an-integer-and-be-lesser-than-10","errorCode":null,"errorMessage":"length must be an Integer and be lesser than 10","messagePattern":"length must be an Integer and be lesser than 10","errorType":"exception","errorClass":"ArgumentError","httpStatus":null,"severity":"error","filePath":"lib/faker/default/phone_number.rb","lineNumber":141,"sourceCode":"        fetch('phone_number.exchange_code')\n      end\n\n      ##\n      # Produces a random extension / subscriber number. Can be used for both extensions and last four digits of phone number.\n      #\n      # @param length [Integer] Specifies the length of the return value. Defaults to 4.\n      # @return [String]\n      #\n      # @example\n      #   Faker::PhoneNumber.subscriber_number #=> \"3873\"\n      #   Faker::PhoneNumber.subscriber_number(length: 2) #=> \"39\"\n      #   Faker::PhoneNumber.extension #=> \"3764\"\n      #   Faker::PhoneNumber.extension(length: 2) => \"37\"\n      #\n      # @faker.version 1.3.0\n      def subscriber_number(length: 4)\n        if !length.is_a?(Integer) || length > 10\n          raise ArgumentError, 'length must be an Integer and be lesser than 10'\n        end\n\n        generate(:string) do |g|\n          g.int(length: length)\n        end\n      end\n\n      alias extension subscriber_number\n    end\n  end\nend\n","sourceCodeStart":123,"sourceCodeEnd":153,"githubUrl":"https://github.com/faker-ruby/faker/blob/cca4184947e09fdd02afb8b89d25a9c8ebc7274e/lib/faker/default/phone_number.rb#L123-L153","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"# before\nFaker::PhoneNumber.subscriber_number(length: ENV['EXTENSION_LENGTH']) # string -> ArgumentError\n\n# after\nFaker::PhoneNumber.subscriber_number(length: ENV['EXTENSION_LENGTH'].to_i)","handlingStrategy":"validation","validationCode":"length = length.to_i\nlength = 4 unless length.between?(1, 10)\nFaker::PhoneNumber.subscriber_number(length: length)","typeGuard":"def valid_subscriber_length?(length)\n  length.is_a?(Integer) && length <= 10 && length > 0\nend","tryCatchPattern":"begin\n  Faker::PhoneNumber.subscriber_number(length: len)\nrescue ArgumentError\n  Faker::PhoneNumber.subscriber_number # default length 4\nend","preventionTips":["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."],"tags":["faker","argument-error","type-validation","phone-number"],"backgroundTag":"wrong-argument-type","analyzedSha":"cca4184947e09fdd02afb8b89d25a9c8ebc7274e","analyzedAt":"2026-08-21T16:25:39.145Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}