【Sorbet】『You called sig twice without declaring a method in between』を修正する

Engineering
この記事を書いた人

PharmaXというオンライン薬局のスタートアップで薬剤師・エンジニアとして働いています。Rails・React・TypeScriptなどを書きます。英語が得意でTOEIC900点・通訳案内士資格取得。主に薬剤師の働き方やプログラミング、英語学習について書きます。当サイトではアフィリエイトプログラムを利用して商品を紹介しています。
>> 詳しいプロフィール

Tomoyuki Katoをフォローする

 

何回かSobetの『You called sig twice without declaring a method in between』というエラーに出会したものの毎回このエラーの直し方を忘れてしまうのでメモ。

 

Sorbetの『You called sig twice without declaring a method in between』の直し方

You called sig twice without declaring a method in between

ざっくり訳すと、「1つのメソッドに対して2回sigが呼ばれているよ」という意味である。

 

今回このエラーにハマった状況としては以下のようなコードだったのだけど、arrt_readerのlast_nameの後に『 ,  』が入っており、『 ,  』の後にsigがまた宣言されていると判定されてしまったらしい。

 

class User
      extend T::Sig

      sig{ returns(Integer) }
      attr_reader :id

      sig{ returns(String) }
      attr_reader :first_name, :last_name, 

      sig { params(id: Integer, first_name: String, last_name: String).void }
      def initialize(id:, first_name, last_name:)
        @id = id
        @first_name = first_name
        @last_name = last_name
      end

 

なので、以下のように修正したら無事に直った。

<before>
attr_reader :first_name, :last_name,

 

<after>
attr_reader :first_name, :last_name

 

めでたしめでたし。