Page 107 of 169

Rails3 i routes.rb – rozbicie (rozłożenie) na kilka plików

Wraz z rozrostem naszej aplikacji, zaczynają pojawiać się w niej przestrzenie nazw/moduły (namespaces). Dzięki takiemu podziałowi możemy zachować logikę w aplikacji dzieląc ją (przykład) np. na:

  • api
  • admin
  • dev

Wygodnie byłoby móc odwzorować taki podział także na pliku routes.rb, który niestety z czasem będzie rósł coraz bardziej. Aby temu zapobiec (i zapanować nad ew. rozrostem), warto rozdzielić plik routes.rb. Jak tego dokonać? Wystarczy utworzyć sobie katalog config/routes w nim utworzyć swoją herarchię plików (może być zagnieżdzona w subkatalogach). Następnie należy dodać poniższe linijki do pliku config/application.rb:

    # Ładuj wszystkie routy z katalogu config/routes
    Dir["#{Rails.root}/config/routes/**/*.rb"].each do |route_file|
      config.paths.config.routes << route_file
    end

Powyższy kod przeszukuje rekurencyjnie katalog z routsami i załącza te na które natrafi.

Rails 3.0.7, Ruby 1.9.2 + Couldn’t parse YAML at line 41 column 14 (Psych::SyntaxError)

Po reinstalacji systemu, instalacji RVMa oraz gemsetów, natknąłem się na taki oto błąd (niezależnie czy odpalałem testy, rake'a czy też serwer):

Couldn't parse YAML at line 41 column 14 (Psych::SyntaxError)

Nie zamieszczam stacktrace'a, ponieważ i tak nic nie wnosił (nie podawał pliku yaml w którym występował błąd). Na szczęście diagnoza problemu okazała się całkiem prosta. Winny okazał się taki oto fragment yamla:

order: [:year, :month, :day]

Okazuje się, że w nowszych wersjach psych, taki sposób osadzania symboli nie przechodzi i należy rozbić to na oddzielne wiersze:

order:
  :year
  :month
  :day

Poprawki takie należy wprowadzić we wszystkich miejscach gdzie umieszczaliśmy symbole w sposób "tablicowy". W moim przypadku, na szczęście były to tylko dwa pliki.

Copyright © 2025 Closer to Code

Theme by Anders NorenUp ↑