Just released a plugin for Rackspace Cloud Files storage.

Added by Nathan Aschbacher over 7 years ago

https://bitbucket.org/nathan_aschbacher/redmine-cloud-conveyor/wiki/Home

Sign-up for service here: https://www.rackspacecloud.com/signup. After you're enrolled you'll need to login to the management portal here: https://manage.rackspacecloud.com to get you API access key, so that Cloud Conveyor can read and write files to your account. Find out more about the service here: http://www.rackspacecloud.com/cloud_hosting_products/files.

This plugin currently depends on having the ruby-cloudfiles API installed on the machine hosting Redmine. This is available as a standalone installation as well as a Ruby Gem located here: http://github.com/rackspace/ruby-cloudfiles

Currently this plugin handles saving, deleting, reading, and downloading all attachment types as though they were stored locally. Text files and Diff files are streamed down and fed to the built in Redmine file viewers, and the Download buttons work as you would expect. Images are displayed inline, and other binary files (.zip, .pdf, .gz, etc.) all start downloading immediately and are streamed to you from Cloud Files through Redmine without having to load the whole thing at once. Streaming the files means you don't have to make your Rackspace containers publicly visible or accessible, and lets you rely on Redmine's security/file-access model.

The only time the attachment files touch touch the media on the Redmine host at the moment is during upload. I had set it up to be buffered and forwarded like the downloads/reads are, but the user experience wasn't much improved because of how Rails handles file uploads generally. For now it uploads the file to a temp file, gets the MD5 sum, sends the file to Cloud Files, and then deletes the temp file from the Redmine host. For most use-cases it's barely noticeable, and it's only a minor annoyance for larger files (20MB+).

Configuration is handled by a YAML configuration file, there's an example version stored at config/cloud_conveyor.yml.example with the plugin.