Rails Space

Witam, właśnie zakupiłem sobie książkę “RailsSpace - Tworzenie społecznościowych serwisów internetowych w Ruby on Rails”.
Chciałbym realizować treść tej książki pod najnowszą wersją Rubiego i Railsów, jednakże już na samym początku mam pewne problemy - chciałbym w tym temacie kolejno zwracać się do Was z pytaniami jak je rozwiązać (jeżeli sam nie podołam ich rozwiązaniu - a jestem bardzo początkujący w RoR).
Od razu zaznaczę, że działam na Windows 7, Rails 3.0.5.
Pierwszy problem był już przy tworzeniu nowego projektu (w książce kazali użyć nie obsługiwanego już polecenia

 rails -d mysql rails_space

zamiast

 rails new rails_space

Kolejnym problemem - na którym niestety się zatrzymałem jest zmienianie trasy - wpisanie do pliku config/routes.rb linii:

 map.root '', :controller => "site"

Niestety, po wpisaniu tej linii serwer odmawia współpracy - na chwilę startuje i po chwili przerywa pracę i konsola wyrzuca mi komunikat:

C:\Sites\rails_space>rails server => Booting WEBrick => Rails 3.0.5 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server Exiting C:/Sites/rails_space/config/routes.rb:8: undefined local variable or method `map ' for #<ActionDispatch::Routing::Mapper:0x700e2e8> (NameError) from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/actionpack-3.0.5 /lib/action_dispatch/routing/route_set.rb:233:in `instance_exec' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/actionpack-3.0.5 /lib/action_dispatch/routing/route_set.rb:233:in `draw' from C:/Sites/rails_space/config/routes.rb:1 from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activesupport-3. 0.5/lib/active_support/dependencies.rb:235:in `load' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activesupport-3. 0.5/lib/active_support/dependencies.rb:235:in `load' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activesupport-3. 0.5/lib/active_support/dependencies.rb:225:in `load_dependency' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activesupport-3. 0.5/lib/active_support/dependencies.rb:596:in `new_constants_in' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activesupport-3. 0.5/lib/active_support/dependencies.rb:225:in `load_dependency' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activesupport-3. 0.5/lib/active_support/dependencies.rb:235:in `load' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/application.rb:127:in `reload_routes!' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/application.rb:127:in `each' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/application.rb:127:in `reload_routes!' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/application.rb:120:in `routes_reloader' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activesupport-3. 0.5/lib/active_support/file_update_checker.rb:32:in `call' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/activesupport-3. 0.5/lib/active_support/file_update_checker.rb:32:in `execute_if_updated' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/application/finisher.rb:51 from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/application/finisher.rb:52:in `call' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/application/finisher.rb:52 from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/initializable.rb:25:in `instance_exec' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/initializable.rb:25:in `run' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/initializable.rb:50:in `run_initializers' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/initializable.rb:49:in `each' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/initializable.rb:49:in `run_initializers' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/application.rb:134:in `initialize!' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/application.rb:77:in `send' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/railties-3.0.5/l ib/rails/application.rb:77:in `method_missing' from C:/Sites/rails_space/config/environment.rb:5 from C:/Sites/rails_space/config.ru:3:in `require' from C:/Sites/rails_space/config.ru:3 from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/rack-1.2.1/lib/r ack/builder.rb:46:in `instance_eval' from C:/RailsInstaller/Ruby1.8.7/lib/ruby/gems/1.8/gems/rack-1.2.1/lib/r ack/builder.rb:46:in `initialize' from C:/Sites/rails_space/config.ru:1:in `new' from C:/Sites/rails_space/config.ru:1
HELP! :frowning:

Ta książka nie jest przypadkiem z 2007 i jeszcze pod rails 1.2.X ?

Edit:

http://blog.railsspace.com/past/2007/12/13/railsspace_now_rails_20_compatible/

Używaj rails 2.0 i ruby 1.8.

a dlaczego nie rails 3.0? wolałbym już się edukować pod najnowszą wersję, skoro ma w sobie tak wiele różnic w porównaniu z poprzednią?

poczytaj sobie o routach w rails 3 są zupełnie inne, te twoje są do 2. Poza tym domyśly plik z routami ma całkiem nieźle przedstawione standardowe przypadki. Root tez tam jest

Wiecej czasu spedzisz nad szukaniem jak to jest w Rails 3 niż nad chlonieniem wiedzy z książki. Kolega dobrze ci radzi, jak potrzebujesz przerobić ta ksiazke to pisz w Rails 2 i ruby 1.8 potem jak ogarniesz temat to przerób sobie na Rails 3

Po prostu będzie ci łatwiej, dopiero zaczynasz, skoro już zainwestowałeś w książke to wykorzystaj to właściwie. Różnic trochę jest. Jeśli chcesz marnować wydaną kase to po prostu wywal książke do kosza i skorzystaj z http://ruby.railstutorial.org/ruby-on-rails-tutorial-book

Ja bym wywalił książkę i zaczął z rails 3, ale to moja bardzo subiektywna opinia - po prostu nie lubię tracić czasu na coś, od czego się odchodzi. Niby zmian dużo nie ma, ale wolałbym stracić te kilka dyszek zamiast stracenia kilkunastu/kiludziesięciu godzin na szukanie co się zmieniło i jak powinienem zrobić to czego się właśnie nauczyłem dla nowej wersji. Nie wspominając już, że coraz więcej gemów wychodzi tylko do railsów 3, a istniejące często są rozwijane tylko w wersji dla trójki (a do wersji dla railsów 2 są ewentualnie wrzucane jakieś bugfixy).

Wszystko zależy na jakim poziomie jesteś ogólnie w programowaniu, bo jeśli w programowaniu, w innych językach idzie ci dobrze, to z własnego doświadczenia mogę powiedzieć, że warto przesiąść się na railsy 3 a nie uczyć się starszych railsów 2.

hmn… no dobra, skoro już zainwestowałem w tą książkę to ją wykorzystam / przebrnę przez nią raz, a dopiero później będę ją męczył w rails 3.0 :slight_smile:

Pierwsza prawdziwa lekcja w świecie Rails: pomimo tego, że zainwestowałeś czas/kasę w starą wiedzę/technologię porzuć ją i zacznij od podstaw z nowymi rzeczami. Pogódź się ze stratą szybko, będziesz miał więcej czasu na naukę nowych rzeczy.

BTW: w biznesie to też się bardzo dobrze sprawdza. Z tyłu zostają najczęściej Ci, którzy nie umieją porzucić nietrafionych inwestycji.

To co napisał Bragi.

Oraz: guglnij sobie “sunk-cost fallacy” żeby poczytać głębszą analizę błędu, jaki popełniasz :slight_smile:

czyli jednak lepiej drążyć tą książkę, od razu męcząc ją pod najnowszymi railsami i rubim? :slight_smile:

Ale mu mieszacie w głowie ;( Nic nie zrozumiał i zadał jeszcze raz to samo pytanie.

no trochę namieszali :smiley: ale jednak czuję się zmotywowany, aby działać tak jak napisałem wyżej - wg.tej książki ale pod najnowszym rubym i railsami :slight_smile:

btw.

problem z map.root '', :controller => "site"
rozwiązany:

root :to => "site#index" match 'about' => "site#about" match 'help' => "site#help"

kolejnym problemem było umieszczenie w szablonie instrukcji:

 <%= content_for_layout %>

co zastąpiłem:

<%= yield %>

Widzę, że forum nie obsługuje łączenia postów - jeżeli adminom się to nie podoba, niech wyłączą mi nabijanie postów w tym temacie - chciałbym notować tutaj wszystkie problemy, żeby inne osoby mogły później łatwo znaleźć rozwiązanie swoich problemów związanych z tą książką pod najnowszym Rubym i Railsami :wink:

Ofca: Rady były 2:

  1. Olej książkę i ucz się trójki z tutoriali
  2. Zostaw książkę, ale wtedy ucz się dwójki na ruby 1.8

Wybrałeś najgorsze możliwe rozwiązanie czyli połączenie tych 2 punktów :wink: W ten sposób jak sam zauważyłeś będziesz miał same problemy i będziesz zasypywał forum pytaniami. Nie ma co się męczyć, serio :slight_smile: Zdecyduj się na jeden ze sposobów najlepiej.

Dolewając jeszcze trochę oliwy powiem, że nie jest to najlepsza książka do nauki tego frameworka. Książka skupia się bardziej na uzyskaniu konkretnego efektu (portal społecznościowy) niźli na wyjaśnieniu co, jak i dlaczego. Podczas lektury będziesz wielokrotnie sięgał do innej literatury aby zrozumieć dlaczego autor zrobił tak czy tak.
Dodatkowo zauważ pewną rzecz: jeżeli będziesz samodzielnie adaptował kod do najnowszej wersji będziesz ciągle spotykał się z całą listą błędów. Przekonany, że błędy są skutkiem nie działania czegoś w rails 3 będziesz wszędzie gdzie się da szukał rozwiązania dlaczego to nie działa - co będzie cię kosztować duże zasoby czasu i energii. Po kilku godzinach szukania okaże się, że zgubiłeś jedną linijkę przy przepisywaniu kodu.

Wszyscy radzą ci rozsądnie - jeżeli chcesz się uczyć rails, to albo zgodnie z książką albo weź inną do nowej wersji rails (lepsza opcja).

okej okej… przestawię się na stare railsy …

Powiedz, proszę, że trolujesz i tylko udajesz niezrozumienie tego, co Ci tu wszyscy próbujemy wbić do głowy :slight_smile:

Teraz to chyba ty już tylko trollujesz :wink: