RubyのString#match
の挙動に関して。
ユーザーの入力した値のチェックをするために、以下のようなプログラムを書いていたらエラーが出た。
app.rb
require 'bundler/setup'
Bundler.require
require 'sinatra/reloader' if development?
require 'net/http'
get "/" do
if params[:test].match(/\d+(\.\d+)?/)
#何らかの処理
end
end
これでparams[:test]
に値が渡されないと、nil
に対してString#match
を行うのでエラーがおきてしまった。
以後注意したい。