Development Ruby

module CreditCard
  def creditcard?
    numbers = self.to_s.gsub(/[^\d]+/, '').split(//)
    checksum = 0
    0.upto numbers.length do |i|
      weight = numbers[-1*(i+2)].to_i * (2 - (i%2))
      checksum += weight % 9
    end
    return numbers[-1].to_i == 10 - checksum % 10
  end
end
class String
  include CreditCard
end
class Integer
  include CreditCard
end
puts '1111 1111 6542 1319'.creditcard?                  
puts '1111111111111313'.creditcard?