swift-enable the paperclip! 📎 (#2322)
This commit is contained in:
		
				
					committed by
					
						
						Eugen Rochko
					
				
			
			
				
	
			
			
			
						parent
						
							be7ffa2d75
						
					
				
				
					commit
					6994664a13
				
			
							
								
								
									
										1
									
								
								Gemfile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Gemfile
									
									
									
									
									
								
							@@ -15,6 +15,7 @@ gem 'pghero', '~> 1.7'
 | 
			
		||||
gem 'dotenv-rails', '~> 2.2'
 | 
			
		||||
 | 
			
		||||
gem 'aws-sdk', '~> 2.9'
 | 
			
		||||
gem 'fog-openstack', '~> 0.1'
 | 
			
		||||
gem 'paperclip', '~> 5.1'
 | 
			
		||||
gem 'paperclip-av-transcoder', '~> 0.6'
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								Gemfile.lock
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								Gemfile.lock
									
									
									
									
									
								
							@@ -154,12 +154,25 @@ GEM
 | 
			
		||||
    erubis (2.7.0)
 | 
			
		||||
    et-orbi (1.0.5)
 | 
			
		||||
      tzinfo
 | 
			
		||||
    excon (0.58.0)
 | 
			
		||||
    execjs (2.7.0)
 | 
			
		||||
    fabrication (2.16.2)
 | 
			
		||||
    faker (1.7.3)
 | 
			
		||||
      i18n (~> 0.5)
 | 
			
		||||
    fast_blank (1.0.0)
 | 
			
		||||
    ffi (1.9.18)
 | 
			
		||||
    fog-core (1.45.0)
 | 
			
		||||
      builder
 | 
			
		||||
      excon (~> 0.58)
 | 
			
		||||
      formatador (~> 0.2)
 | 
			
		||||
    fog-json (1.0.2)
 | 
			
		||||
      fog-core (~> 1.0)
 | 
			
		||||
      multi_json (~> 1.10)
 | 
			
		||||
    fog-openstack (0.1.21)
 | 
			
		||||
      fog-core (>= 1.40)
 | 
			
		||||
      fog-json (>= 1.0)
 | 
			
		||||
      ipaddress (>= 0.8)
 | 
			
		||||
    formatador (0.2.5)
 | 
			
		||||
    fuubar (2.2.0)
 | 
			
		||||
      rspec-core (~> 3.0)
 | 
			
		||||
      ruby-progressbar (~> 1.4)
 | 
			
		||||
@@ -211,6 +224,7 @@ GEM
 | 
			
		||||
      rainbow (~> 2.2)
 | 
			
		||||
      terminal-table (>= 1.5.1)
 | 
			
		||||
    idn-ruby (0.1.0)
 | 
			
		||||
    ipaddress (0.8.3)
 | 
			
		||||
    jmespath (1.3.1)
 | 
			
		||||
    json (2.1.0)
 | 
			
		||||
    json-ld (2.1.5)
 | 
			
		||||
@@ -535,6 +549,7 @@ DEPENDENCIES
 | 
			
		||||
  fabrication (~> 2.16)
 | 
			
		||||
  faker (~> 1.7)
 | 
			
		||||
  fast_blank (~> 1.0)
 | 
			
		||||
  fog-openstack (~> 0.1)
 | 
			
		||||
  fuubar (~> 2.2)
 | 
			
		||||
  goldfinger (~> 2.0)
 | 
			
		||||
  hamlit-rails (~> 0.2)
 | 
			
		||||
 
 | 
			
		||||
@@ -12,8 +12,14 @@ module RoutingHelper
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def full_asset_url(source, options = {})
 | 
			
		||||
    source = ActionController::Base.helpers.asset_url(source, options) unless Rails.configuration.x.use_s3
 | 
			
		||||
    source = ActionController::Base.helpers.asset_url(source, options) unless use_storage?
 | 
			
		||||
 | 
			
		||||
    URI.join(root_url, source).to_s
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
  def use_storage?
 | 
			
		||||
    Rails.configuration.x.use_s3 || Rails.configuration.x.use_swift
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,7 @@ Rails.application.configure do
 | 
			
		||||
  config.x.web_domain   = web_host
 | 
			
		||||
  config.x.use_https    = https
 | 
			
		||||
  config.x.use_s3       = ENV['S3_ENABLED'] == 'true'
 | 
			
		||||
  config.x.use_swift    = ENV['SWIFT_ENABLED'] == 'true'
 | 
			
		||||
 | 
			
		||||
  config.x.alternate_domains = alternate_domains.split(/\s*,\s*/)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -40,6 +40,21 @@ if ENV['S3_ENABLED'] == 'true'
 | 
			
		||||
    Paperclip::Attachment.default_options[:url]           = ':s3_alias_url'
 | 
			
		||||
    Paperclip::Attachment.default_options[:s3_host_alias] = ENV['S3_CLOUDFRONT_HOST']
 | 
			
		||||
  end
 | 
			
		||||
elsif ENV['SWIFT_ENABLED'] == 'true'
 | 
			
		||||
  Paperclip::Attachment.default_options.merge!(
 | 
			
		||||
    path: ':class/:attachment/:id_partition/:style/:filename',
 | 
			
		||||
    storage: :fog,
 | 
			
		||||
    fog_credentials: {
 | 
			
		||||
      provider: 'OpenStack',
 | 
			
		||||
      openstack_username: ENV.fetch('SWIFT_USERNAME'),
 | 
			
		||||
      openstack_tenant: ENV.fetch('SWIFT_TENANT'),
 | 
			
		||||
      openstack_api_key: ENV.fetch('SWIFT_PASSWORD'),
 | 
			
		||||
      openstack_auth_url: ENV.fetch('SWIFT_AUTH_URL'),
 | 
			
		||||
    },
 | 
			
		||||
    fog_directory: ENV.fetch('SWIFT_CONTAINER'),
 | 
			
		||||
    fog_host: ENV.fetch('SWIFT_OBJECT_URL'),
 | 
			
		||||
    fog_public: true
 | 
			
		||||
  )
 | 
			
		||||
else
 | 
			
		||||
  Paperclip::Attachment.default_options[:path] = (ENV['PAPERCLIP_ROOT_PATH'] || ':rails_root/public/system') + '/:class/:attachment/:id_partition/:style/:filename'
 | 
			
		||||
  Paperclip::Attachment.default_options[:url]  = (ENV['PAPERCLIP_ROOT_URL'] || '/system') + '/:class/:attachment/:id_partition/:style/:filename'
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user