Jako, że nie mamy działu humor, postanowiłem to coś wrzucić tutaj:
def check_uri
return if RAILS_ENV == 'development'
@account ||= Account.find_by_subdomain(request.host.split('.').first)
if @account
if request.domain != AppConfig['base_domain']
#WTF???
new_destination = request.protocol + @account.subdomain + '.' + AppConfig['base_domain'] + (RAILS_ENV == 'development' ? ':3000' : '' ) + request.request_uri
flash[:notice] = new_destination
redirect_to new_destination
end
else
if request.domain != AppConfig['base_domain']
new_destination = request.protocol + 'signup.' + AppConfig['base_domain'] + (RAILS_ENV == 'development' ? ':3000' : '' ) + '/'
flash[:notice] = new_destination
redirect_to new_destination
end
end
end
Ja się uśmiałem. Do końca to nie wiem co tu ktoś chciał osiągnąć. Takie protect_from_forgery inaczej Ale protect też jest. Dry to też nie jest. A te ścieżki już można z subdomain_fu i url_for zrobić.
To jest przykład jak można programować w ruby podejściem rodem z C. Tego nie da się testować, bo z automatu selenium odpala się na porcie 7998, czy jakoś tak. Pewnie, można zmienić. Jeżeli, ktoś już na siłę chce swoją metodę url_for pisać to niech to będzie chociaż DRY, a nie w pięciu miejsca widzę coś takiego.
Zgodzę się, to nie jest najlepszy kawałek kodu jaki można było wyrzeźbić ;-), ale każdy kiedyś zaczyna, z reguły zaczyna bez testowania (kto od pierwszej linii kodu testował niech pierwszy rzuci kamień!) i trzeba z tym przejść do porządku dziennego. Posprzątać, dopisać testy, nauczyć jak to się powinno robić.
Od jakiegoś czasu staram się wstrzymywać od wszelkiego rodzaju myśli typu: “jak dorwę tego gościa, który zostawił mi ten kod, to zębów nie będzie co zbierać”.