2012-05-03 23 views
7

tutaj była moja sytuacja.za każdym razem pchać do heroku, obrazy nie są wyświetlane, spinacz

Użyłem spinacza, aby umożliwić użytkownikom przesyłanie zdjęć. Wszystko poszło dobrze i wszystko było w porządku. Potem popchnąłem to do Heroku. W tym przypadku widzę wszystkie moje zdjęcia, które zostały przesłane przez użytkowników. Jednak za każdym razem wykonuj nowe zatwierdzenie i pchnij ponownie do Heroku, wszystkie moje poprzednie zdjęcia zniknęły. Wygląda na to, że nie masz już pliku, nie mogę go załadować.

Tak więc, tutaj co pomyślałem: Czy za każdym razem, gdy naciskałem na serwer Heroku, plik z obrazami, który był lokalny, został załadowany na serwer Heroku?

Zrobiłem badania na mój problem, i nie jestem naprawdę zrozumieć, co oni faktycznie powiedzieli o Heroku i nie wiem, to jest ten sam problem ze mną.

Heroku ma system plików tylko do odczytu. Oznacza to, że Paperclip nie może zapisywać przesłanych plików w żadnym miejscu w Heroku.

Jeśli chcesz mieć możliwość przesyłania plików do aplikacji hostowanej na Heroku, musisz zapisać pliki jako binarne obiekty blob w bazie danych lub musisz użyć oddzielnej usługi do przechowywania plików. Jeśli szukasz oddzielnej usługi, Paperclip ma wbudowaną obsługę integracji z Amazon S3.

Dowiedziałem się, że Amazon S3 potrzebuje karty kredytowej do rejestracji, jeśli nie mam karty kredytowej, to nie mogę korzystać z ich usług?

Wszelkie porady szczegółów i wyjaśnieniu jest doceniana .thanks ty

Odpowiedz

5

Amazon nie jest wolne urządzenie, musisz podać swój numer karty kredytowej, aby go używać. Jednak płacisz tylko za to, czego używasz, ale nie jest to drogie. Na przykład dla moich stron internetowych, w zeszłym miesiącu zapłaciłem 2,46 USD za 15 GB miejsca i zapłaciłem 1,90 USD za 16 GB transferu danych.

Aby użyć S3 z spinacza, trzeba dodać gem 'aws-s3' do Gemfile

Następny trzeba dodać config/s3.yml poświadczeń aktywa, na przykład:

production: 
    access_key_id: AAAAAAAAAAAAAAAAAA 
    secret_access_key: BBBBBBBBBBBBBBBBBBBBBBBBBBB 
    bucket: assets.my-bucket 

Wtedy mam model, który przechowywać moje aktywa, na przykład:

class Asset 
    has_attached_file :asset, 
    :styles => { :thumb => "60x60#", :large => "700x330#"}, 
    :storage => :s3, 
    :s3_credentials => "#{Rails.root}/config/s3.yml", 
    :path => "/images/:id/:style.:extension" 
    validates_attachment_content_type :asset, :content_type => ['image/gif', 'image/jpeg', 'image/png', 'image/x-ms-bmp'] 
end 

mam nadzieję, że to pomaga

+0

Tak, wiedziałem o tym, czy możesz podać więcej problemu z moim problemem, z którym się borykam? izit to musi być rozwiązać, aby użyć innej usługi, takiej jak Amazon s3? –

+0

Możesz używać wathever, który chcesz, a nie S3, ale nie możesz przesyłać zasobów na heroku. Możesz więc użyć dedykowanego serwera lub innego zdalnego systemu pamięci masowej, ale prawdopodobnie będziesz musiał za to zapłacić. –

+0

oic ... więc to znaczy, że za każdym razem, gdy naciskałem na Heroku, obraz, który wysyłam na serwerach Heroku, zostanie naruszony? –

Powiązane problemy