ActionController::RoutingError (No route matches [GET] “/assets/logo.png”)…

Opublikowano: 06.12.2011 | Kategoria: Programowanie | Tagi: , | Brak komentarzy »

Ruby on Rails 3.1 z Assets Pipeline i SASS – dla mnie super sprawa. Niestety po update Rails do wersji 3.1.3 i jednoczesnej przesiadce na Ruby 1.9.3 natrafiłem na niespodziewany błąd (ostatecznie, to nie zmiana ich wersji była przyczyną, o czym dalej).

W plikach styli z rozszerzeniem .css.scss używałem linków to obrazków zgodnie z metodą proponowaną przez gem sass-rails: image-url('logo.png') (plik znajdował się oczywiście w odpowiednim katalogu railsapp/app/assets/images/logo.png). Grafika deklarowana w stylach przestała się pojawiać na developmencie, więc na szybko zmieniłem sass-owe image-url na css-owe url. Po wgraniu aplikacji na produkcję i wykonaniu bundle exec rake assets:precompile niestety zamiast obrazków zaczął pojawiać się w logach błąd: ActionController::RoutingError (No route matches [GET] “/assets/logo.png”).

Po kilkunastu próbach znalezienia rozwiązania, winnym okazał się gem Compass, który powodował konflikt z sass-owym image-url zmieniający /assets/logo.png (prawidłowy url) na /images/logo.png (nieprawidłowy).

Pomógł update compass do najnowszej wersji z GitHub i powrót do sass-railsowej składni.


Rails 3.1beta1 – undefined method `context`

Opublikowano: 19.05.2011 | Kategoria: Programowanie | Tagi: | Brak komentarzy »

Jeżęli wersja beta 1 Ruby on Rails wywala się Wam z podobnym błędem:

/.rvm/gems/ruby-1.9.2-p180@railspre/gems/actionpack-3.1.0.beta1/lib/sprockets/railtie.rb:37:in
`block (2 levels) in ': undefined method `context' for # (NoMethodError)

to znak, że macie zbyt nową wersję sprockets.

Sprawę załatwiamy dodająć do Gemfile:

gem 'sprockets', '2.0.0.beta.2'

i wywołując w konsoli komendę:

bundle update sprockets