rails_admin_settings 1.4.0 → 1.6.0
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 +4 -4
- data/.gitignore +1 -0
- data/.rakeTasks +7 -0
- data/.travis.yml +15 -4
- data/CHANGELOG.md +13 -0
- data/Gemfile.lock +156 -116
- data/README.md +16 -1
- data/app/models/rails_admin_settings/setting.rb +0 -1
- data/app/views/rails_admin/main/_setting_value.html.haml +1 -2
- data/lib/generators/rails_admin_settings/templates/migration.rb +3 -0
- data/lib/rails_admin_settings.rb +75 -42
- data/lib/rails_admin_settings/determine_mime_type.rb +193 -0
- data/lib/rails_admin_settings/kinds.rb +1 -0
- data/lib/rails_admin_settings/processing.rb +14 -5
- data/lib/rails_admin_settings/rails_admin_config.rb +2 -3
- data/lib/rails_admin_settings/settings.rb +3 -26
- data/lib/rails_admin_settings/storage/shrine_uploader.rb +14 -0
- data/lib/rails_admin_settings/uploads.rb +12 -1
- data/lib/rails_admin_settings/validation.rb +89 -57
- data/lib/rails_admin_settings/version.rb +1 -1
- data/rails_admin_settings.gemspec +6 -2
- data/spec/factories/setting.rb +1 -1
- data/spec/shrine_spec.rb +34 -0
- data/spec/spec_helper.rb +16 -2
- data/spec/support/1024x768.gif +0 -0
- data/spec/types_spec.rb +7 -0
- metadata +66 -8
- data/.ruby-gemset +0 -2
- data/.ruby-version +0 -1
@@ -0,0 +1,14 @@
|
|
1
|
+
module RailsAdminSettings
|
2
|
+
module Uploads
|
3
|
+
class ShrineUploader < Shrine
|
4
|
+
plugin :determine_mime_type
|
5
|
+
plugin :validation_helpers
|
6
|
+
plugin :mongoid if RailsAdminSettings.mongoid?
|
7
|
+
Attacher.validate do
|
8
|
+
validate_mime_type_inclusion %w[image/jpeg image/gif image/png]
|
9
|
+
validate_max_size 2.megabytes
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module RailsAdminSettings
|
2
2
|
module Uploads
|
3
3
|
autoload :CarrierWaveUploader, "rails_admin_settings/storage/carrier_wave_uploader"
|
4
|
+
autoload :ShrineUploader, "rails_admin_settings/storage/shrine_uploader"
|
4
5
|
|
5
6
|
def self.paperclip_options
|
6
7
|
if defined?(Rails)
|
@@ -31,12 +32,22 @@ module RailsAdminSettings
|
|
31
32
|
Settings.file_uploads_supported = true
|
32
33
|
Settings.file_uploads_engine = :paperclip
|
33
34
|
elsif RailsAdminSettings.active_record? && defined?(Paperclip)
|
34
|
-
base.
|
35
|
+
base.has_attached_file(:file, self.paperclip_options)
|
35
36
|
if base.respond_to?(:do_not_validate_attachment_file_type)
|
36
37
|
base.do_not_validate_attachment_file_type :file
|
37
38
|
end
|
38
39
|
Settings.file_uploads_supported = true
|
39
40
|
Settings.file_uploads_engine = :paperclip
|
41
|
+
elsif RailsAdminSettings.active_record? && defined?(Shrine)
|
42
|
+
Settings.file_uploads_supported = true
|
43
|
+
Settings.file_uploads_engine = :shrine
|
44
|
+
base.send(:include, ShrineUploader::Attachment(:file))
|
45
|
+
elsif RailsAdminSettings.mongoid? && ::Mongoid.const_defined?('Shrine')
|
46
|
+
base.send(:include, ::Mongoid::Document)
|
47
|
+
base.send(:include, ShrineUploader::Attachment(:file))
|
48
|
+
base.field(:file_data, type: String)
|
49
|
+
Settings.file_uploads_supported = true
|
50
|
+
Settings.file_uploads_engine = :shrine
|
40
51
|
else
|
41
52
|
# puts "[rails_admin_settings] Uploads disabled"
|
42
53
|
end
|
@@ -1,91 +1,123 @@
|
|
1
1
|
module RailsAdminSettings
|
2
2
|
module Validation
|
3
|
-
|
4
|
-
base
|
5
|
-
|
3
|
+
class << self
|
4
|
+
def included(base)
|
5
|
+
base.before_validation do
|
6
|
+
self.raw = default_serializable_value if raw.blank?
|
7
|
+
end
|
8
|
+
base.before_validation :preprocess_value, if: :preprocessed_kind?
|
9
|
+
base.validates_uniqueness_of :key, scope: :ns
|
10
|
+
base.validates_inclusion_of :kind, in: RailsAdminSettings.kinds
|
11
|
+
base.validates_numericality_of :raw, if: :integer_kind?
|
12
|
+
base.validates_numericality_of :raw, if: :float_kind?
|
13
|
+
|
14
|
+
add_validators(base)
|
6
15
|
end
|
7
|
-
base.before_validation :preprocess_value, if: :preprocessed_kind?
|
8
|
-
base.validates_uniqueness_of :key, scope: :ns
|
9
|
-
base.validates_inclusion_of :kind, in: RailsAdminSettings.kinds
|
10
|
-
base.validates_numericality_of :raw, if: :integer_kind?
|
11
16
|
|
12
|
-
base
|
13
|
-
|
14
|
-
|
15
|
-
|
17
|
+
def add_validators(base)
|
18
|
+
add_color_validator(base)
|
19
|
+
add_file_validator(base)
|
20
|
+
add_email_validator(base)
|
21
|
+
add_url_validator(base)
|
22
|
+
add_phone_validator(base)
|
23
|
+
add_geo_validator(base)
|
24
|
+
add_yaml_validator(base)
|
25
|
+
add_json_validator(base)
|
16
26
|
end
|
17
27
|
|
18
|
-
base
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
28
|
+
def add_color_validator(base)
|
29
|
+
base.validates_with(RailsAdminSettings::HexColorValidator, attributes: :raw, if: :color_kind?)
|
30
|
+
end
|
31
|
+
|
32
|
+
def add_file_validator(base)
|
33
|
+
base.validate if: :file_kind? do
|
34
|
+
unless Settings.file_uploads_supported
|
35
|
+
raise '[rails_admin_settings] File kind requires either CarrierWave or Paperclip or Shrine. Check that rails_admin_settings is below them in Gemfile'
|
26
36
|
end
|
27
37
|
end
|
28
38
|
end
|
29
39
|
|
30
|
-
base
|
31
|
-
|
32
|
-
|
40
|
+
def add_email_validator(base)
|
41
|
+
base.validate if: :email_kind? do
|
42
|
+
require_validates_email_format_of do
|
43
|
+
errors.add(:raw, I18n.t('admin.settings.email_invalid')) unless raw.blank? || ValidatesEmailFormatOf.validate_email_format(raw).nil?
|
44
|
+
end
|
33
45
|
end
|
34
46
|
end
|
35
47
|
|
36
|
-
base
|
37
|
-
|
38
|
-
|
48
|
+
def add_url_validator(base)
|
49
|
+
base.before_validation if: :url_kind? do
|
50
|
+
require_addressable do
|
51
|
+
self.raw = Addressable::URI.heuristic_parse(self.raw) unless self.raw.blank?
|
52
|
+
end
|
39
53
|
end
|
40
|
-
end
|
41
54
|
|
42
|
-
|
43
|
-
|
44
|
-
|
55
|
+
base.before_validation if: :domain_kind? do
|
56
|
+
require_addressable do
|
57
|
+
self.raw = Addressable::URI.heuristic_parse(self.raw).host unless self.raw.blank?
|
58
|
+
end
|
45
59
|
end
|
46
60
|
end
|
47
61
|
|
48
|
-
base
|
49
|
-
|
50
|
-
|
62
|
+
def add_phone_validator(base)
|
63
|
+
base.validate if: :phone_kind? do
|
64
|
+
require_russian_phone do
|
65
|
+
errors.add(:raw, I18n.t('admin.settings.phone_invalid')) unless raw.blank? || RussianPhone::Number.new(raw).valid?
|
66
|
+
end
|
51
67
|
end
|
52
|
-
end
|
53
68
|
|
54
|
-
|
55
|
-
|
56
|
-
|
69
|
+
base.validate if: :phones_kind? do
|
70
|
+
require_russian_phone do
|
71
|
+
unless raw.blank?
|
72
|
+
invalid_phones = raw.gsub("\r", '').split("\n").inject([]) do |memo, value|
|
73
|
+
memo << value unless RussianPhone::Number.new(value).valid?
|
74
|
+
memo
|
75
|
+
end
|
76
|
+
errors.add(:raw, I18n.t('admin.settings.phones_invalid', phones: invalid_phones * ', ')) unless invalid_phones.empty?
|
77
|
+
end
|
78
|
+
end
|
57
79
|
end
|
80
|
+
|
58
81
|
end
|
59
82
|
|
60
|
-
|
61
|
-
if
|
62
|
-
|
63
|
-
|
83
|
+
def add_geo_validator(base)
|
84
|
+
base.validate if: :address_kind? do
|
85
|
+
require_geocoder do
|
86
|
+
# just raise error if we are trying to use address kind without geocoder
|
87
|
+
end
|
88
|
+
end
|
89
|
+
if Object.const_defined?('Geocoder')
|
90
|
+
if RailsAdminSettings.mongoid?
|
91
|
+
base.field(:coordinates, type: Array)
|
92
|
+
base.send(:include, Geocoder::Model::Mongoid)
|
93
|
+
end
|
94
|
+
base.geocoded_by(:raw)
|
95
|
+
base.after_validation(:geocode, if: :address_kind?)
|
64
96
|
end
|
65
|
-
base.geocoded_by(:raw)
|
66
|
-
base.after_validation(:geocode, if: :address_kind?)
|
67
97
|
end
|
68
98
|
|
69
|
-
base
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
99
|
+
def add_yaml_validator(base)
|
100
|
+
base.validate if: :yaml_kind? do
|
101
|
+
require_safe_yaml do
|
102
|
+
unless raw.blank?
|
103
|
+
begin
|
104
|
+
YAML.safe_load(raw)
|
105
|
+
rescue Psych::SyntaxError => e
|
106
|
+
errors.add(:raw, I18n.t('admin.settings.yaml_invalid'))
|
107
|
+
end
|
78
108
|
end
|
79
109
|
end
|
80
110
|
end
|
81
111
|
end
|
82
112
|
|
83
|
-
base
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
113
|
+
def add_json_validator(base)
|
114
|
+
base.validate if: :json_kind? do
|
115
|
+
unless raw.blank?
|
116
|
+
begin
|
117
|
+
JSON.load(raw)
|
118
|
+
rescue JSON::ParserError => e
|
119
|
+
errors.add(:raw, I18n.t('admin.settings.json_invalid'))
|
120
|
+
end
|
89
121
|
end
|
90
122
|
end
|
91
123
|
end
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["glebtv@gmail.com"]
|
11
11
|
spec.description = %q{Mongoid / ActiveRecord + RailsAdmin App Settings management}
|
12
12
|
spec.summary = %q{}
|
13
|
-
spec.homepage = "https://
|
13
|
+
spec.homepage = "https://gitlab.com/rocket-science/rails_admin_settings"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
@@ -36,5 +36,9 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_development_dependency "addressable"
|
37
37
|
spec.add_development_dependency "carrierwave-mongoid"
|
38
38
|
spec.add_development_dependency "mongoid-paperclip"
|
39
|
-
spec.add_development_dependency "
|
39
|
+
spec.add_development_dependency "rubocop-rspec"
|
40
|
+
spec.add_development_dependency 'image_processing'
|
41
|
+
spec.add_development_dependency "mini_magick"
|
42
|
+
spec.add_development_dependency "shrine", "~> 3.0"
|
43
|
+
spec.add_development_dependency "shrine-mongoid", "~> 1.0"
|
40
44
|
end
|
data/spec/factories/setting.rb
CHANGED
data/spec/shrine_spec.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
describe "Uploads" do
|
5
|
+
if Settings.file_uploads_engine != :shrine
|
6
|
+
pending "shrine not detected, skipped. To run use UPLOADS=shrine rspec"
|
7
|
+
else
|
8
|
+
before :each do
|
9
|
+
f = "#{File.dirname(__FILE__)}/../uploads/1024x768.gif"
|
10
|
+
if File.file?(f)
|
11
|
+
File.unlink(f)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
it 'supports file kind' do
|
15
|
+
Settings.set('file', File.open("#{File.dirname(__FILE__)}/support/1024x768.gif"), kind: 'file')
|
16
|
+
expect(Settings.get(:file).file.metadata["filename"]).to eq '1024x768.gif'
|
17
|
+
expect(Settings.get(:file).file.metadata["size"]).to eq 4357
|
18
|
+
expect(Settings.get(:file).file.metadata["mime_type"]).to eq "image/gif"
|
19
|
+
expect(Settings.get(:file).file.id.split(".").last).to eq "gif"
|
20
|
+
expect(Settings.file.split("/").second + "/" + Settings.file.split("/").last.split(".").last).to eq "uploads/gif"
|
21
|
+
expect(File.exists?("public/uploads/#{Settings.get(:file).file.id}")).to be_truthy
|
22
|
+
end
|
23
|
+
it 'supports image kind' do
|
24
|
+
Settings.set('file', File.open("#{File.dirname(__FILE__)}/support/1024x768.gif"), kind: 'image')
|
25
|
+
expect(Settings.get(:file).file.metadata["filename"]).to eq '1024x768.gif'
|
26
|
+
expect(Settings.get(:file).file.metadata["size"]).to eq 4357
|
27
|
+
expect(Settings.get(:file).file.metadata["mime_type"]).to eq "image/gif"
|
28
|
+
expect(Settings.get(:file).file.id.split(".").last).to eq "gif"
|
29
|
+
expect(Settings.file.split("/").second + "/" + Settings.file.split("/").last.split(".").last).to eq "uploads/gif"
|
30
|
+
expect(File.exists?("public/uploads/#{Settings.get(:file).file.id}")).to be_truthy
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
data/spec/spec_helper.rb
CHANGED
@@ -5,7 +5,6 @@ require 'rubygems'
|
|
5
5
|
require 'simplecov'
|
6
6
|
SimpleCov.start
|
7
7
|
|
8
|
-
require 'pry'
|
9
8
|
require 'bundler/setup'
|
10
9
|
require 'active_support'
|
11
10
|
require 'active_support/core_ext'
|
@@ -18,7 +17,6 @@ require 'database_cleaner'
|
|
18
17
|
require 'factory_bot'
|
19
18
|
require 'mongoid-rspec'
|
20
19
|
|
21
|
-
p ENV["UPLOADS"]
|
22
20
|
if ENV['UPLOADS'] == 'paperclip'
|
23
21
|
require "mongoid-paperclip"
|
24
22
|
end
|
@@ -30,6 +28,22 @@ if ENV['UPLOADS'] == 'carrierwave'
|
|
30
28
|
end
|
31
29
|
end
|
32
30
|
end
|
31
|
+
if ENV['UPLOADS'] == 'shrine'
|
32
|
+
require "shrine"
|
33
|
+
require "shrine/storage/file_system"
|
34
|
+
Shrine.storages = {
|
35
|
+
cache: Shrine::Storage::FileSystem.new("public", prefix: "uploads/cache"), # temporary
|
36
|
+
store: Shrine::Storage::FileSystem.new("public", prefix: "uploads"), # permanent
|
37
|
+
}
|
38
|
+
|
39
|
+
if ENV['ACTIVERECORD']
|
40
|
+
Shrine.plugin :activerecord
|
41
|
+
end
|
42
|
+
Shrine.plugin :cached_attachment_data # for retaining the cached file across form redisplays
|
43
|
+
Shrine.plugin :restore_cached_data # re-extract metadata when attaching a cached file
|
44
|
+
end
|
45
|
+
|
46
|
+
|
33
47
|
|
34
48
|
I18n.enforce_available_locales = true
|
35
49
|
I18n.load_path << File.join(File.dirname(__FILE__), "..", "config", "locales", "en.yml")
|
data/spec/support/1024x768.gif
CHANGED
File without changes
|
data/spec/types_spec.rb
CHANGED
@@ -23,6 +23,13 @@ describe 'Settings kind' do
|
|
23
23
|
expect(Settings.testint2).to eq 5
|
24
24
|
end
|
25
25
|
|
26
|
+
it 'float' do
|
27
|
+
expect(Settings.get(:testfloat, kind: 'float').value).to eq 0
|
28
|
+
expect(Settings.get(:testfloat, default: 5.2, kind: 'float').value).to eq 0
|
29
|
+
expect(Settings.get(:testfloat2, default: 5.5, kind: 'float').value).to eq 5.5
|
30
|
+
expect(Settings.testfloat2).to eq 5.5
|
31
|
+
end
|
32
|
+
|
26
33
|
it 'does yaml' do
|
27
34
|
Settings.set(:data, '[one, two, three]', kind: 'yaml')
|
28
35
|
expect(Settings.get(:data).raw).to eq '[one, two, three]'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_admin_settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gleb Tv
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mongoid
|
@@ -249,7 +249,7 @@ dependencies:
|
|
249
249
|
- !ruby/object:Gem::Version
|
250
250
|
version: '0'
|
251
251
|
- !ruby/object:Gem::Dependency
|
252
|
-
name:
|
252
|
+
name: rubocop-rspec
|
253
253
|
requirement: !ruby/object:Gem::Requirement
|
254
254
|
requirements:
|
255
255
|
- - ">="
|
@@ -262,6 +262,62 @@ dependencies:
|
|
262
262
|
- - ">="
|
263
263
|
- !ruby/object:Gem::Version
|
264
264
|
version: '0'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: image_processing
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - ">="
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '0'
|
272
|
+
type: :development
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '0'
|
279
|
+
- !ruby/object:Gem::Dependency
|
280
|
+
name: mini_magick
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - ">="
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '0'
|
286
|
+
type: :development
|
287
|
+
prerelease: false
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
289
|
+
requirements:
|
290
|
+
- - ">="
|
291
|
+
- !ruby/object:Gem::Version
|
292
|
+
version: '0'
|
293
|
+
- !ruby/object:Gem::Dependency
|
294
|
+
name: shrine
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
296
|
+
requirements:
|
297
|
+
- - "~>"
|
298
|
+
- !ruby/object:Gem::Version
|
299
|
+
version: '3.0'
|
300
|
+
type: :development
|
301
|
+
prerelease: false
|
302
|
+
version_requirements: !ruby/object:Gem::Requirement
|
303
|
+
requirements:
|
304
|
+
- - "~>"
|
305
|
+
- !ruby/object:Gem::Version
|
306
|
+
version: '3.0'
|
307
|
+
- !ruby/object:Gem::Dependency
|
308
|
+
name: shrine-mongoid
|
309
|
+
requirement: !ruby/object:Gem::Requirement
|
310
|
+
requirements:
|
311
|
+
- - "~>"
|
312
|
+
- !ruby/object:Gem::Version
|
313
|
+
version: '1.0'
|
314
|
+
type: :development
|
315
|
+
prerelease: false
|
316
|
+
version_requirements: !ruby/object:Gem::Requirement
|
317
|
+
requirements:
|
318
|
+
- - "~>"
|
319
|
+
- !ruby/object:Gem::Version
|
320
|
+
version: '1.0'
|
265
321
|
description: Mongoid / ActiveRecord + RailsAdmin App Settings management
|
266
322
|
email:
|
267
323
|
- glebtv@gmail.com
|
@@ -270,9 +326,8 @@ extensions: []
|
|
270
326
|
extra_rdoc_files: []
|
271
327
|
files:
|
272
328
|
- ".gitignore"
|
329
|
+
- ".rakeTasks"
|
273
330
|
- ".rspec"
|
274
|
-
- ".ruby-gemset"
|
275
|
-
- ".ruby-version"
|
276
331
|
- ".travis.yml"
|
277
332
|
- CHANGELOG.md
|
278
333
|
- Gemfile
|
@@ -290,6 +345,7 @@ files:
|
|
290
345
|
- lib/generators/rails_admin_settings/migration_generator.rb
|
291
346
|
- lib/generators/rails_admin_settings/templates/migration.rb
|
292
347
|
- lib/rails_admin_settings.rb
|
348
|
+
- lib/rails_admin_settings/determine_mime_type.rb
|
293
349
|
- lib/rails_admin_settings/dumper.rb
|
294
350
|
- lib/rails_admin_settings/engine.rb
|
295
351
|
- lib/rails_admin_settings/fallback.rb
|
@@ -302,6 +358,7 @@ files:
|
|
302
358
|
- lib/rails_admin_settings/require_helpers.rb
|
303
359
|
- lib/rails_admin_settings/settings.rb
|
304
360
|
- lib/rails_admin_settings/storage/carrier_wave_uploader.rb
|
361
|
+
- lib/rails_admin_settings/storage/shrine_uploader.rb
|
305
362
|
- lib/rails_admin_settings/tasks.rb
|
306
363
|
- lib/rails_admin_settings/uploads.rb
|
307
364
|
- lib/rails_admin_settings/validation.rb
|
@@ -320,6 +377,7 @@ files:
|
|
320
377
|
- spec/namespaced_spec.rb
|
321
378
|
- spec/paperclip_spec.rb
|
322
379
|
- spec/settings_spec.rb
|
380
|
+
- spec/shrine_spec.rb
|
323
381
|
- spec/spec_helper.rb
|
324
382
|
- spec/support/1024x768.gif
|
325
383
|
- spec/support/database_cleaner.rb
|
@@ -328,7 +386,7 @@ files:
|
|
328
386
|
- spec/support/mongoid.rb
|
329
387
|
- spec/support/mongoid.yml
|
330
388
|
- spec/types_spec.rb
|
331
|
-
homepage: https://
|
389
|
+
homepage: https://gitlab.com/rocket-science/rails_admin_settings
|
332
390
|
licenses:
|
333
391
|
- MIT
|
334
392
|
metadata: {}
|
@@ -347,8 +405,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
347
405
|
- !ruby/object:Gem::Version
|
348
406
|
version: '0'
|
349
407
|
requirements: []
|
350
|
-
|
351
|
-
rubygems_version: 2.7.6
|
408
|
+
rubygems_version: 3.1.2
|
352
409
|
signing_key:
|
353
410
|
specification_version: 4
|
354
411
|
summary: ''
|
@@ -365,6 +422,7 @@ test_files:
|
|
365
422
|
- spec/namespaced_spec.rb
|
366
423
|
- spec/paperclip_spec.rb
|
367
424
|
- spec/settings_spec.rb
|
425
|
+
- spec/shrine_spec.rb
|
368
426
|
- spec/spec_helper.rb
|
369
427
|
- spec/support/1024x768.gif
|
370
428
|
- spec/support/database_cleaner.rb
|