rails_admin_settings 0.5.3 → 0.5.4
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/.rspec +0 -0
- data/.travis.yml +15 -0
- data/README.md +1 -1
- data/Rakefile +0 -0
- data/app/models/rails_admin_settings/setting.rb +0 -1
- data/app/views/rails_admin/main/_setting_value.html.haml +0 -0
- data/config/locales/en.rails_admin_settings.yml +0 -0
- data/config/locales/ru.rails_admin_settings.yml +0 -0
- data/gemfiles/mongoid-3.0.gemfile +6 -0
- data/gemfiles/mongoid-3.1.gemfile +5 -0
- data/gemfiles/mongoid-4.0.gemfile +5 -0
- data/lib/rails_admin_settings/engine.rb +0 -0
- data/lib/rails_admin_settings/hex_color_validator.rb +0 -0
- data/lib/rails_admin_settings/processing.rb +10 -2
- data/lib/rails_admin_settings/rails_admin_config.rb +0 -0
- data/lib/rails_admin_settings/require_helpers.rb +0 -0
- data/lib/rails_admin_settings/settings.rb +62 -30
- data/lib/rails_admin_settings/storage/carrierwave.rb +0 -0
- data/lib/rails_admin_settings/types.rb +1 -1
- data/lib/rails_admin_settings/uploads.rb +8 -4
- data/lib/rails_admin_settings/validation.rb +0 -0
- data/lib/rails_admin_settings/version.rb +1 -1
- data/lib/rails_admin_settings.rb +0 -0
- data/rails_admin_settings.gemspec +3 -0
- data/spec/advanced_usage_spec.rb +0 -0
- data/spec/carrierwave_spec.rb +36 -0
- data/spec/database_trickery_spec.rb +0 -0
- data/spec/factories/setting.rb +0 -0
- data/spec/model_spec.rb +0 -0
- data/spec/paperclip_spec.rb +34 -0
- data/spec/settings_spec.rb +0 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/support/1024x768.gif +0 -0
- data/spec/support/database_cleaner.rb +0 -0
- data/spec/support/mongoid.rb +0 -0
- data/spec/support/mongoid.yml +0 -0
- data/spec/types_spec.rb +0 -0
- metadata +40 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04813caf7297c8963bfeb2ef852f48b59bad20e0
|
4
|
+
data.tar.gz: e7f5313d59b0d98ee04fd229f9cf3667b6050e06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f4d2ab7a2e3d31fa5f40bc52e61fc6ba8429d64068a2ab6fe033224937b701458ad454e18e3e2aba672415a3fcdc8c129c2d38270af5fa945578abad0367a50
|
7
|
+
data.tar.gz: df8efddcdcce6daf6a99ec0759e98e2747abed205b06df39b562ca5c4cc1215336078efb06e181627359cf915e6d5244b036601705622d0dcc3486798ebb101f
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
File without changes
|
data/.travis.yml
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
language: ruby
|
2
2
|
services: mongodb
|
3
|
+
|
4
|
+
notifications:
|
5
|
+
email: false
|
6
|
+
|
3
7
|
rvm:
|
4
8
|
- 1.9.3
|
9
|
+
- 2.0.0
|
10
|
+
- jruby-19mode
|
11
|
+
|
12
|
+
env:
|
13
|
+
- "UPLOADS=paperclip"
|
14
|
+
- "UPLOADS=carrierwave"
|
5
15
|
|
16
|
+
gemfile:
|
17
|
+
- Gemfile
|
18
|
+
- gemfiles/mongoid-3.0.gemfile
|
19
|
+
- gemfiles/mongoid-3.1.gemfile
|
20
|
+
- gemfiles/mongoid-4.0.gemfile
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
[](http://travis-ci.org/rs-pro/rails_admin_settings)
|
4
4
|
[](https://gemnasium.com/rs-pro/rails_admin_settings)
|
5
5
|
|
6
|
-
Note: This gem currently supports Mongoid only, as I don't need AR support.
|
6
|
+
Note: This gem currently supports Mongoid 3/4 only, as I don't need AR support.
|
7
7
|
|
8
8
|
Pull request with AR support will be welcome
|
9
9
|
|
data/Rakefile
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -10,13 +10,21 @@ module RailsAdminSettings
|
|
10
10
|
(RailsAdminSettings.types - ['phone', 'integer', 'yaml']).include? type
|
11
11
|
end
|
12
12
|
|
13
|
+
def upload_type?
|
14
|
+
['file', 'image'].include? type
|
15
|
+
end
|
16
|
+
|
13
17
|
def html_type?
|
14
18
|
['html', 'sanitized'].include? type
|
15
19
|
end
|
16
20
|
|
17
21
|
def value
|
18
|
-
if
|
19
|
-
file
|
22
|
+
if upload_type?
|
23
|
+
if file?
|
24
|
+
file.url
|
25
|
+
else
|
26
|
+
nil
|
27
|
+
end
|
20
28
|
elsif raw.blank? || disabled?
|
21
29
|
default_value
|
22
30
|
else
|
File without changes
|
File without changes
|
@@ -1,32 +1,39 @@
|
|
1
|
+
require 'thread'
|
2
|
+
|
1
3
|
class Settings
|
2
4
|
cattr_accessor :file_uploads_supported, :file_uploads_engine, :settings
|
3
5
|
@@file_uploads_supported = false
|
4
6
|
@@file_uploads_engine = false
|
7
|
+
@@mutex = Mutex.new
|
5
8
|
|
6
9
|
class << self
|
7
10
|
@@loaded = false
|
8
11
|
@@settings = {}
|
9
12
|
|
10
13
|
def load!
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
@@mutex.synchronize do
|
15
|
+
if @@loaded
|
16
|
+
false
|
17
|
+
else
|
18
|
+
@@settings = {}
|
19
|
+
RailsAdminSettings::Setting.all.each do |setting|
|
20
|
+
@@settings[setting.key] = setting
|
21
|
+
end
|
22
|
+
@@loaded = true
|
23
|
+
true
|
17
24
|
end
|
18
|
-
@@loaded = true
|
19
|
-
true
|
20
25
|
end
|
21
26
|
end
|
22
27
|
|
23
28
|
def unload!
|
24
|
-
|
25
|
-
@@
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
29
|
+
@@mutex.synchronize do
|
30
|
+
if @@loaded
|
31
|
+
@@settings = {}
|
32
|
+
@@loaded = false
|
33
|
+
true
|
34
|
+
else
|
35
|
+
false
|
36
|
+
end
|
30
37
|
end
|
31
38
|
end
|
32
39
|
|
@@ -54,12 +61,29 @@ class Settings
|
|
54
61
|
value = value.to_yaml
|
55
62
|
end
|
56
63
|
|
64
|
+
is_file = !options[:type].nil? && (options[:type] == 'image' || options[:type] == 'file')
|
65
|
+
if is_file
|
66
|
+
options[:raw] = ''
|
67
|
+
else
|
68
|
+
options[:raw] = value
|
69
|
+
end
|
70
|
+
|
57
71
|
if @@settings[key].nil?
|
58
|
-
write_to_database(key, options.merge(key: key
|
72
|
+
write_to_database(key, options.merge(key: key))
|
59
73
|
else
|
60
|
-
@@
|
61
|
-
|
74
|
+
@@mutex.synchronize do
|
75
|
+
@@settings[key].update_attributes!(options)
|
76
|
+
end
|
62
77
|
end
|
78
|
+
|
79
|
+
if is_file
|
80
|
+
@@mutex.synchronize do
|
81
|
+
@@settings[key].file = value
|
82
|
+
@@settings[key].save!
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
@@settings[key]
|
63
87
|
end
|
64
88
|
|
65
89
|
def valid_yaml?(value)
|
@@ -100,6 +124,7 @@ class Settings
|
|
100
124
|
load!
|
101
125
|
key = key.to_s
|
102
126
|
options.merge!(default: value)
|
127
|
+
|
103
128
|
if @@settings[key].nil?
|
104
129
|
create_setting(key, options).val
|
105
130
|
else
|
@@ -116,6 +141,7 @@ class Settings
|
|
116
141
|
key = key.to_s
|
117
142
|
options.symbolize_keys!
|
118
143
|
options[:raw] = options.delete(:default)
|
144
|
+
|
119
145
|
if @@settings[key].nil?
|
120
146
|
write_to_database(key, options.merge(key: key))
|
121
147
|
else
|
@@ -139,9 +165,12 @@ class Settings
|
|
139
165
|
def destroy!(key)
|
140
166
|
load!
|
141
167
|
key = key.to_s
|
142
|
-
|
143
|
-
|
144
|
-
@@settings.
|
168
|
+
|
169
|
+
@@mutex.synchronize do
|
170
|
+
unless @@settings[key].nil?
|
171
|
+
@@settings[key].destroy
|
172
|
+
@@settings.delete(key)
|
173
|
+
end
|
145
174
|
end
|
146
175
|
end
|
147
176
|
|
@@ -153,20 +182,23 @@ class Settings
|
|
153
182
|
|
154
183
|
def write_to_database(key, options)
|
155
184
|
key = key.to_s
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
if
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
185
|
+
|
186
|
+
@@mutex.synchronize do
|
187
|
+
@@settings[key] = RailsAdminSettings::Setting.create(options)
|
188
|
+
unless @@settings[key].persisted?
|
189
|
+
if @@settings[key].errors[:key].any?
|
190
|
+
@@settings[key] = RailsAdminSettings::Setting.where(key: key).first
|
191
|
+
if options[:raw].blank? && !@@settings[key].blank?
|
192
|
+
# do not update setting if it's not blank in DB and we want to make it blank
|
193
|
+
else
|
194
|
+
unless @@settings[key].update_attributes(options)
|
195
|
+
raise RailsAdminSettings::PersistenceException
|
196
|
+
end
|
165
197
|
end
|
166
198
|
end
|
167
199
|
end
|
200
|
+
@@settings[key]
|
168
201
|
end
|
169
|
-
@@settings[key]
|
170
202
|
end
|
171
203
|
|
172
204
|
def label key
|
File without changes
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module RailsAdminSettings
|
2
2
|
def self.types
|
3
|
-
['string', 'integer', 'html', 'sanitized', 'yaml', 'phone', 'email', 'address', 'file', 'url', 'domain', 'color']
|
3
|
+
['string', 'integer', 'html', 'sanitized', 'yaml', 'phone', 'email', 'address', 'file', 'image', 'url', 'domain', 'color']
|
4
4
|
end
|
5
5
|
end
|
@@ -5,7 +5,7 @@ module RailsAdminSettings
|
|
5
5
|
def self.included(base)
|
6
6
|
# carrierwave
|
7
7
|
if base.respond_to?(:mount_uploader)
|
8
|
-
|
8
|
+
puts "[rails_admin_settings] CarrierWave detected"
|
9
9
|
# base.field(:file, type: String)
|
10
10
|
base.mount_uploader(:file, RailsAdminSettings::Uploads::CarrierWave)
|
11
11
|
Settings.file_uploads_supported = true
|
@@ -13,16 +13,20 @@ module RailsAdminSettings
|
|
13
13
|
# paperclip
|
14
14
|
elsif Mongoid.const_defined?('Paperclip')
|
15
15
|
base.send(:include, Mongoid::Paperclip)
|
16
|
-
|
16
|
+
puts "[rails_admin_settings] PaperClip detected"
|
17
17
|
base.field(:file, type: String)
|
18
|
-
|
18
|
+
if defined?(Rails)
|
19
|
+
base.has_mongoid_attached_file(:file)
|
20
|
+
else
|
21
|
+
base.has_mongoid_attached_file(:file, path: "#{File.dirname(__FILE__)}/../../uploads/:filename", url: '/uploads/:filename')
|
22
|
+
end
|
19
23
|
base.send(:attr_accessor, :delete_file)
|
20
24
|
base.before_validation { self.file.clear if self.delete_file == '1' }
|
21
25
|
|
22
26
|
Settings.file_uploads_supported = true
|
23
27
|
Settings.file_uploads_engine = :paperclip
|
24
28
|
else
|
25
|
-
|
29
|
+
puts "[rails_admin_settings] Uploads disabled"
|
26
30
|
end
|
27
31
|
end
|
28
32
|
end
|
File without changes
|
data/lib/rails_admin_settings.rb
CHANGED
File without changes
|
@@ -34,4 +34,7 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_development_dependency "validates_email_format_of", "~> 1.5.3"
|
35
35
|
spec.add_development_dependency "geocoder", "~> 1.1.6"
|
36
36
|
spec.add_development_dependency "addressable", "~> 2.3.3"
|
37
|
+
|
38
|
+
spec.add_development_dependency "glebtv-carrierwave-mongoid"
|
39
|
+
spec.add_development_dependency "glebtv-mongoid-paperclip"
|
37
40
|
end
|
data/spec/advanced_usage_spec.rb
CHANGED
File without changes
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Uploads" do
|
4
|
+
if Settings.file_uploads_engine != :carrierwave
|
5
|
+
pending "paperclip not detected, skipped. To run use UPLOADS=carrierwave rspec"
|
6
|
+
else
|
7
|
+
before :each do
|
8
|
+
f = "#{File.dirname(__FILE__)}/../uploads/1024x768.gif"
|
9
|
+
if File.file?(f)
|
10
|
+
File.unlink(f)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
it 'supports file type' do
|
14
|
+
Settings.set('file', File.open("#{File.dirname(__FILE__)}/support/1024x768.gif"), type: 'file')
|
15
|
+
|
16
|
+
# because we're not inside Rails
|
17
|
+
Settings.get(:file).file.root = '/'
|
18
|
+
|
19
|
+
Settings.get(:file).file.file.file.should eq "#{File.dirname(__FILE__).gsub('/spec', '/')}uploads/1024x768.gif"
|
20
|
+
|
21
|
+
File.exists?("#{File.dirname(__FILE__)}/../uploads/1024x768.gif").should be_true
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'supports image type' do
|
25
|
+
Settings.set('file', File.open("#{File.dirname(__FILE__)}/support/1024x768.gif"), type: 'image')
|
26
|
+
|
27
|
+
# because we're not inside Rails
|
28
|
+
Settings.get(:file).file.root = '/'
|
29
|
+
|
30
|
+
Settings.get(:file).file.file.file.should eq "#{File.dirname(__FILE__).gsub('/spec', '/')}uploads/1024x768.gif"
|
31
|
+
|
32
|
+
File.exists?("#{File.dirname(__FILE__)}/../uploads/1024x768.gif").should be_true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
File without changes
|
data/spec/factories/setting.rb
CHANGED
File without changes
|
data/spec/model_spec.rb
CHANGED
File without changes
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
describe "Uploads" do
|
5
|
+
if Settings.file_uploads_engine != :paperclip
|
6
|
+
pending "paperclip not detected, skipped. To run use UPLOADS=paperclip rspec"
|
7
|
+
else
|
8
|
+
Paperclip.options[:log] = false
|
9
|
+
before :each do
|
10
|
+
f = "#{File.dirname(__FILE__)}/../uploads/1024x768.gif"
|
11
|
+
if File.file?(f)
|
12
|
+
File.unlink(f)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
it 'supports file type' do
|
16
|
+
Settings.set('file', File.open("#{File.dirname(__FILE__)}/support/1024x768.gif"), type: 'file')
|
17
|
+
Settings.get(:file).file_file_name.should eq '1024x768.gif'
|
18
|
+
Settings.get(:file).file_file_size.should eq 4357
|
19
|
+
Settings.file[0..21].should eq '/uploads/1024x768.gif?'
|
20
|
+
|
21
|
+
File.exists?("#{File.dirname(__FILE__)}/../uploads/1024x768.gif").should be_true
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'supports image type' do
|
25
|
+
Settings.set('file', File.open("#{File.dirname(__FILE__)}/support/1024x768.gif"), type: 'image')
|
26
|
+
Settings.get(:file).file_file_name.should eq '1024x768.gif'
|
27
|
+
Settings.get(:file).file_file_size.should eq 4357
|
28
|
+
Settings.file[0..21].should eq '/uploads/1024x768.gif?'
|
29
|
+
|
30
|
+
File.exists?("#{File.dirname(__FILE__)}/../uploads/1024x768.gif").should be_true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
data/spec/settings_spec.rb
CHANGED
File without changes
|
data/spec/spec_helper.rb
CHANGED
@@ -12,6 +12,16 @@ require 'database_cleaner'
|
|
12
12
|
require 'factory_girl'
|
13
13
|
require 'mongoid-rspec'
|
14
14
|
|
15
|
+
require "glebtv-mongoid-paperclip" if ENV['UPLOADS'] == 'paperclip'
|
16
|
+
if ENV['UPLOADS'] == 'carrierwave'
|
17
|
+
require "glebtv-carrierwave-mongoid"
|
18
|
+
CarrierWave.configure do |config|
|
19
|
+
config.asset_host = proc do |file|
|
20
|
+
"http://localhost"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
15
25
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each do |f|
|
16
26
|
require f
|
17
27
|
end
|
Binary file
|
File without changes
|
data/spec/support/mongoid.rb
CHANGED
File without changes
|
data/spec/support/mongoid.yml
CHANGED
File without changes
|
data/spec/types_spec.rb
CHANGED
File without changes
|
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: 0.5.
|
4
|
+
version: 0.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gleb Tv
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mongoid
|
@@ -206,6 +206,34 @@ dependencies:
|
|
206
206
|
- - ~>
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: 2.3.3
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: glebtv-carrierwave-mongoid
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - '>='
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - '>='
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: glebtv-mongoid-paperclip
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - '>='
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - '>='
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0'
|
209
237
|
description: Mongoid / RailsAdmin App Settings management
|
210
238
|
email:
|
211
239
|
- glebtv@gmail.com
|
@@ -226,6 +254,9 @@ files:
|
|
226
254
|
- app/views/rails_admin/main/_setting_value.html.haml
|
227
255
|
- config/locales/en.rails_admin_settings.yml
|
228
256
|
- config/locales/ru.rails_admin_settings.yml
|
257
|
+
- gemfiles/mongoid-3.0.gemfile
|
258
|
+
- gemfiles/mongoid-3.1.gemfile
|
259
|
+
- gemfiles/mongoid-4.0.gemfile
|
229
260
|
- lib/rails_admin_settings.rb
|
230
261
|
- lib/rails_admin_settings/engine.rb
|
231
262
|
- lib/rails_admin_settings/hex_color_validator.rb
|
@@ -240,12 +271,15 @@ files:
|
|
240
271
|
- lib/rails_admin_settings/version.rb
|
241
272
|
- rails_admin_settings.gemspec
|
242
273
|
- spec/advanced_usage_spec.rb
|
274
|
+
- spec/carrierwave_spec.rb
|
243
275
|
- spec/database_trickery_spec.rb
|
244
276
|
- spec/factories/setting.rb
|
245
277
|
- spec/label_spec.rb
|
246
278
|
- spec/model_spec.rb
|
279
|
+
- spec/paperclip_spec.rb
|
247
280
|
- spec/settings_spec.rb
|
248
281
|
- spec/spec_helper.rb
|
282
|
+
- spec/support/1024x768.gif
|
249
283
|
- spec/support/database_cleaner.rb
|
250
284
|
- spec/support/mongoid.rb
|
251
285
|
- spec/support/mongoid.yml
|
@@ -270,18 +304,21 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
270
304
|
version: '0'
|
271
305
|
requirements: []
|
272
306
|
rubyforge_project:
|
273
|
-
rubygems_version: 2.
|
307
|
+
rubygems_version: 2.1.10
|
274
308
|
signing_key:
|
275
309
|
specification_version: 4
|
276
310
|
summary: Setting for Rails app with mongoid and RailsAdmin
|
277
311
|
test_files:
|
278
312
|
- spec/advanced_usage_spec.rb
|
313
|
+
- spec/carrierwave_spec.rb
|
279
314
|
- spec/database_trickery_spec.rb
|
280
315
|
- spec/factories/setting.rb
|
281
316
|
- spec/label_spec.rb
|
282
317
|
- spec/model_spec.rb
|
318
|
+
- spec/paperclip_spec.rb
|
283
319
|
- spec/settings_spec.rb
|
284
320
|
- spec/spec_helper.rb
|
321
|
+
- spec/support/1024x768.gif
|
285
322
|
- spec/support/database_cleaner.rb
|
286
323
|
- spec/support/mongoid.rb
|
287
324
|
- spec/support/mongoid.yml
|