Rubyのエラー『SyntaxError: unexpected end-of-input』の解決方法

Rubyのエラー『SyntaxError: unexpected end-of-input』の解決方法

『SyntaxError: unexpected end-of-input』は、Rubyコードの記述が正しく終了していない場合に発生するエラーです。このエラーが発生する理由と、具体的な解決方法を解説します。

エラーの発生条件

  • ブロックやメソッドが正しく閉じられていない。
  • カッコやクォーテーションが対応していない。
  • コードの構文が途中で終了している。
  • ファイルの末尾で必要な記述が不足している。

エラーメッセージ

SyntaxError: unexpected end-of-input, expecting 'end'

do/endブロックが閉じられていない場合

[1, 2, 3].each do |n|
  puts n

endを追加して解決します。

[1, 2, 3].each do |n|
  puts n
end

if文が閉じられていない場合

if x > 10
  puts "x is greater than 10"

endを追加します。

if x > 10
  puts "x is greater than 10"
end

メソッドが閉じられていない場合

def greet(name)
  puts "Hello, #{name}"

endを忘れないように記述します。

def greet(name)
  puts "Hello, #{name}"
end

カッコやクォーテーションの対応が不足している場合

以下のような記述はエラーを引き起こします。

puts("Hello

カッコを正しく閉じる必要があります。

puts("Hello")

複数の構文が混在している場合

構文が複雑な場合、endやカッコが抜けていることがあります。

def example
  [1, 2, 3].each do |n|
    if n > 1
      puts n

すべてのendを確認して追加します。

def example
  [1, 2, 3].each do |n|
    if n > 1
      puts n
    end
  end
end

ファイルの末尾でエラーが発生する場合

コードファイルの最後でunexpected end-of-inputが発生する場合、endが不足している可能性があります。構文全体を確認して、不足しているendを追加します。

複雑な構造を整理する

コードが複雑になるとendの不足が発生しやすくなります。コードを整理し、インデントを揃えることでエラーを防ぐことができます。

def example
  [1, 2, 3].each do |n|
    if n > 1
      puts n
    end
  end
end

デバッグツールを利用する

デバッグツールやエディタの構文チェック機能を利用することで、endの不足を簡単に検出できます。

まとめ

『SyntaxError: unexpected end-of-input』は、コードの記述が不完全な場合に発生します。構文全体を見直し、endやカッコ、クォーテーションの対応を確認することで解決できます。また、エディタの支援機能を活用してエラーを早期に検出することをおすすめします。