Jak uniknąć przerabiania kursu od zera?

Witam,

Jakiś czas temu nabyłem książkę Agile. Programowanie w Rails [wydanie drugie] i aż do dnia dzisiejszego przerabiałem wszelkie iteracje bez większych problemów - lecz niestety, w pewnym momencie zanadto się pospieszyłem i popełniłem tak wiele błędów w kilku różnych plikach, że nie byłem już w stanie dojść do ładu z tym wszystkim. Ściągnawszy zatem kod źródłowy przykładowej aplikacji Składnica (depot) stąd:

http://www.pragprog.com/titles/rails2/source_code

utworzyłem nowy projekt w Visual Studio (korzystam z Ruby In Steel Personal dla Visual Studio 2008 Shell Edition) i po prostu podmieniłem pliki, by rozpocząć pracę od momentu, do którego wszystko szło gładko. Aby nie było, że jestem aż takim jeleniem - zgodnie z oficjalną informacją twórców IDE Ruby in Steel opcja tworzenia nowego projektu na podstawie istniejących źródeł - oferowana standardowo przez Visual Studio - po prostu nie jest wykorzystywana przez ten ‘plugin’. Nie zapomniałem przy tym o dokonaniu synchronizacji plików. Ponadto wszystkie trzy bazy danych (development, test, production) utworzyłem na nowo, aby zapobiec ewentualnym komunikatom o błędzie. Kiedy jednak po podmianie plików wydałem polecenie rake db:migrate (ten krok wydał mi się czymś intuicyjnie koniecznym), aby przywrócić strukturę bazy danych, otrzymałem komunikat o błędzie:

rake aborted!
undefined method require_gem for main:Object

(chciałbym zauważyć, że wcześniej powyższe polecenie zawsze udawało się bezproblemowo wykonać). I oczywiście po podmianie wyedytowałem odpowiednio plik database.yml.

Komuś, kto został poczęstowany identycznym komunikatem, ale w zupełnie innym kontekście, nakazano wydać polecenie gem install --remote rake, co podobno pozwoliło rozwiązać problem. W moim przypadku to jednak nie działa, zresztą nic dziwnego, bo cóż by mi mogło dać uaktualnienie rake, skoro i tak zmuszony jestem trzymać się starszej wersji Rails (1.2.6)? Poza tym - raz jeszcze to powtórzę - nigdy wcześniej nie miałem podobnych trudności. Naprawdę nie wymagam cudów, chcę jedynie uniknąć przerabiania kursu (a co za tym idzie, także przepisywania tego samego kodu od zera) od początku, ponieważ absolutnie nie mam na to czasu, a i tak zostało jeszcze sporo do zrobienia. Dlatego będę niezmiernie wdzięczny za pomoc.

W skrócie: albo powinieneś uczyć się na dokładnie tej samej wersji każdego użytego gema co w książce, albo musisz być przygotowany, że to co w niej czytasz na 90% bez przeróbek nie zadziała. Zapomnij więc o kopiowaniu kodu ze strony. Musisz sam go tworzyć (tudzież generować). Metoda require_gem (dostarczona wraz z gemem rubygems) była deprecated i wyleciała. Używaj zwykłego require.

Witaj,

na moje oko powinieneś po pierwsze dać sobie spokój z Rails 1.2.6 i zaktualizować rubygems / biblioteki. Błąd z “require_gem” oznacza bodajrze że masz jakąś tragicznie starą wersję Rubygems (<1.0?).

Nie warto zabierać się za Rails 1.2 - ani to wygodne, ani szybkie ani na czasie. Lepiej skołuj sobie jakąś książkę omawiającą Rails > 2.0, jest tego trochę no i polecam http://guides.rubyonrails.org które są bardzo aktualne.

Pozdrawiam,
Hubert

@catviz: jeszcze a’propos wypowiedzi huberta, jak slabo u ciebie z angielskim, mozesz sie tez zainteresowac: http://apohllo.pl/guides/index.html
Polska wersia guides z opisami dla Rails 2.3.

No chlopaki troche empatii, kolega być może kupił sobie właśnie ksiazke a wy mu mowicie olej ja i popatrz tu czy tu,… Swoją drogą przerabiałem ta ksiazke pewnie z rok temu i juz wtedy byly z nia jakies problemy z tego co pamietam tak wiec catviz przygotuj sie na to, że podobne sytuacje beda wyskakiwac i bedziesz zmuszony przedwczesnie zainteresowac sie co sie pozmienialo od czasow wydania tej ksiazki…

Dziękuję wszystkim za odpowiedź. Jest dokładnie tak, jak powiada Athril - otóż stosunkowo niedawno nabyłem drugie wydanie tej książki za 117 złotych - co dla mnie jest sumą zawrotną, zwłaszcza że nie zarabiam na tym, czego się nauczyłem [bo przynajmniej na razie niewiele jeszcze wiem]. Nikt też w akcie miłosierdzia nie wymieni mi tego wydania na nowsze. Ale jestem pewien, że tym razem pospieszyłem się jak nigdy i dlatego namieszałem w kodzie do tego stopnia, że trzeba projekt regenerować od zera. Poproszę zatem o jakieś wytyczne odnośnie tego, jak należy postępować w takich przypadkach? Czy aby na pewno wystarczy utworzyć nowy projekt, podmienić wygenerowane pliki na te z tutoriala, a następnie wywołać polecenie rake db:migrate? Problem polega na tym, że ja naprawdę nie mam czasu na dochodzenie do tego, co i gdzie się pozmieniało i póki co chciałbym bezboleśnie przebrnąć przez przykładową aplikację ze wspomnianej książki, nawet kosztem operowania na starszej wersji Rails.

Nie masz czasu na naukę? To po co się uczyć? :stuck_out_tongue:

Wbrew temu co koledzy sugerują, niegłupim pomysłem byłoby zainstalowanie sobie jednak starszej wersji Railsów (1.2.6 – są z tym InstantRailsy) i przerobienie na niej kursu. O wiele łatwiej będzie potem poznać i zrozumieć różnice wersji 2+.

To rada pierwsza. Druga to zapomnij o Visual Studio :wink: i skołuj sobie jakieś sensowne środowisko do rozwijania aplikacji w RoR. Skoro musisz być na Windows (na razie, zmieni Ci się :wink: ), zapoznaj się z Netbeans albo jEditem. Lub poszukaj na tym forum tematów o dobrych edytorach do Ruby/Rails pod Windows.

Zdaję sobie sprawę, że nie ma nic za darmo i trzeba poświęcić nieco czasu, jeśli chce się coś osiągnąć - jednak po to właśnie wydałem ciężkie pieniądze na grubą cegłę, aby krok po kroku zostać przeprowadzonym przez kolejne kroki (nazywane tam iteracjami), a nie marnować czasu na ciągłe uświadomianie sobie różnic związanych z niekompatybilnością poszczególnych wersji Rails, ponieważ wówczas - przy mojej ilości czasu wolnego - nie przebrnąłbym przez więcej niż trzy rozdziały w ciągu roku. Czy jEdit nie jest po prostu zwykłym edytorem tekstu z podświetlaną składnią? Z opisu podanego na stronie autorów nie wynika, aby program ten oferował bezpośrednie wsparcie dla Rails. Od wielu lat korzystałem wyłącznie z Linuksa i przez długi czas na każdym kroku podkreślałem konieczność migracji na ten ‘jedynie słuszny’ system… do czasu, aż zamieniłem się na lepszego laptopa, w którym jednakże zamontowana była karta graficzna SiS, stanowczo odmawiająca współpracy z Linuksem… (oczywiście potrafiłbym sobie dobrać odpowiedni sprzęt, gdyby chodziło o samodzielne dokonanie zakupu). Na Viście 64-bitowej każdy edytor (za wyjątkiem Ruby in Steel) sprawiał mi jakiś problem - w NetBeans 6.5 trzeba instalować starszą wersję Java SDK, aby zadziałało generate (ale wtedy interfejs wygląda dość obleśnie), zarówno NetBeans jak i Eclipse udawał, że nie widzi zadań rake (bądź widział je tylko co kilka uruchomień IDE, podobnie Aptana) i ogólnie ciężko było zmusić te środowiska do pracy ze starszymi wersjami Rails. Aż mi się wierzyć nie chcę, że odtworzenie operacji wykonanych w trakcie kursu jest niemożliwe - bo cóż, czy znaczy to, że trzeba dmuchać na komputer i drżącą ręką klikać CTRL+S, bo nie da się kontynuować kursu od momentu, w którym się go przerwało? To byłby jakiś absurd.

Bardzo gotycki post Ci wyszedł :wink:

Nie marudź. Sam zaczynałem przygodę z railsami na Windows. Tak, jEdit to “zaledwie” edytor tekstu z kolorowaniem składni – może jeszcze z paroma innymi fajnymi rzeczami :wink: ale do pisania aplikacji RoR tylko tego potrzebujesz – edytora z kolorowaniem składni. Plus shell/commandline/jak_to_teraz_zwą_na_windows i jazda. Ściągnij sobie InstantRails z Railsami 1.2.6 i zacznij przerabiać książkę zamiast użalać się na forum :smiley:

EDIT: Super post count, przestaję pisać na forum na czas jakiś :smiley: Dzięki za zauważenie, Wojtek :slight_smile:

Dokładnie, mi całkowicie wystarcza cmd.exe (lub console ) i intype, nic a nic więcej nie potrzeba. Mało tego uważam, że większość super środowisk to trochę przerost formy nad treścią (pewnie się mylę) ale nie umiem się przesiąść, nie widzę najmniejszej potrzeby. Dodaj sobie do tego cygwin i jakieś narzędzia z linuxów (można znaleźć dużo fajnych na necie) i masz system całkowicie wystarczający, wiem bo jestem przybity do Windowsa jak … nie chcę urazić uczuć religijnych, w każdym razie na stałe.

Trochę nie rozumiem Twojego podejścia, chcesz się nauczyć Rails, nie ucząc się ich tylko przepisując tutorial jak najmniejszym kosztem? Wydłużasz sobie czas nauki i komplikujesz na przyszłość. Podstawą jest zrozumienie, tego co i jak i dlaczego. Ta książka to była moja pierwsza książka z Rails, i uwierz mi wszystko robiłem sam, nawet aplikacja była inna, tylko się wzorowałem na tym co tam piszą, innej drogi nie widzę. Następna sprawa, książki zawsze się pojawiają z opóźnieniem, za pół roku będziesz miał znów problem, bo będziesz chciał bezboleśnie przenieść problem do Rails 3. Zacznij raczej posiłkować się netem, nie odrzucając książek (one są dobre do pociągu albo na ławeczkę do parku)

Nie tędy droga, chcesz coś robić to rób to z sercem i na całego, jeśli uważasz że pisanie aplikacji w Rails to kwestia spędzenia kilku godzin bo nie masz czasu - to nigdy nie będziesz pisał w Rails, ani niczym innym.

Weź się w garść! :slight_smile: Bo przypomina to mojego szefa, który najpierw narzeka że coś długo powstaje, potem jak siedzi żeby mnie sprawdzić stwierdza że rzeczywiście czas leci jak wodospad, ale za to program jest łatwy i co to za filozofia (patrząc na człowieka który pracuje w PS albo C4D kilka lat można takie wrażenie odnieść), i stwierdza że się sam nauczy bo to pestka… Po tygodniu walki i frustracji okazuje się że to nie jest takie “fiu bziu” i wcale nie da się zrobić super grafiki w godzinę, do tego ucząc się tydzień. Stąpaj po ziemi.

ps.

[code]Dzisiaj 20:25:38

Tomash
RoR Guru
Zarejestrowany: 2007-04-01
Posty: 666
E-mail[/code]
Gratuluję :slight_smile: