正規表現を利用して、文字列に半角文字が存在するか、全角文字が存在するかを判定します。

半角文字が含まれるか判定

str =~ /[ -~。-゚]/

半角スペースからチルダ(-~)までがASCII。。-゚には半角カタカナも含まれています。 例えば下のようにマッチさせることが出来ます。

m = "アアア".match /^[ -~。-゚]+$/ # => #<MatchData "アアア">

全角文字が含まれるか判定

str =~ /[^ -~。-゚]/

半角文字の否定をとっているだけですね。