Tak więc rozwijam Sinatrę zarówno dla systemu Windows, jak i dla systemu Linux. Problem polega na tym, że używam Thin zamiast Webrick, a eventmachine dla Windows działa tylko z wersją przedpremierową, podczas gdy Linux używa najnowszej stabilnej. w gemfile ty oczywiście nie może zawierać ten sam klejnot z różnymi wersjami tak:Używanie bundler do ładowania różnych wersji klejnotów dla różnych platform
gem "eventmachine", "~> 1.0.0.beta.4.1", :group => :development_win
gem "eventmachine", group => :development_linux
gem "thin
Zastanawiałem się, czy istnieje sposób, aby obejść ten problem, być może za pomocą jednego gemfile dla okien i jedną gemfile dla systemów Linux, co byłoby polecenie, aby załadować jeden lub drugi.
Alternatywnie istnieje sposób na to, żeby w git zarządzać tylko gemfile dla dwóch różnych platform, być może poprzez gałąź dla samego pliku (nie wiem, czy to możliwe z tego, co przeczytałem o gałęziach git).
hmm, pierwsze rozwiązanie rzuca ten sam błąd o dwóch gemach określonych w gemfile. Warunkowa instrukcja działa poprawnie. – indigo0086
Drugie podejście jest nieprawidłowe, ponieważ przechowuje jedną lub inną wersję klejnotu w pliku 'Gemfile.lock'. Nie może przechowywać obu. Jeśli więc przygotujesz 'Gemfile.lock' na maszynie dev systemu Win32, a potem wdrożysz ją na Linuksie, otrzymasz tę samą błędną wersję. Dlatego nadal szukam prawidłowego rozwiązania. –
Podejście platformowe działa dobrze pod warunkiem, że tylko różne (nazwane) klejnoty są potrzebne dla różnych platform, możliwe jest nawet zatwierdzenie pliku Gemfile.lock i utrzymanie go w stabilny sposób (inaczej niż w przypadku podejścia innego). – prusswan