Upload file lên Amazon S3 bằng carrierwave

Với một hệ thống lớn cùng lượng data khổng lồ việc lưu file trực tiếp trên server có thể gặp khó khăn vì giới hạn bộ nhớ. Sử dụng dịch vụ lưu trữ tệp trực tuyến như Amazon S3 là giải pháp hữu hiệu cho vấn đề này. Và xem chúng ta có gì nào, carrierwave, một thư viện Ruby được dùng phổ biến hỗ trợ upload files một cách dễ dàng.

Đừng lo lắng nếu bro không có account AWS, hãy tham khảo bài viết dưới link này để giả lập môi trường AWS phía local nhé. Shout-out cho người thầy của tui 😗
http://blog.tomosia.com.vn/su-dung-localstack-de-gia-lap-upload-file-s3/

Ok vậy là đầy đủ đồ đạc rùi ae, chiến thôi

Trước tiên, để sử dụng những công cụ trên hãy add nó vào Gemfile nhé

gem 'carrierwave'
gem 'fog-aws'

Fog AWS được sử dụng để hỗ trợ Amazon S3. Hãy chắc chắn rằng bạn có nó trong Gemfile của mình

Và đừng quên bundle để cài đặt chúng

bundle install

Giả sử bạn đang cần upload avatar cho user

class User < ActiveRecord::Base
  mount_uploader :avatar, AvatarUploader
end

Tiếp theo hãy tạo file uploader cho nó

class AvatarUploader < CarrierWave::Uploader::Base
  storage :fog
end

Để biết thêm về nhiều loại ma thuật khác như thay đổi tên file hay folder chứa, vân vân và mây mây ae có thể xem tại đây
https://github.com/carrierwaveuploader/carrierwave

Tạo file carrierwave.rb trong config/initializers và cấu hình credentials

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider: 'AWS',
    aws_access_key_id: 'S3_AWS_ACCESS_KEY_ID',
    aws_secret_access_key: 'S3_AWS_SECRET_ACCESS_KEY',
    region: 'us-east-1'
  }
  config.fog_directory = 'BUCKET_NAME'
end

There u go, giờ thì ae có thể upload file lên S3 r. Quá ư là đơn giản và dễ hiểu phải không 🐧🐧

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like