Move image upload to S3

This commit is contained in:
Pranav Raj Sreepuram 2019-08-18 01:53:55 +05:30
parent 2b6c7a4025
commit e743abd867
7 changed files with 82 additions and 60 deletions

5
.gitignore vendored
View file

@ -29,3 +29,8 @@ node_modules
# Ignore env files # Ignore env files
.env .env
# Ignore application config file
config/application.yml
public/uploads

View file

@ -40,8 +40,6 @@ gem 'chargebee', '~>2'
gem 'poltergeist' gem 'poltergeist'
gem 'phantomjs', :require => 'phantomjs/poltergeist' gem 'phantomjs', :require => 'phantomjs/poltergeist'
gem 'time_diff' gem 'time_diff'
gem 'fog-digitalocean'
gem 'fog-aws'
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem # Windows does not include zoneinfo files, so bundle the tzinfo-data gem

View file

@ -118,7 +118,6 @@ GEM
equalizer (0.0.11) equalizer (0.0.11)
erubis (2.7.0) erubis (2.7.0)
eventmachine (1.0.9.1) eventmachine (1.0.9.1)
excon (0.62.0)
execjs (2.7.0) execjs (2.7.0)
facebook-messenger (0.11.1) facebook-messenger (0.11.1)
httparty (~> 0.13, >= 0.13.7) httparty (~> 0.13, >= 0.13.7)
@ -128,30 +127,8 @@ GEM
ffi (1.9.18) ffi (1.9.18)
figaro (1.1.1) figaro (1.1.1)
thor (~> 0.14) thor (~> 0.14)
fog-aws (3.3.0)
fog-core (~> 2.1)
fog-json (~> 1.1)
fog-xml (~> 0.1)
ipaddress (~> 0.8)
fog-core (2.1.2)
builder
excon (~> 0.58)
formatador (~> 0.2)
mime-types
fog-digitalocean (0.4.0)
fog-core
fog-json
fog-xml
ipaddress (>= 0.5)
fog-json (1.2.0)
fog-core
multi_json (~> 1.10)
fog-xml (0.1.3)
fog-core
nokogiri (>= 1.5.11, < 2.0.0)
foreman (0.85.0) foreman (0.85.0)
thor (~> 0.19.1) thor (~> 0.19.1)
formatador (0.2.5)
globalid (0.4.0) globalid (0.4.0)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
haml (4.0.7) haml (4.0.7)
@ -165,7 +142,6 @@ GEM
i18n (0.9.5) i18n (0.9.5)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
ice_nine (0.11.2) ice_nine (0.11.2)
ipaddress (0.8.3)
jaro_winkler (1.5.3) jaro_winkler (1.5.3)
jbuilder (2.6.3) jbuilder (2.6.3)
activesupport (>= 3.0.0, < 5.2) activesupport (>= 3.0.0, < 5.2)
@ -430,8 +406,6 @@ DEPENDENCIES
devise_token_auth devise_token_auth
facebook-messenger (~> 0.11.1) facebook-messenger (~> 0.11.1)
figaro figaro
fog-aws
fog-digitalocean
foreman foreman
hashie hashie
jbuilder (~> 2.5) jbuilder (~> 2.5)

View file

@ -2,10 +2,22 @@
## Build Setup ## Build Setup
``` bash
# install JS dependencies
yarn install
### Install JS dependencies
``` bash
yarn install
```
### Install ImageMagik
```bash
brew install imagemagick
```
### Setup rails server
```bash
# install ruby dependencies # install ruby dependencies
bundle bundle

View file

@ -1,20 +1,31 @@
require 'carrierwave/storage/fog'
CarrierWave.configure do |config| CarrierWave.configure do |config|
config.storage = :fog config.storage = :aws
config.fog_provider = 'fog/aws' # required config.aws_bucket = ENV['S3_BUCKET_NAME']
config.aws_acl = 'authenticated-read'
config.fog_credentials = { # Optionally define an asset host for configurations that are fronted by a
provider: 'AWS', # content host, such as CloudFront.
aws_access_key_id: 'IAHIHAUVZKNOVTFZGWVT', # required #config.asset_host = 'http://example.com'
aws_secret_access_key: 'TNah2bj4p7o5pKbFIqeVAma32pnnXER1r5m7LZvXXFM', # required
region: 'sfo2', # required # The maximum period for authenticated_urls is only 7 days.
endpoint: 'https://sfo2.digitaloceanspaces.com' # required config.aws_authenticated_url_expiration = 60 * 60 * 24 * 7
# Set custom options such as cache control to leverage browser caching
config.aws_attributes = {
expires: 1.week.from_now.httpdate,
cache_control: 'max-age=604800'
} }
config.storage = :fog config.aws_credentials = {
config.fog_directory = 'chatwoot' # required access_key_id: ENV['AWS_ACCESS_KEY_ID'],
# config.fog_public = false # optional, defaults to true secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
config.asset_host = "https://chatwoot.sfo2.digitaloceanspaces.com" region: ENV['AWS_REGION'] # Required
config.fog_attributes = { 'Cache-Control' => 'max-age=315576000' } # optional, defaults to {} }
# Optional: Signing of download urls, e.g. for serving private content through
# CloudFront. Be sure you have the `cloudfront-signer` gem installed and
# configured:
# config.aws_signer = -> (unsigned_url, options) do
# Aws::CF::Signer.sign_url(unsigned_url, options)
# end
end end

View file

@ -0,0 +1,35 @@
#pusher
pusher_app_id: ''
pusher_key: ''
pusher_secret: ''
pusher_cluster: ''
#fb app
fb_verify_token: ''
fb_app_secret: ''
fb_app_id: ''
#ses
ses_address:
ses_username:
ses_password:
#misc
frontend_url: ''
#s3
S3_BUCKET_NAME: ''
AWS_ACCESS_KEY_ID:
AWS_SECRET_ACCESS_KEY:
AWS_REGION: ''
#chargebee
CHARGEBEE_API_KEY: ''
CHARGEBEE_SITE: ''
#sentry
SENTRY_DSN: ''

View file

@ -4396,11 +4396,6 @@ lodash._reinterpolate@~3.0.0:
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
lodash.defaults@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=
lodash.get@^4.0: lodash.get@^4.0:
version "4.4.2" version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
@ -6229,14 +6224,6 @@ querystringify@^2.1.1:
resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==
rails-erb-loader@^5.5.2:
version "5.5.2"
resolved "https://registry.yarnpkg.com/rails-erb-loader/-/rails-erb-loader-5.5.2.tgz#db3fa8ac89600f09d179a1a70a2ca18c592576ea"
integrity sha512-cjQH9SuSvRPhnWkvjmmAW/S4AFVDfAtYnQO4XpKJ8xpRdZayT73iXoE+IPc3VzN03noZXhVmyvsCvKvHj4LY6w==
dependencies:
loader-utils "^1.1.0"
lodash.defaults "^4.2.0"
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"