一个方法的bug要怎么解决?

一个方法的bug要怎么解决?

def fact(n) 
  if n == 0 
   1 
  else 
   n * fact(n-1) 
  end
end
print fact(ARGV[0].to_i), "\n" 

如果用户输入的是字母或者负数的话,我该怎么改啊?
如果
输入一个字母,一串字母,结果就是1。
如果
输入负数,就报错。高手可以教教我吗?谢谢。
这样的话正则应该能派上用场!
print fact(ARGV[0].to_i), "\n" if ARGV[0] =~ /^\d+$/