CarrierWave Direct 使用教程
1. 项目的目录结构及介绍
CarrierWave Direct 是一个用于直接上传文件到 Amazon S3 的 Ruby gem。以下是其基本的目录结构:
carrierwave_direct/
├── app/
│ └── uploaders/
│ └── avatar_uploader.rb
├── config/
│ └── initializers/
│ └── carrierwave.rb
├── Gemfile
├── Gemfile.lock
├── lib/
│ └── carrierwave_direct/
│ ├── version.rb
│ └── ...
├── README.md
└── ...
- app/uploaders/: 包含上传器的定义文件,例如
avatar_uploader.rb
。 - config/initializers/: 包含配置文件,例如
carrierwave.rb
。 - Gemfile: 定义项目所需的 gem 依赖。
- lib/carrierwave_direct/: 包含 gem 的核心代码和版本信息。
- README.md: 项目的说明文档。
2. 项目的启动文件介绍
CarrierWave Direct 的启动文件主要是 config/initializers/carrierwave.rb
,它负责配置 CarrierWave 和 CarrierWave Direct 的基本设置。
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: 'your_access_key_id',
aws_secret_access_key: 'your_secret_access_key',
region: 'your_region'
}
config.fog_directory = 'your_bucket_name'
end
3. 项目的配置文件介绍
config/initializers/carrierwave.rb
这个文件包含了 CarrierWave 和 CarrierWave Direct 的配置信息,主要包括 AWS 的访问密钥、区域和存储桶名称。
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: 'your_access_key_id',
aws_secret_access_key: 'your_secret_access_key',
region: 'your_region'
}
config.fog_directory = 'your_bucket_name'
end
app/uploaders/avatar_uploader.rb
这个文件定义了上传器的具体行为,例如存储目录、文件名格式等。
class AvatarUploader < CarrierWave::Uploader::Base
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
通过以上配置,你可以使用 CarrierWave Direct 直接将文件上传到 Amazon S3,并保持特定的目录结构。