settings_js 0.1.2 → 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.
- data/.gitignore +1 -0
- data/README.markdown +3 -2
- data/lib/settings_js/backends/settings_logic.rb +14 -5
- data/lib/settings_js/engine.rb +4 -0
- data/lib/settings_js/merger.rb +3 -2
- data/lib/settings_js.rb +4 -0
- data/settings_js.gemspec +2 -2
- data/spec/settings_js_spec.rb +28 -0
- data/spec/spec_helper.rb +5 -0
- metadata +3 -2
data/.gitignore
CHANGED
data/README.markdown
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# Welcome to Settings-js
|
2
2
|
|
3
|
-
[](https://codeclimate.com/github/
|
4
|
-
[](https://codeclimate.com/github/fanaticio/settings-js)
|
4
|
+
[](http://travis-ci.org/fanaticio/settings-js)
|
5
|
+
[](https://gemnasium.com/fanaticio/settings-js)
|
5
6
|
|
6
7
|
Use application specific settings with Javascript.
|
7
8
|
|
@@ -1,5 +1,14 @@
|
|
1
1
|
module SettingsJs
|
2
2
|
module Backends
|
3
|
+
|
4
|
+
# Public: SettingsLogic backend implementation to get values of Settings from string.
|
5
|
+
#
|
6
|
+
# klass - Class which is SettingsLogic in the application.
|
7
|
+
#
|
8
|
+
# Examples
|
9
|
+
#
|
10
|
+
# settingsjs_backend = Settings::Backends::SettingsLogic.new(MySettings)
|
11
|
+
#
|
3
12
|
class SettingsLogic
|
4
13
|
|
5
14
|
attr_accessor :klass
|
@@ -8,16 +17,16 @@ module SettingsJs
|
|
8
17
|
self.klass = klass
|
9
18
|
end
|
10
19
|
|
11
|
-
# Public: Use application
|
20
|
+
# Public: Use application Settingslogic class to get values of a key.
|
12
21
|
#
|
13
|
-
# base_key - String
|
22
|
+
# base_key - String with path keys seperated by dots.
|
14
23
|
#
|
15
24
|
# Examples
|
16
25
|
#
|
17
|
-
#
|
18
|
-
# # => '
|
26
|
+
# Settingsjs::Backends::SettingsLogic.new(MySettings).to_hash('key1.subkey1_1')
|
27
|
+
# # => 'Awesome value!'
|
19
28
|
#
|
20
|
-
# Returns the
|
29
|
+
# Returns the Hash value.
|
21
30
|
def to_hash(base_key)
|
22
31
|
keys = base_key.split(/\./)
|
23
32
|
base_hash = klass.send(keys.shift)
|
data/lib/settings_js/merger.rb
CHANGED
@@ -2,9 +2,10 @@ require 'active_support/inflector'
|
|
2
2
|
require 'json'
|
3
3
|
|
4
4
|
module SettingsJs
|
5
|
+
|
5
6
|
class Merger
|
6
7
|
|
7
|
-
# Public: Get all values for keys defined in
|
8
|
+
# Public: Get all values for keys defined in settings and merged it to a hash.
|
8
9
|
#
|
9
10
|
# Examples
|
10
11
|
#
|
@@ -22,7 +23,7 @@ module SettingsJs
|
|
22
23
|
config.keys.reduce({}) { |hash, base_key| hash.merge(backend.to_hash(base_key)) }
|
23
24
|
end
|
24
25
|
|
25
|
-
# Public: Get all values for keys defined in
|
26
|
+
# Public: Get all values for keys defined in settings and merged it to a json.
|
26
27
|
#
|
27
28
|
# Examples
|
28
29
|
#
|
data/lib/settings_js.rb
CHANGED
data/settings_js.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'settings_js'
|
3
|
-
s.version = '0.
|
4
|
-
s.date = '
|
3
|
+
s.version = '0.2.0'
|
4
|
+
s.date = '2013-02-13'
|
5
5
|
s.summary = 'Sharing same application settings between ruby and javascript'
|
6
6
|
s.authors = ['Kevin Disneur']
|
7
7
|
s.email = 'kevin.disneur@gmail.com'
|
data/spec/settings_js_spec.rb
CHANGED
@@ -8,4 +8,32 @@ describe SettingsJs do
|
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
+
describe 'Engine' do
|
12
|
+
context 'when Rails constant does not exist' do
|
13
|
+
it 'does not make the gem an engine' do
|
14
|
+
reload_gem
|
15
|
+
defined?(::SettingsJS::Engine).should be_false
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'when Rails constant exists' do
|
20
|
+
before(:each) { stub_const('Rails', Class.new) }
|
21
|
+
|
22
|
+
it 'does not make the gem an engine' do
|
23
|
+
reload_gem
|
24
|
+
defined?(::SettingsJS::Engine).should be_false
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'when Rails::Engine constant exists' do
|
28
|
+
before(:each) { stub_const('Rails::Engine', Class.new) }
|
29
|
+
|
30
|
+
it 'makes the gem an engine' do
|
31
|
+
reload_gem
|
32
|
+
defined?(::SettingsJS::Engine).should be_true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
11
39
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,4 +2,9 @@ Spec_root = File.expand_path('..', __FILE__)
|
|
2
2
|
|
3
3
|
require File.join(Spec_root, '..', 'lib', 'settings_js')
|
4
4
|
|
5
|
+
def reload_gem
|
6
|
+
load File.join(Spec_root, '..', 'lib', 'settings_js.rb')
|
7
|
+
end
|
8
|
+
|
5
9
|
Dir[File.join(Spec_root, 'support', '**', '*.rb')].each { |support_helper| require support_helper }
|
10
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: settings_js
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -139,6 +139,7 @@ files:
|
|
139
139
|
- lib/settings_js.rb
|
140
140
|
- lib/settings_js/backends/settings_logic.rb
|
141
141
|
- lib/settings_js/config.rb
|
142
|
+
- lib/settings_js/engine.rb
|
142
143
|
- lib/settings_js/merger.rb
|
143
144
|
- settings_js.gemspec
|
144
145
|
- spec/fixtures/settings_js/backends/settings_logic.yml
|