Ruby は def・if・class などのブロックを end で閉じます。end の数が足りない、または多いとパース段階で止まります。波かっこを使う言語からの移行者が特につまずきやすいエラーです。
出るコード
def greet(name)
if name
puts "Hello, #{name}"
# if の end が無い
end
エラーメッセージ
syntax error, unexpected end-of-input, expecting 'end'
直し方
def・if・class・do などの開始1つにつき end を1つ、必ず対応させます。エディタの対応関係ハイライト機能を使うと見つけやすいです。
def greet(name)
if name
puts "Hello, #{name}"
end
end