2012-05-03 8 views
7

đây là tình huống của tôi.mọi lần đẩy vào heroku, hình ảnh không được hiển thị, kẹp giấy

Tôi đã sử dụng kẹp giấy để cho phép người dùng tải lên hình ảnh. Nó đã làm tốt và mọi thứ đều ổn. Sau đó, tôi đẩy nó vào heroku. Đối với các phần tử, tôi có thể xem tất cả hình ảnh của mình chỉ được tải lên bởi người dùng. Tuy nhiên, mỗi lần thực hiện một cam kết mới và đẩy vào heroku một lần nữa, tất cả các hình ảnh trước đó của tôi đã biến mất. Nó có vẻ như không có tập tin nữa, không thể tải nó.

Vì vậy, ở đây tôi nghĩ: Có phải mỗi lần tôi được chuyển đến máy chủ Heroku, tệp hình ảnh đã được tải lên máy chủ Heroku cục bộ?

Tôi đã nghiên cứu vấn đề của mình cho nó, và im không thực sự hiểu những gì họ thực sự nói về heroku và tôi không biết là nó là cùng một vấn đề với tôi.

Heroku có hệ thống tệp chỉ đọc. Điều đó có nghĩa là Paperclip không thể lưu các tệp đã tải lên vào bất kỳ vị trí nào trong Heroku.

Nếu bạn muốn tải tệp lên ứng dụng được lưu trữ trên Heroku, bạn phải lưu trữ tệp dưới dạng nhị phân nhị phân trong cơ sở dữ liệu hoặc bạn phải sử dụng dịch vụ riêng để lưu trữ tệp. Nếu bạn đang tìm kiếm một dịch vụ riêng biệt, Paperclip có hỗ trợ tích hợp để tích hợp với Amazon S3.

Tôi phát hiện ra rằng Amazon S3 cần thẻ tín dụng để đăng ký, nếu tôi không có thẻ tín dụng, thì tôi không thể sử dụng dịch vụ của họ ??

Bất kỳ lời khuyên chi tiết và Giải thích được đánh giá cao .Thanks bạn

Trả lời

5

Amazon không phải là một thiết bị miễn phí, bạn phải để cho số thẻ tín dụng của bạn để sử dụng nó. Tuy nhiên Bạn chỉ phải trả những gì bạn sử dụng nhưng nó không phải là đắt tiền. Ví dụ cho các trang web của tôi, tháng trước tôi đã trả 2,46 đô la cho 15 GB dung lượng lưu trữ và tôi đã trả 1,90 đô la cho 16Gb chuyển dữ liệu.

Để sử dụng S3 với kẹp giấy, bạn cần phải thêm gem 'aws-s3' để bạn Gemfile

Tiếp theo bạn cần phải thêm config/s3.yml tài sản thông tin của bạn, ví dụ:

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

Sau đó, tôi có một mô hình trong đó lưu trữ của tôi tài sản, ví dụ:

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 

Tôi hy vọng nó sẽ giúp

+0

yup, tôi đã biết về điều này, bạn có thể cung cấp thêm vấn đề về vấn đề của tôi mà tôi đang gặp phải không? izit nó phải được giải quyết để sử dụng một dịch vụ khác như Amazon s3? –

+0

Bạn có thể sử dụng bất cứ điều gì bạn muốn thay vì S3 nhưng bạn không thể tải lên các tài sản trên heroku. Vì vậy, bạn có thể sử dụng một máy chủ chuyên dụng hoặc hệ thống lưu trữ từ xa khác, nhưng có thể bạn sẽ phải trả tiền cho việc này. –

+0

oic ... vì vậy có nghĩa là mọi lúc tôi bị đẩy vào heroku, hình ảnh tôi tải lên trên máy chủ heroku sẽ bị ảnh hưởng? –