active_storage_base64 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36dfcca56fbad7ca9bb0d860b2d192d1ac6fd78b49e82e3056e271de47e52103
4
- data.tar.gz: b9919fc691756b718216656cd8bf58e6a8a4b2c02f27946ba828caa854233161
3
+ metadata.gz: 3f06ab3b77fc8bc3dd993d1313ad0136d2ab2bdf6a776a0dc7414c5af9fd75c3
4
+ data.tar.gz: 5f00568a8b09f02018bb6049203d4a02ffaca06ba7769ac04b8c001e0061fa2b
5
5
  SHA512:
6
- metadata.gz: fbf1cf11a8b1decc8a12c5af113a75fc5ad17b9c8fd2b2190e4252f160bcdc6dc0790ed178b4b6d5230ba18730aef279c1e7e22239feb183c090f71b48b11287
7
- data.tar.gz: ce40b3239c679243468cfcd93e45ae1d8b825a123bda0dcc5989a2ec3693fc286971f02feabbaf42cfe3ae1058d00caf4182686e02b9a71bfcb650df2e8fc1af
6
+ metadata.gz: 74e9c1008d1f9dad166133f44014ae715d779eca9d03d1177d4923de2d54db4389840756fac7aadcd09f87beb0eae8b0603f39f520660dc380313557f245107f
7
+ data.tar.gz: cdc6293595a7187c91b2543bc67893ba05b605506072686002e123f02ad47d671876399d16acfa26fe1bcea7dfd17c8723db895dac9f23198de5f8d20ea1dead
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  Gemfile.lock
2
2
  spec/dummy/log
3
3
  spec/dummy/db/**.sqlite3
4
+ /coverage/
data/.travis.yml CHANGED
@@ -12,6 +12,18 @@ rvm:
12
12
 
13
13
  sudo: false
14
14
 
15
+ env:
16
+ global:
17
+ - CC_TEST_REPORTER_ID=7196b4aa257fde33f24463218af32db6a6efd23d9148204822f757fa614a093e
18
+
19
+ before_script:
20
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
21
+ - chmod +x ./cc-test-reporter
22
+ - ./cc-test-reporter before-build
23
+
15
24
  script:
16
25
  - bundle exec rake code_analysis
17
26
  - bundle exec rspec
27
+
28
+ after_script:
29
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  [![Build Status](https://travis-ci.org/rootstrap/active-storage-base64.svg?branch=master)](https://travis-ci.org/rootstrap/active-storage-base64)
2
2
  [![Maintainability](https://api.codeclimate.com/v1/badges/0da0a0901cedd72aeb10/maintainability)](https://codeclimate.com/github/rootstrap/active-storage-base64/maintainability)
3
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/0da0a0901cedd72aeb10/test_coverage)](https://codeclimate.com/github/rootstrap/active-storage-base64/test_coverage)
3
4
 
4
5
  # ActiveStorageBase64
5
6
 
@@ -67,22 +68,7 @@ on your controller you could do something like this:
67
68
  class UsersController < ApplicationController
68
69
  def create
69
70
  user = User.create(user_params)
70
- end
71
-
72
- private
73
-
74
- def user_params
75
- params.require(:user).permit(:avatar[data:], :username, :email)
76
- end
77
- end
78
- ```
79
-
80
- Or you could also do:
81
- ```ruby
82
- class UsersController < ApplicationController
83
- def create
84
- user = User.create(user_params)
85
- user.avatar.attach(params[:avatar])
71
+ user.avatar.attach(data: params[:avatar])
86
72
  end
87
73
 
88
74
  private
@@ -98,7 +84,7 @@ Here's another option to achieve the same:
98
84
  class UsersController < ApplicationController
99
85
  def create
100
86
  user = User.create(user_params)
101
- user.avatar = params[:avatar]
87
+ user.avatar = { data: params[:avatar] }
102
88
  end
103
89
 
104
90
  private
@@ -127,23 +113,6 @@ class UsersController < ApplicationController
127
113
  end
128
114
  end
129
115
  ```
130
- Or, in case you want to have the avatar attached as soon as the user is created you can do:
131
- ```ruby
132
- class UsersController < ApplicationController
133
- def create
134
- user = User.create(user_params)
135
- end
136
-
137
- private
138
-
139
- def user_params
140
- params.require(:user).permit(:username, :email, avatar:[:data,
141
- :filename,
142
- :content_type,
143
- :identify])
144
- end
145
- end
146
- ```
147
116
 
148
117
  For more information on how to work with ActiveStorage, please check the [Active Storage Overview](https://edgeguides.rubyonrails.org/active_storage_overview.html) mentioned above, all points in there apply to this gem as well.
149
118
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'active_storage_base64'
3
- s.version = '0.1.1'
3
+ s.version = '0.1.2'
4
4
  s.summary = 'Base64 support for ActiveStorage'
5
5
  s.description = s.summary
6
6
 
@@ -25,4 +25,5 @@ Gem::Specification.new do |s|
25
25
  s.add_development_dependency 'rspec-rails', '~> 3.8.0'
26
26
  s.add_development_dependency 'sqlite3', '1.3.13'
27
27
  s.add_development_dependency 'pry-rails', '~> 0.3.6'
28
+ s.add_development_dependency 'simplecov'
28
29
  end
data/config.reek CHANGED
@@ -9,10 +9,10 @@ ClassVariable:
9
9
  exclude: []
10
10
  ControlParameter:
11
11
  enabled: true
12
- exclude: []
12
+ exclude: ['ActiveStorageSupport::SupportForBase64#add_helper_method']
13
13
  DataClump:
14
14
  enabled: true
15
- exclude: []
15
+ exclude: ['ActiveStorageSupport::SupportForBase64']
16
16
  max_copies: 2
17
17
  min_clump_size: 2
18
18
  DuplicateMethodCall:
@@ -4,17 +4,17 @@ module ActiveStorageSupport
4
4
  module_function
5
5
 
6
6
  def attachment_from_data(attachment)
7
- if attachment.is_a?(Hash)
8
- base64_data = attachment.delete(:data)
9
- if base64_data.try(:is_a?, String) && base64_data =~ /^data:(.*?);(.*?),(.*)$/
10
-
11
- attachment[:io] = StringIO.new(Base64.decode64(Regexp.last_match(3)))
12
- attachment[:content_type] = Regexp.last_match(1) unless attachment[:content_type]
13
- attachment[:filename] = Time.current.to_i.to_s unless attachment[:filename]
14
- end
15
- end
7
+ fill_attachment_data(attachment, attachment.delete(:data)) if attachment.is_a?(Hash)
16
8
 
17
9
  attachment
18
10
  end
11
+
12
+ def fill_attachment_data(attachment, base64_data)
13
+ return unless base64_data.try(:is_a?, String) && base64_data =~ /^data:(.*?);(.*?),(.*)$/
14
+
15
+ attachment[:io] = StringIO.new(Base64.decode64(Regexp.last_match(3)))
16
+ attachment[:content_type] ||= Regexp.last_match(1)
17
+ attachment[:filename] ||= Time.current.to_i.to_s
18
+ end
19
19
  end
20
20
  end
@@ -8,29 +8,24 @@ module ActiveStorageSupport
8
8
  def has_one_base64_attached(name, dependent: :purge_later)
9
9
  has_one_attached name, dependent: dependent
10
10
 
11
- class_eval <<-CODE, __FILE__, __LINE__ + 1
12
- def #{name}
13
- @active_storage_attached_#{name} ||=
14
- ActiveStorageSupport::Base64One.new("#{name}", self, dependent: #{dependent == :purge_later ? ':purge_later' : 'false'})
15
- end
16
-
17
- def #{name}=(data)
18
- #{name}.attach(data)
19
- end
20
- CODE
11
+ add_helper_method(ActiveStorageSupport::Base64One, name, dependent: dependent)
21
12
  end
22
13
 
23
14
  def has_many_base64_attached(name, dependent: :purge_later)
24
15
  has_many_attached name, dependent: dependent
25
16
 
17
+ add_helper_method(ActiveStorageSupport::Base64Many, name, dependent: dependent)
18
+ end
19
+
20
+ def add_helper_method(type, name, dependent:)
26
21
  class_eval <<-CODE, __FILE__, __LINE__ + 1
27
22
  def #{name}
28
23
  @active_storage_attached_#{name} ||=
29
- ActiveStorageSupport::Base64Many.new("#{name}", self, dependent: #{dependent == :purge_later ? ':purge_later' : 'false'})
24
+ #{type}.new("#{name}", self, dependent: #{dependent == :purge_later ? ':purge_later' : 'false'})
30
25
  end
31
26
 
32
- def #{name}=(attachables)
33
- #{name}.attach(attachables)
27
+ def #{name}=(data)
28
+ #{name}.attach(data)
34
29
  end
35
30
  CODE
36
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_storage_base64
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo Cortio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-03 00:00:00.000000000 Z
11
+ date: 2019-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -100,6 +100,20 @@ dependencies:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
102
  version: 0.3.6
103
+ - !ruby/object:Gem::Dependency
104
+ name: simplecov
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
103
117
  description: Base64 support for ActiveStorage
104
118
  email: ricardo@rootstrap.com
105
119
  executables: []