{"record":{"id":"432cb92a6a58c496","repo":"faker-ruby/faker","slug":"background-color-must-be-a-hex-value-without","errorCode":null,"errorMessage":"background_color must be a hex value without '#'","messagePattern":"background_color must be a hex value without '#'","errorType":"exception","errorClass":"ArgumentError","httpStatus":null,"severity":"error","filePath":"lib/faker/default/placeholdit.rb","lineNumber":35,"sourceCode":"      #\n      # @example\n      #     # Keyword arguments: size, format, background_color, text_color, text\n      #   Faker::Placeholdit.image #=> \"https://via.placeholder.com/300x300.png\"\n      #   Faker::Placeholdit.image(size: '50x50') #=> \"https://via.placeholder.com/50x50.png\"\n      #   Faker::Placeholdit.image(size: '50x50', format: 'jpg') #=> \"https://via.placeholder.com/50x50.jpg\"\n      #   Faker::Placeholdit.image(size: '50x50', format: 'gif', background_color: 'ffffff') #=> \"https://via.placeholder.com/50x50.gif/ffffff\"\n      #   Faker::Placeholdit.image(size: '50x50', format: 'jpeg', background_color: :random) #=> \"https://via.placeholder.com/50x50.jpeg/39eba7\"\n      #   Faker::Placeholdit.image(size: '50x50', format: 'jpeg', background_color: 'ffffff', text_color: '000') #=> \"https://via.placeholder.com/50x50.jpeg/ffffff/000\"\n      #   Faker::Placeholdit.image(size: '50x50', format: 'jpg', background_color: 'ffffff', text_color: '000', text: 'Some Custom Text') #=> \"https://via.placeholder.com/50x50.jpg/ffffff/000?text=Some Custom Text\"\n      #\n      # @faker.version 1.6.0\n      def image(size: '300x300', format: 'png', background_color: nil, text_color: nil, text: nil)\n        background_color = generate_color if background_color == :random\n        text_color = generate_color if text_color == :random\n\n        raise ArgumentError, 'Size should be specified in format 300x300' unless size =~ /\\A[0-9]+x[0-9]+\\z$/\n        raise ArgumentError, \"Supported formats are #{SUPPORTED_FORMATS.join(', ')}\" unless SUPPORTED_FORMATS.include?(format)\n        raise ArgumentError, \"background_color must be a hex value without '#'\" unless background_color.nil? || background_color =~ /((?:^\\h{3}$)|(?:^\\h{6}$)){1}(?!.*\\H)/\n        raise ArgumentError, \"text_color must be a hex value without '#'\" unless text_color.nil? || text_color =~ /((?:^\\h{3}$)|(?:^\\h{6}$)){1}(?!.*\\H)/\n\n        image_url = \"https://via.placeholder.com/#{size}.#{format}\"\n        image_url += \"/#{background_color}\" if background_color\n        image_url += \"/#{text_color}\" if text_color\n        image_url += \"?text=#{text}\" if text\n        image_url\n      end\n\n      private\n\n      def generate_color\n        format('%06x', rand * 0xffffff)\n      end\n    end\n  end\nend\n","sourceCodeStart":17,"sourceCodeEnd":53,"githubUrl":"https://github.com/faker-ruby/faker/blob/cca4184947e09fdd02afb8b89d25a9c8ebc7274e/lib/faker/default/placeholdit.rb#L17-L53","documentation":"Raised by Faker::Placeholdit.image when background_color is given and is not a bare 3- or 6-digit hexadecimal string. The regex /((?:^\\h{3}$)|(?:^\\h{6}$)){1}(?!.*\\H)/ accepts only exactly 'fff'/'ffffff' shapes, so '#ffffff' (with hash), 'ffff' (4 digits), 'gggggg' (non-hex), or nil-adjacent blanks fail; the special value :random is resolved to a generated color before the check.","triggerScenarios":"Faker::Placeholdit.image(background_color: '#ffffff') (leading '#'), background_color: 'ff' or 'fffff' (wrong length), background_color: 'blue' (color name) raises; 'ffffff', 'fff', and :random are accepted.","commonSituations":"Reusing CSS hex colors from stylesheets verbatim (they conventionally include '#'); passing HTML color names; trimmed or padded values from user input; 8-digit hex with alpha (#ffffff00).","solutions":["Pass the hex without '#': background_color: 'ffffff' or 3-digit 'fff'.","Strip the hash from CSS values: background_color: css_color.delete('#').","For random colors use background_color: :random."],"exampleFix":"# before\nFaker::Placeholdit.image(background_color: theme[:bg]) # '#f5f5f5' from CSS -> ArgumentError\n\n# after\nFaker::Placeholdit.image(background_color: theme[:bg].delete('#'))","handlingStrategy":"validation","validationCode":"background_color = background_color.to_s.delete('#').downcase\nbackground_color = :random unless background_color.match?(/\\A\\h{3}\\z|\\A\\h{6}\\z/)\nFaker::Placeholdit.image(background_color: background_color)","typeGuard":"def bare_hex_color?(value)\n  value.is_a?(String) && value.match?(/\\A(?:\\h{3}|\\h{6})\\z/)\nend","tryCatchPattern":"begin\n  Faker::Placeholdit.image(background_color: bg)\nrescue ArgumentError\n  Faker::Placeholdit.image(background_color: :random)\nend","preventionTips":["Strip '#' from CSS/design-token colors with delete('#') before passing.","Only 3- or 6-digit hex is accepted; no names, no 4/8-digit hex.","Use :random when the exact color is irrelevant."],"tags":["faker","argument-error","format-validation","image-url","hex-color","placeholdit"],"backgroundTag":"invalid-hex-color","analyzedSha":"cca4184947e09fdd02afb8b89d25a9c8ebc7274e","analyzedAt":"2026-08-21T16:25:39.145Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}