Gem Version Maintainability Test Coverage Build Status Dependabot Status

Active Storage OpenStack service

Active Storage facilitates uploading files to a cloud storage service like Amazon S3, Google Cloud Storage, or Microsoft Azure Storage and attaching those files to Active Record objects.

This gem adds support for the OpenStack Object Storage API.

The goal is to interact with the OpenStack API without any third party tools (Swift, Fog...).

We use the standard Net::HTTP ruby library.

We stay up-to-date with the Ruby and Rails versions.

Getting Started

In your Gemfile add this line:

gem 'activestorage_openstack'

Prerequisites

In your Rails config/storage.yml file add your OpenStack configuration:

openstack:
  service: Openstack
  container: __container__
  authentication_url: __authentication_url__
  region: __region__
  credentials:
    username: __username__
    api_key: __api_key__
    temporary_url_key: __temporary_url_key__

Then add to your config/environments/*.rb files:

Rails.application.configure do
  ...
  config.active_storage.service = :openstack
  ...
end

Installing

If you want to add features to the gem, clone the repository and use Docker:

$ git clone https://github.com/argus-api-team/activestorage-openstack.git
$ cd activestorage-openstack
$ docker image build -t activestorage_openstack .

Running the tests

We use the Guard gem to run tests:

$ docker container run -e RAILS_ENV=test -v $(pwd):/app -it activestorage_openstack guard -g red_green_refactor -c

The red_green_refactor Guard group means:

  • It runs Rspec tests with Spring.
  • It watches Gemfile for changes.
  • It uses Rubocop and Reek for linting/coding style.

See Guardfile for details.

Built With

  • Net::HTTP - From the standard Ruby Library.

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the MIT-LICENSE file for details

Acknowledgments