Prosba o pomoc w refactoringu

W swoim projekcie uzywam rubocopa do statycznej analizy kodu. Projekt jest juz calkiem spory i zwykle nie ma problemu z poprawieniem bledow, ale przy tej metodzie kompletnie brak mi pomyslu, zeby to poprawianie nie bylo sztuka dla sztuki.
Dla rubocopa taka metoda jest o 1 linijke za dluga, a complexity jest miedzy 18, a 19, podczas gdy w projekcie mam ustawiony standardowy prog na 15.
Jak sobie z tym poradzic?

    def accept
        membership = Member.new(user: current_user, group: @invitation.group)
        respond_to do |format|
          if membership.save
            @invitation.accepted!
            format.html { redirect_to after_invitation_accept_path, notice: 'Zaproszenie zaakceptowane' }
            format.json { render :show, status: :ok, location: @invitation }
          else
            format.html { redirect_to after_invitation_accept_path, alert: 'Już jestes czlonkiem tej grupy' }
            format.json { render json: membership.errors, status: :unprocessable_entity }
          end
        end
  end

Użyj Trailblazera

Chetnie sie zapoznam z tym narzedziem, nie mialem okazji wczesniej uzywac.
Tutaj jednak chodzi o jedna metode, ktora nie robi naprawde nic wielkiego. Nie chce podwyzszac progow, ani tworzyc na ten controller wyjatku (chyba ze mozna wykluczyc jedna metode przy sprawdzaniu? czegos takiego jednak nie znalazlem).

Robocop i inne to narzedzia pomocnicze a nie wyrocznie, nie ma co robic masochizmu by zmiescic sie w regulach.

Przy rails way duzo lepiej, inaczej tego nie zapiszesz. Szkoda czas na rzeźbę dla rzezby

Jasne, zgadzam sie z Toba w 100%. Ale teraz mam taka sytuacje, ze codeship sprawdza rubocopa, brakemana, puszcza testy i instaluje aplikacje. Oczywiscie rubocop zglasza blad, wiec aplikacja sie nie zainstaluje.
Pytanie jest bardziej, jakbyscie rozwiazali taka sytuacje? Wyjac caly controller spod sprawdzania?

ja bym zawartość if/else przeniósł do dwoch metod prywatnych w controlerze invitation_accepted(format, membership) i invitation_denied(format, membership) Nazwa oczywiście może być inna.

   if membership.save
     invitation_accepted(format, membership)
   else
    invitation_dedied(format, membership)
   end

Z tego co widzę, to invitation_accepted nie musisz przyjmowac membership
BTW teksty alert/notice powinny byc w jakims osobnym pliku. Nie używacie i18n, czy czegos takiego?

Dzieki za uwagi

Uzywamy, wrzucilem tylko tak pogladowo

Otóż to. Niektórzy myślą, że jak im rubocop czy inne automatyczne narzędzie rzuci błędem to kod jest “zły”, a jak nie rzuci to wręcz odwrotnie wszystko “cacy”.

Można wyłączyć daną regułę bądź zmienić jej konfigurację (np. podnieść limit dla ABC complexity itp.) w pliku .rubocop.yml. Reguły można także wyłączać per plik/metoda poprzez komentarze. Narzędzia typu codeship powinny odpalać rubocopa w katalogu z projektem, więc te reguły powinny być normalnie respektowane.

To przeoczylem, chociaz jest jak byk w dokumentacji! Dzieki Radek, mysle, ze to ostatecznie zamyka sprawe.