Category: Ruby

Rails 3 + Paperclip + Errors, Errors, Errors ;)

Testując dzisiaj paperclipa, okazało się że mimo tego że na gicie jest branch dla Rails3, to niestety nie działa on zbyt dobrze.

Wprawdzie działa on przyzwoicie jeśli przesyłamy poprawne pliki (typ, rozmiar), jednak gdy zaczynamy "się bawić", Paperclip sypie m.in. takimi błędami:

can't convert nil into Integer
An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError
 #<Paperclip::NotIdentifiedByImageMagickError: /tmp/stream,9641,0.zip is not recognized by the 'identify' command.>

Rozwiązaniem tego problemu jest zainstalowanie Paperclipa jako pluginu, nie jako gema. Wiem że nie jest to ani zbyt eleganckie ani zgodne z drogą obraną przez Rails3, jednak póki co ważniejsze jest że działa ;)

Ważne!
Nowe wersje z branchu Rails3, jak i z branchu dla Rails2, nie działają! Jeśli chcesz odpalić Paperclipa w Rails3 - pobierz wersję 2.2.9.1. Następnie podmień w pliku paperclip.rb RAILS_ROOT na Rails.root.

Ważniejsze!
Nowe wersje z mastera działają na Rails3 bez zarzutu (ale niestety nie na każdym systemie - nie mam pojęcia od czego to zależy).

Rails 3 + incompatible character encodings: UTF-8 + Mysql + Ruby 1.9

Jeśli dostajemy taki błąd:

ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT)

w nowych Railsach, korzystając z Mysqla, oznacza to że pora zmienić driver do bazy ;)

W gemfile'u zamiast:

gem 'mysql'

Należy użyć:

gem 'ruby-mysql'

Po tym zabiegu, musimy jeszcze w pliku database.yml podać ścieżkę do socketu mysqla. Aby wykryć gdzie on się znajduje, musimy wpisać następującą komendę do konsoli:

mysql_config --socket

Otrzymane dane wprowadzamy w taki sposób:

socket: /var/run/mysqld/mysqld.soc

Tyle :)

Copyright © 2026 Closer to Code

Theme by Anders NorenUp ↑