Paperclip Paerclipftp ładowanie zdjęć na ftp

Jako że to mój pierwszy post witam wszystkich forumowiczów.
Piszę aplikację Rails na pracę magisterską. Ogólnie wszystko działa poza jedną rzeczą. Korzystam z hostingu na heroku. Tamtejszy system plików wymusza korzystanie ze zdalnego hostingu zdjęć. Przesyłam je do mojej aplikacji za pomocą paperclipa. Najprościej było by korzystać z S3 ale nie mam tam konta więc zdecydowałem się na przesyłanie zdjęć na ftp.
Część modelu location związana ze zdjęciami wygląda tak:

[code]has_attached_file :location_photo,
:styles => { :medium => “300x300>”, :thumb => “75x75>” },
:storage => :ftp,
:url => “http://www.ph1l1p.republika.pl/:attachment/:id/:style/:filename”,
:path => “/:attachment/:id/:style/:filename”,
:ftp_credentials => { :host => ‘ftp.republika.com’, :username => ‘ph1l1p’, :password => ‘pass’ },
:ftp_passive_mode => false,
:ftp_timeout => 90,
:ftp_verify_size_on_upload => false,
:ftp_debug_mode => false

validates_attachment_presence :location_photo
validates_attachment_size :location_photo, :less_than => 1.megabytes
validates_attachment_content_type :location_photo, :content_type => [‘image/jpeg’, ‘image/png’][/code]
używam
rails ‘3.1.3’
paperclip (2.4.5)
paperclipftp (0.2.4)
ruby 1.9.2p290
geocoder (1.1.0)

przy odpaleniu z taką konfiguracją gemów dostaję

NameError in Locations#index

Showing /home/philip/mag/app/views/locations/index.html.erb where line #29 raised:

`@[]’ is not allowed as an instance variable name

Po przesłaniu zdjęć przez na serwer i zmianie
gem ‘paperclip’ na gem ‘paperclip’, :git => ‘https://github.com/thoughtbot/paperclip.git’, :branch => ‘master’
lokacje indexuja się ale nie mogę dalej utworzyć nowej lokalizacji i ani edytować już istniejących. Kończy się to:

NoMethodError in LocationsController#create

undefined method `close’ for #Paperclip::UploadedFileAdapter:0x000000046088b8

app/controllers/locations_controller.rb:48:in block in create' app/controllers/locations_controller.rb:47:increate’

Z góry dziękuje za pomoc.

Jeśli heroku, to jesteś skazany na S3. Koniec pieśni.

A tam od razu skazany :slight_smile: Możesz wykorzystać Dropboksa - dla serwisu pisanego na pracę magisterską w zupełności wystarczy.

Paperclip może wrzucać na dropboxa jako backend do plików?

Tak prosto z pudełka to chyba nie może, ale dopisanie do niego tej możliwości nie jest trudne, zobacz: https://github.com/dripster82/paperclipdropbox. Mi to za bardzo nie chciało działać, bo API Dropboksa się zmieniło i musiałem lekko zmodyfikować kod: https://github.com/espresse/paperclipdropbox. W każdym bądź razie warto rozważyć napisanie własnego backendu paperclip-dropbox zamiast walczyc z ftp.

Tak, mi tam wszystko działa. Co prawda w przypadku większych plików można dostać timeouta, ale do obsługiwania np. prostego systemu z galeriami zdjęć działa miód : )

Bardzo dziękuje za pomoc
Rozwiązanie z pudełkiem działa i ma się świetnie. Nic nie musiałem nadpisywać.
Tylko dla wygody używam zamiast :path => “/:attachment/:attachment/:id/:style/:filename” to :path => “/:attachment/:id/:style/:filename”.