2015-05-29 14 views
15

Chciałbym wdrożyć moją aplikację Rails do Heroku za pomocą serwera Puma. Jednak nie jestem naprawdę pewien, czy wszystkie klejnoty są bezpieczne dla wątków. Czytanie kodu źródłowego Gems nie jest dla nas możliwą opcją.Jak sprawdzić bezpieczeństwo wątków aplikacji Railsowej dla Puma

Czy istnieje sposób automatycznego sprawdzania wszystkich klejnotów pod kątem bezpieczeństwa gwintów? Czy też Puma narzeka/wyświetla określony dziennik błędów, jeśli wątek niebezpiecznego kodu został wykonany/wykryty?

+2

FWIW Bezpieczeństwo nici w rubinach jest w najlepszym razie bezowocne. To jeden z powodów, dla których Jose stworzył Eliksir. Nie liczyłbym na bezpieczeństwo wątków w żadnym kodzie ruby. Najlepiej jest użyć rubinius lub july – engineerDave

Odpowiedz

1

Bezpieczeństwo wątków nie może być wykryte w ogóle. Jeśli był jakiś sposób, by wykryć to automatycznie, prawdopodobnie Twój kompilator/interpreter ostrzegałby Cię o tym. Race conditions nie mogą zostać wykryte przez systemy automatyczne, mogą być nawet trudne do odtworzenia.

zależności od tłumacza:

  • CRuby ma GIL, więc korzystanie Puma ze to nie ma sensu.
  • Jeśli używasz JRuby lub Rubinius, prawdopodobnie możesz skorzystać z Puma i najprawdopodobniej używane klejnoty udokumentowały swoje metody/klasy bezpieczeństwa wątków. W takim przypadku wystarczy sprawdzić kod.
+0

GIL nie oznacza, że ​​nie możesz napisać wątku niebezpiecznego kodu –

+0

"Tłumacz używający GIL zawsze pozwala na wykonanie dokładnie jednego wątku na raz, nawet jeśli działa na wielu procesor rdzeniowy "=> dopóki pamięć jest współużytkowana, czy nadal nie jest możliwe wystąpienie zakleszczenia, warunków wyścigu, problemów związanych z żywnością? –

+0

OK, masz rację. GIL upraszcza większość możliwych problemów z gwintowaniem, które mogą wystąpić. Masz rację, najważniejsze jest to, że nie możesz przetestować kodu dla bezpieczeństwa wątków w jakiś zautomatyzowany sposób, a użycie 'Puma' do implementacji Ruby z GIL nie ma żadnych korzyści z używania' Unicorn' na przykład. – hakcho

Powiązane problemy