Witam.
Troszke poczytałem / posłuchałem Ryana , ale dalej nie do końca rozumiem i może ktos mógłby mi wyjaśnić w miarę prosto. Kiedy / które gemy powinnismy dodawać do Gemfile`a mojego gemu a które do .gemspeca?
Mam ten sam problem który jest opisany w tej dyskusji. Próbowałem rozwiązania proponowanego przez Ryana Bigga , która nie zadziałało . Przejrzałem kilka enginów i w rails_adminie znalazlem , że w dummy appce w config/application.rb dodana jest kilka linijek require dla niektórych z tych gemów - i to mi podziałało dla hamla - w takim razie każda osoba która będzie chciała użyć mego gema , a nie ma w swojej apce hamla, będzie musiała dodać tą linijkę do application.rb ? Czy to może tylko problem przy dummy appkach jest ? A może ja coś źle skonfigurowałem , a te posty są dawno nieaktualne w świetle jakichś paczy do najnowszych railsów ?
Jeśli wydajesz gem to chcesz by działał on z różnymi wersjami innych gemów, których używasz jako zależności i to specyfikujesz w gemspec. W Gemfile nie dodajesz żadnych. Gemfile.lock nie publikujesz bo chcesz by ludzie odpalali testy twojego gema na różnych kombinacjach i dawali ci feedback. Z Gemfile z wyszczególnionymi wersjami innych gemów warto korzystać jak sam chcesz przetestować czy twój gem działa z innymi gemami w różnych wersjach np rails 3.0, rails 3.1 czy 3.2. Wtedy możesz mieć gemspec który mówi, że działasz z railsami ~> 3.0 a do tego mieć 3 pliki Gemfile których używasz poprzez ustawianie stałej BUNDLE_GEMFILE na inny Gemfile plik.
Hmm, zdaje mi się, że tutaj są mylone dwie rzeczy: czym innym jest ustalenie tego co jest dostępne w zmiennej $: - tzn. katalogów, które są
przeszukiwane w celu znalezienia pliku do załadowania przy wywołaniu require (za to odpowiada Gemfile), a czym innym faktyczne załadowanie
jakiejś biblioteki (require). Samo dodanie czegoś do Gemfile IMHO nie powoduje, że ta biblioteka jest dostępna w runtimie… chyba, że używa ona mechanizmu autoload.