Crates.io | active-storage |
lib.rs | active-storage |
version | 0.1.1 |
source | src |
created_at | 2024-01-31 11:43:53.226227 |
updated_at | 2024-01-31 12:00:49.750041 |
description | Active Storage facilitates uploading files to a cloud storage |
homepage | |
repository | https://github.com/kaplanelad/active-storage |
max_upload_size | |
id | 1121676 |
size | 153,715 |
Active Storage streamlines the process of uploading files to cloud storage, offering both local disk-based and in-memory services for development and testing. Additionally, it supports mirroring files to subordinate services, enhancing capabilities for backups and migrations.
It's inspired by Rails Active Store
use std::path::PathBuf;
use active_storage::{drivers, StoreConfig};
#[tokio::main]
async fn main() {
let config = drivers::aws_s3::Config {
region: "us-east-1".to_string(),
bucket: "test-bucket".to_string(),
credentials: None,
};
let s3_driver = StoreConfig::AwsS3(config).build().await.unwrap();
let file_path = PathBuf::from("test.txt");
s3_driver
.write(file_path.as_path(), b"my content")
.await
.unwrap();
}
use std::{collections::HashMap, path::PathBuf};
use active_storage::{drivers, multi_store::MultiStore, StoreConfig};
#[tokio::main]
async fn main() {
let config = drivers::disk::Config {
location: PathBuf::from("tmp").join("primary-storage"),
};
let store_one = StoreConfig::Disk(config).build().await.unwrap();
let config = drivers::disk::Config {
location: PathBuf::from("tmp").join("backups"),
};
let secondary_store = StoreConfig::Disk(config).build().await.unwrap();
let mut multi_store = MultiStore::new(store_one);
multi_store.add_stores(HashMap::from([("secondary", secondary_store)]));
let _ = multi_store
.mirror_stores_from_primary()
.write(PathBuf::from("test").as_path(), b"content")
.await;
}