configurable_engine 0.4.5 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: f02a18fcb303b5b130db98893a3d0e5977fb2017
4
- data.tar.gz: 8cd584d266b1a2824c62c74f519567194cf42acd
2
+ SHA256:
3
+ metadata.gz: 70df04df8400f52621c669ff912d9b648b4cac4a1107b3e5e0e102f2aeaabe51
4
+ data.tar.gz: 3a32bee140f6e905ce74f5079ed034611055f46727645f8dbe39ff22e7e4d9a0
5
5
  SHA512:
6
- metadata.gz: 4984b350d139195314f8749eb82833c9232fb37ef2322f4fc3b3a2a98d28c5e52f6529f0b0aaf065c232a32b664f9cfbbb93abf5ab301ba9229e92bbc629d752
7
- data.tar.gz: e64e0fa495ee59fbe59d7acb99eb835b8004401d4850cded6636a218d463a3db0e427b4145aaefd30f34065fe944f1d8932c1a17c47c61289274c359ebf5f874
6
+ metadata.gz: 9fe20672f98d7b4166c224d73bf1d10675a71418d3a32dcc7e952cba3a0dffa62c4e03635877fa097c21e592a970f8d952c8602c6fc7db91e39857b1710b0339
7
+ data.tar.gz: c77bb417b1bf4cbe6f4d23b9875049fedd05fcbad8efb6db25f87f698ec7c70fa97eda580dd11da0e4b842caaf8d40fab1e76cd570fb6fcc85af9bb8a438f7f8
@@ -1,3 +1,30 @@
1
+ ### v1.0.0 - August 20, 2020
2
+ **features**
3
+ Official rails 5.2 support
4
+
5
+ **breaking changes**
6
+ No further support for rails < 5.2
7
+
8
+ ### v0.5.0 - August 3, 2018
9
+ **features**
10
+ Official rails 4.2 support (Thanks @ento)
11
+
12
+ **breaking changes**
13
+ No further support for rails < 4.2, and non-mri rubies. Happy to accept those back as PRs!
14
+
15
+
16
+ ### v0.4.8 - March 4, 2015
17
+ **bug fix**
18
+ Cacheing was just totally broken. Whoops! (thanks, @antoshalee)
19
+
20
+ ### v0.4.7 - November 4, 2014
21
+ **bug fix**
22
+ Configurable broke for users using cacheing.
23
+
24
+ ### v0.4.6 - October 28, 2014
25
+ **cleanup**
26
+ When using Configurable with cache, destroying a configurable instance erases it from cache
27
+
1
28
  ### v0.4.5 - October 13, 2014
2
29
  **bug fixes**
3
30
  Configurable can store false values when the default is true (https://github.com/paulca/configurable_engine/pull/24, thanks @lilliealbert)
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Configurable [![Build Status](https://travis-ci.org/paulca/configurable_engine.png?branch=master)](https://travis-ci.org/paulca/configurable_engine)
2
2
 
3
- A Rails 3/4 configuration engine. An update to [Behavior](http://github.com/paulca/behavior) for Rails 3 and 4.
3
+ A Rails 4 configuration engine. An update to [Behavior](http://github.com/paulca/behavior) for Rails 4.
4
4
 
5
5
  ## How it works ##
6
6
 
@@ -10,7 +10,7 @@ If you or your app users need to change these variables, Configurable stores new
10
10
 
11
11
  ## Installation ##
12
12
 
13
- Configurable is available as a Ruby gem. Simply add it to your Rails 3 app's `Gemfile`:
13
+ Configurable is available as a Ruby gem. Simply add it to your Rails 4 app's `Gemfile`:
14
14
 
15
15
  ```ruby
16
16
  gem 'configurable_engine'
@@ -24,9 +24,9 @@ $ rails generate configurable_engine:install
24
24
 
25
25
  ## Usage ##
26
26
 
27
- There are two parts to how configurable_engine works. First of all there is a config file, config/configurable.yml. This file controls the variables that are allowed to be set in the app.
27
+ There are two parts to how configurable_engine works. First of all there is a config file, `config/configurable.yml`. This file controls the variables that are allowed to be set in the app.
28
28
 
29
- For example, if you wanted to have access to a config variable "site_title", put this in configurable.yml:
29
+ For example, if you wanted to have access to a config variable `site_title`, put this in `configurable.yml`:
30
30
 
31
31
  ```yaml
32
32
  site_title:
@@ -100,16 +100,50 @@ Price:
100
100
  type: decimal # coerces the value to a decimal
101
101
  ```
102
102
 
103
- ## Cacheing ##
103
+ ## Caching ##
104
104
 
105
105
  If you want to use rails caching of Configurable updates, simply set
106
106
 
107
-
108
107
  ```ruby
109
108
  config.use_cache = true
110
109
  ```
110
+
111
111
  in your `config/application.rb` (or `config/production.rb`)
112
112
 
113
+ ## Styling the interface ##
114
+
115
+ To style the web interface you are advised to use Sass. Here's an example scss file that will make the interface bootstrap-3 ready:
116
+
117
+ ```
118
+ @import 'bootstrap';
119
+
120
+ .configurable-container {
121
+ @extend .col-md-6;
122
+
123
+ .configurable-options {
124
+ form {
125
+ @extend .form-horizontal;
126
+
127
+ .configurable {
128
+ @extend .col-md-12;
129
+ @extend .form-group;
130
+
131
+ textarea, input[type=text], input[type=password] {
132
+ @extend .form-control;
133
+ }
134
+ }
135
+
136
+ input[type=submit] {
137
+ @extend .btn;
138
+ @extend .btn-primary;
139
+ }
140
+ }
141
+ }
142
+ }
143
+ ```
144
+
145
+ Just save this into your rails assets and you're ready to go.
146
+
113
147
  ## Running the Tests ##
114
148
 
115
149
  The tests for this rails engine are in the `spec` and `features` directories. They use the dummy rails app in `spec/dummy`
@@ -117,7 +151,8 @@ The tests for this rails engine are in the `spec` and `features` directories. T
117
151
  From the top level run:
118
152
 
119
153
  ```bash
120
- $ bundle exec rake app:db:schema:load app:db:test:prepare
154
+ $ bundle exec rake app:db:schema:load
155
+ $ bundle exec rake app:db:test:prepare
121
156
  $ bundle exec rake
122
157
  ```
123
158
 
@@ -129,4 +164,3 @@ All contributions are welcome. Just fork the code, ensure your changes include a
129
164
 
130
165
  Copyright (c) 2011 Paul Campbell. See LICENSE.txt for
131
166
  further details.
132
-
@@ -1,6 +1,8 @@
1
1
  class Configurable < ActiveRecord::Base
2
+ serialize :value
2
3
 
3
- after_save :invalidate_cache, if: -> { ConfigurableEngine::Engine.config.use_cache }
4
+ after_save :invalidate_cache, if: -> { ConfigurableEngine::Engine.config.use_cache }
5
+ after_destroy :invalidate_cache, if: -> { ConfigurableEngine::Engine.config.use_cache }
4
6
 
5
7
  validates_presence_of :name
6
8
  validates_uniqueness_of :name
@@ -29,20 +31,44 @@ class Configurable < ActiveRecord::Base
29
31
  end
30
32
  end
31
33
 
34
+ def self.cache_key(key)
35
+ "configurable_engine:#{key}"
36
+ end
37
+
32
38
  def self.[](key)
33
39
  return parse_value key, defaults[key][:default] unless table_exists?
34
40
 
35
- config = if ConfigurableEngine::Engine.config.use_cache
36
- Rails.cache.fetch("configurable_engine:#{key}") {
37
- find_by_name(key)
38
- }
39
- else
40
- find_by_name(key)
41
+ value, found = [false, false]
42
+ database_finder = -> do
43
+ config = find_by_name(key)
44
+ found = !!config
45
+ value = config.try(:value)
41
46
  end
42
47
 
43
- return parse_value key, defaults[key][:default] unless config
44
48
 
45
- config.value
49
+ if ConfigurableEngine::Engine.config.use_cache
50
+ found = Rails.cache.exist?(cache_key(key))
51
+ if found
52
+ value = Rails.cache.fetch(cache_key(key))
53
+ else
54
+ database_finder.call
55
+ if found
56
+ Rails.cache.write cache_key(key), value
57
+ end
58
+ end
59
+ else
60
+ database_finder.call
61
+ end
62
+
63
+ if found
64
+ value
65
+ else
66
+ parse_value(key, defaults[key][:default]).tap do |val|
67
+ if ConfigurableEngine::Engine.config.use_cache
68
+ Rails.cache.write cache_key(key), val
69
+ end
70
+ end
71
+ end
46
72
  end
47
73
 
48
74
  def value
@@ -55,7 +81,7 @@ class Configurable < ActiveRecord::Base
55
81
  [true, 1, "1", "t", "true"].include?(value)
56
82
  when 'decimal'
57
83
  value ||= 0
58
- BigDecimal.new(value.to_s)
84
+ BigDecimal(value.to_s)
59
85
  when 'integer'
60
86
  value.to_i
61
87
  when 'list'
@@ -65,6 +91,12 @@ class Configurable < ActiveRecord::Base
65
91
  else
66
92
  value.split("\n").collect { |v| v =~ /,/ ? v.split(',') : v }
67
93
  end
94
+ when 'date'
95
+ if value.is_a? Date
96
+ value
97
+ else
98
+ Date.parse(value) if value.present?
99
+ end
68
100
  else
69
101
  value
70
102
  end
@@ -111,6 +143,8 @@ class Configurable < ActiveRecord::Base
111
143
  Integer(value) rescue false
112
144
  when 'list'
113
145
  value.is_a?(Array)
146
+ when 'date'
147
+ value.is_a?(Date)
114
148
  else
115
149
  true
116
150
  end
@@ -122,6 +156,6 @@ class Configurable < ActiveRecord::Base
122
156
  end
123
157
 
124
158
  def invalidate_cache
125
- Rails.cache.delete("configurable_engine:#{self.name}")
159
+ Rails.cache.delete(Configurable.cache_key self.name)
126
160
  end
127
161
  end
@@ -1,24 +1,31 @@
1
- <h2>Config</h2>
1
+ <div class='configurable-container'>
2
2
 
3
- <%= form_tag(admin_configurable_path, :method => :put) do -%>
4
- <%- @keys.each do |key| -%>
5
- <%- options = Configurable.defaults[key] -%>
6
- <div class="configurable">
7
- <%= label_tag key, options[:name] %>
8
- <%- if options[:type] == 'boolean' %>
9
- <%= hidden_field_tag key, "0" %>
10
- <%= check_box_tag key, "1", Configurable.send(key) %>
11
- <%- elsif options[:type] == 'password' -%>
12
- <%= password_field_tag key, Configurable.send(key) %>
13
- <%- elsif options[:type] == 'text' -%>
14
- <%= text_area_tag key, Configurable.send(key) %>
15
- <%- elsif options[:type] == 'list' -%>
16
- <%= text_area_tag key, Configurable.serialized_value(key) -%>
17
- <%- else -%>
18
- <%= text_field_tag key, Configurable.send(key) %>
3
+ <div class="header">
4
+ <h2>Config</h2>
5
+ </div>
6
+
7
+ <div class="configurable-options">
8
+ <%= form_tag(admin_configurable_path, :method => :put) do -%>
9
+ <%- @keys.each do |key| -%>
10
+ <%- options = Configurable.defaults[key] -%>
11
+ <div class="configurable">
12
+ <%= label_tag key, options[:name] %>
13
+ <%- if options[:type] == 'boolean' %>
14
+ <%= hidden_field_tag key, "0" %>
15
+ <%= check_box_tag key, "1", Configurable.send(key) %>
16
+ <%- elsif options[:type] == 'password' -%>
17
+ <%= password_field_tag key, Configurable.send(key) %>
18
+ <%- elsif options[:type] == 'text' -%>
19
+ <%= text_area_tag key, Configurable.send(key) %>
20
+ <%- elsif options[:type] == 'list' -%>
21
+ <%= text_area_tag key, Configurable.serialized_value(key) -%>
22
+ <%- else -%>
23
+ <%= text_field_tag key, Configurable.send(key) %>
24
+ <%- end -%>
25
+ </div>
19
26
  <%- end -%>
20
- </div>
21
- <%- end -%>
22
-
23
- <%= submit_tag 'Save' %>
24
- <%- end -%>
27
+
28
+ <%= submit_tag 'Save' %>
29
+ <%- end -%>
30
+ </div>
31
+ </div>
@@ -1,3 +1,3 @@
1
1
  module ConfigurableEngine
2
- VERSION = '0.4.5'
3
- end
2
+ VERSION = '1.0.0'
3
+ end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configurable_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Campbell
8
8
  - Michael Glass
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-13 00:00:00.000000000 Z
12
+ date: 2020-08-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -17,17 +17,17 @@ dependencies:
17
17
  requirements:
18
18
  - - ">"
19
19
  - !ruby/object:Gem::Version
20
- version: 3.1.0
20
+ version: 5.2.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">"
26
26
  - !ruby/object:Gem::Version
27
- version: 3.1.0
28
- description: 'Configurable is a Rails 3/4 engine that allows you to set up config
29
- variables in a config file, specifying default values for all environmentspec. These
30
- variables can then be set on a per-app basis using a user facing configuration screen. '
27
+ version: 5.2.0
28
+ description: 'Configurable is a Rails 4 engine that allows you to set up config variables
29
+ in a config file, specifying default values for all environmentspec. These variables
30
+ can then be set on a per-app basis using a user facing configuration screen. '
31
31
  email: paul@rslw.com
32
32
  executables: []
33
33
  extensions: []
@@ -53,7 +53,7 @@ homepage: http://github.com/paulca/configurable_engine
53
53
  licenses:
54
54
  - MIT
55
55
  metadata: {}
56
- post_install_message:
56
+ post_install_message:
57
57
  rdoc_options: []
58
58
  require_paths:
59
59
  - lib
@@ -68,9 +68,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  requirements: []
71
- rubyforge_project:
72
- rubygems_version: 2.4.2
73
- signing_key:
71
+ rubygems_version: 3.0.3
72
+ signing_key:
74
73
  specification_version: 4
75
- summary: Database-backed configuration for Rails 3, with defaults from config file.
74
+ summary: Database-backed configuration for Rails 4, with defaults from config file.
76
75
  test_files: []