clean_settings 0.1.3 → 0.2.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/README.md +23 -19
- data/lib/clean_settings/has_settings.rb +8 -8
- data/lib/clean_settings/version.rb +1 -1
- metadata +18 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a3d3380cddbbd38ef5b59f4621914d522fbe4647
|
4
|
+
data.tar.gz: 99434bf2745785923cfa63580cad5db3b6439946
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1917cae6d3d7db26588e69e1b8a7afaf207d2c0ffd4eac613218e53505347299956725df543c9378242faac29a0e41f4d45f0c04d33fbb6b8be2f617e10e0c88
|
7
|
+
data.tar.gz: 0ee21704dc50eff998053594e2436a688a99e23480d5b416ee63a74dcf34c1bc95682c78d80a0adfa72865795855c2bdcb16affa3140a17863eaeceaa69daea3
|
data/README.md
CHANGED
@@ -42,32 +42,32 @@ rails g clean_settings:install
|
|
42
42
|
After installattion you will have a CleanSettings::Setting active_record model. If you want to extend this model you can use inheritance:
|
43
43
|
|
44
44
|
```ruby
|
45
|
-
class
|
45
|
+
class Settings < CleanSettings::Setting
|
46
46
|
```
|
47
47
|
|
48
48
|
#### Default settings
|
49
49
|
|
50
50
|
If you need default settings for your Rails project you can add ruby file to config/initializers folder. Personally I prefer to name it as **default_settings.rb**. And fill this file with settings that you need:
|
51
51
|
```ruby
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
Settings.defaults.project_name = "name"
|
53
|
+
Settings.defaults.project_key = 123456789
|
54
|
+
Settings.defaults.configs = { time: "UTC", currency_code: 980 }
|
55
55
|
```
|
56
56
|
After restart your project you will be able to get you defaults settings:
|
57
57
|
```ruby
|
58
|
-
|
59
|
-
|
58
|
+
Settings.defaults.project_name # => "name"
|
59
|
+
Settings.project_name # => "name"
|
60
60
|
```
|
61
61
|
Get all defaults settings in hash with indifferent access :
|
62
62
|
|
63
63
|
```ruby
|
64
|
-
|
64
|
+
Settings.all_defaults
|
65
65
|
```
|
66
66
|
|
67
67
|
Clearing default settings.
|
68
68
|
|
69
69
|
```ruby
|
70
|
-
|
70
|
+
Settings.clear_defaults
|
71
71
|
```
|
72
72
|
|
73
73
|
Default settings are not saved to DB. Because they are 'defaults'. That's why when you clear default settings it will clear them only for current session. When your app is restarted, your default settings will be returned according your **default_settings.rb** file.
|
@@ -77,42 +77,42 @@ Default settings are not saved to DB. Because they are 'defaults'. That's why wh
|
|
77
77
|
For adding and getting settings that will be available anywhere in your project you can write like this:
|
78
78
|
```ruby
|
79
79
|
# set
|
80
|
-
|
80
|
+
Settings.project_name = "name"
|
81
81
|
|
82
82
|
# get
|
83
|
-
|
83
|
+
Settings.project_name # => "name"
|
84
84
|
```
|
85
85
|
If you prefer an array notation:
|
86
86
|
```ruby
|
87
87
|
# set
|
88
|
-
|
88
|
+
Settings[:project_name] = "name"
|
89
89
|
|
90
90
|
# get
|
91
|
-
|
91
|
+
Settings[:project_name] # => "name"
|
92
92
|
```
|
93
93
|
When you adding a setting with the name that was used for default setting you override default setting:
|
94
94
|
|
95
95
|
```ruby
|
96
|
-
|
97
|
-
|
96
|
+
Settings.defaults[:name] = "default name"
|
97
|
+
Settings.name # => "default name"
|
98
98
|
|
99
|
-
|
100
|
-
|
99
|
+
Settings.name = "another name"
|
100
|
+
Settings.name # => "another name"
|
101
101
|
```
|
102
102
|
|
103
103
|
Get all global settings in hash with indifferent access
|
104
104
|
|
105
105
|
```ruby
|
106
|
-
|
106
|
+
Settings.all_globals
|
107
107
|
```
|
108
108
|
|
109
109
|
##### Get all settings
|
110
110
|
All settings (default and global) you can get through any of these methods:
|
111
111
|
|
112
112
|
```ruby
|
113
|
-
|
113
|
+
Settings.all_settings
|
114
114
|
# or
|
115
|
-
|
115
|
+
Settings.fetch
|
116
116
|
```
|
117
117
|
Global settings will be merged with default settings.
|
118
118
|
|
@@ -125,6 +125,9 @@ class User < ActiveRecord::Base
|
|
125
125
|
has_settings
|
126
126
|
end
|
127
127
|
```
|
128
|
+
Method `has_settings` has this option:
|
129
|
+
- **method_name**. Default value is `settings`.
|
130
|
+
|
128
131
|
And use it:
|
129
132
|
|
130
133
|
```ruby
|
@@ -132,6 +135,7 @@ And use it:
|
|
132
135
|
@user.settings.subscribe_to_notifications = true
|
133
136
|
@user.settings.subscribe_to_notifications # => true
|
134
137
|
```
|
138
|
+
|
135
139
|
## Contributing
|
136
140
|
|
137
141
|
Bug reports and pull requests are welcome on GitHub at https://github.com/ashlinchak/clean_settings.
|
@@ -1,18 +1,18 @@
|
|
1
1
|
module CleanSettings
|
2
2
|
module HasSettings
|
3
|
-
def has_settings
|
4
|
-
|
3
|
+
def has_settings(opts = {})
|
4
|
+
opts[:method_name] = :settings unless opts.key?(:method_name)
|
5
|
+
|
6
|
+
instance_eval do
|
7
|
+
define_method opts[:method_name].to_sym do
|
8
|
+
CleanSettings::Ownerable.for_thing(self)
|
9
|
+
end
|
10
|
+
end
|
5
11
|
|
6
12
|
scope :with_setting, lambda { |var|
|
7
13
|
joins("JOIN clean_settings ON (clean_settings.owner_id = #{self.table_name}.#{self.primary_key} AND
|
8
14
|
clean_settings.owner_type = '#{self.base_class.name}') AND clean_settings.var = '#{var}'")
|
9
15
|
}
|
10
16
|
end
|
11
|
-
|
12
|
-
module InstanceMethods
|
13
|
-
def settings
|
14
|
-
CleanSettings::Ownerable.for_thing(self)
|
15
|
-
end
|
16
|
-
end
|
17
17
|
end
|
18
18
|
end
|
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clean_settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Shlinchak
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.2.22
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.2.22
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '10.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '10.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 3.3.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 3.3.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: sqlite3
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 1.3.10
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 1.3.10
|
83
83
|
description: Storing global and object's settings in DB. Simple for using in Rails
|
@@ -88,9 +88,9 @@ executables: []
|
|
88
88
|
extensions: []
|
89
89
|
extra_rdoc_files: []
|
90
90
|
files:
|
91
|
-
- .gitignore
|
92
|
-
- .rspec
|
93
|
-
- .travis.yml
|
91
|
+
- ".gitignore"
|
92
|
+
- ".rspec"
|
93
|
+
- ".travis.yml"
|
94
94
|
- CHANGELOG.md
|
95
95
|
- Gemfile
|
96
96
|
- README.md
|
@@ -114,19 +114,18 @@ require_paths:
|
|
114
114
|
- lib
|
115
115
|
required_ruby_version: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
|
-
- -
|
117
|
+
- - ">="
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: 1.9.3
|
120
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
requirements: []
|
126
126
|
rubyforge_project:
|
127
|
-
rubygems_version: 2.
|
127
|
+
rubygems_version: 2.5.1
|
128
128
|
signing_key:
|
129
129
|
specification_version: 4
|
130
130
|
summary: Simple and clean settings for your Rails project.
|
131
131
|
test_files: []
|
132
|
-
has_rdoc:
|