settings_js 0.2.0 → 0.3.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 +7 -0
- data/.gitignore +1 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +3 -0
- data/CHANGELOG.markdown +33 -0
- data/Gemfile +2 -1
- data/README.markdown +1 -1
- data/lib/settings_js/backends/settings_logic.rb +3 -3
- data/settings_js.gemspec +2 -2
- data/spec/javascripts/settings-js/settings_js_spec.js +8 -4
- data/spec/javascripts/support/jasmine.yml +6 -71
- data/spec/javascripts/support/jasmine_helper.rb +41 -0
- data/spec/settings_js/backends/{settings_js_spec.rb → settings_logic_spec.rb} +6 -4
- data/spec/settings_js/merger_spec.rb +11 -12
- data/spec/spec_helper.rb +3 -0
- metadata +28 -42
- data/.rvmrc +0 -1
- data/spec/javascripts/support/jasmine_config.rb +0 -57
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 06892c399eb98cd3be8fa35110648df340ce8ce4
|
4
|
+
data.tar.gz: fa6f05a381ccc047a0e4840172e6a93ee2c9d737
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 256def4ff494af08edf60dd211c91aef121d9490bffa306579092a13370556375fced85087369998a181a21fdb684394456b79a08324065c27ea436870d9ef0a
|
7
|
+
data.tar.gz: 8c8fd7ab33f7edf22622775a315ecbe8d4c885b735b6c6d9c3d7423d8a6aade89df5e4fbcb2a395860c1360b2482175e31abe21715b95f0b6102789e78562e13
|
data/.gitignore
CHANGED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
settings-js
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.0.0
|
data/.travis.yml
CHANGED
data/CHANGELOG.markdown
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# 0.3.0 (no backward)
|
2
|
+
|
3
|
+
* Use base key as settings key
|
4
|
+
|
5
|
+
```ruby
|
6
|
+
SettingsJs.configuration do |config|
|
7
|
+
config.keys = %w(adapters.maps)
|
8
|
+
end
|
9
|
+
|
10
|
+
# old Settings JS:
|
11
|
+
console.log(Settings);
|
12
|
+
# => { defaults: { latitude: 42.00, longitude: 41.00 }}
|
13
|
+
|
14
|
+
# current Settings JS:
|
15
|
+
console.log(Settings);
|
16
|
+
# => { maps: { defaults: { latitude: 42.00, longitude: 41.00 }}}
|
17
|
+
```
|
18
|
+
|
19
|
+
# 0.2.0
|
20
|
+
|
21
|
+
* Make it a Rails engine
|
22
|
+
|
23
|
+
# 0.1.2
|
24
|
+
|
25
|
+
* Fix dependency error `active_support` -> `activesupport`
|
26
|
+
|
27
|
+
# 0.1.1
|
28
|
+
|
29
|
+
* Renaming adapters to backends
|
30
|
+
|
31
|
+
# 0.1.0
|
32
|
+
|
33
|
+
* Basic implementation with SettingsLogic backend
|
data/Gemfile
CHANGED
data/README.markdown
CHANGED
@@ -24,18 +24,18 @@ module SettingsJs
|
|
24
24
|
# Examples
|
25
25
|
#
|
26
26
|
# Settingsjs::Backends::SettingsLogic.new(MySettings).to_hash('key1.subkey1_1')
|
27
|
-
# # => 'Awesome value!'
|
27
|
+
# # => { subkey1_1: 'Awesome value!' }
|
28
28
|
#
|
29
29
|
# Returns the Hash value.
|
30
30
|
def to_hash(base_key)
|
31
31
|
keys = base_key.split(/\./)
|
32
|
+
hash_key = keys.last
|
32
33
|
base_hash = klass.send(keys.shift)
|
33
34
|
|
34
35
|
keys.each { |key| base_hash = base_hash.send(key) }
|
35
36
|
|
36
|
-
base_hash
|
37
|
+
{ hash_key => base_hash }
|
37
38
|
end
|
38
|
-
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
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 = '2013-
|
3
|
+
s.version = '0.3.0'
|
4
|
+
s.date = '2013-10-14'
|
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'
|
@@ -1,10 +1,14 @@
|
|
1
1
|
describe('Settings ', function() {
|
2
2
|
it('Settings object contains a valid json', function() {
|
3
3
|
expected_json = {
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
key1 : {
|
5
|
+
sub_key1 : 'sub_value1',
|
6
|
+
},
|
7
|
+
sub_key2_2: {
|
8
|
+
sub_key2_2_1 : 'sub_value2_2_1',
|
9
|
+
sub_key2_2_2: {
|
10
|
+
sub_key2_2_2_1: 'sub_value2_2_2_1'
|
11
|
+
}
|
8
12
|
}
|
9
13
|
};
|
10
14
|
|
@@ -1,73 +1,8 @@
|
|
1
|
-
# src_files
|
2
|
-
#
|
3
|
-
# Return an array of filepaths relative to src_dir to include before jasmine specs.
|
4
|
-
# Default: []
|
5
|
-
#
|
6
|
-
# EXAMPLE:
|
7
|
-
#
|
8
|
-
# src_files:
|
9
|
-
# - lib/source1.js
|
10
|
-
# - lib/source2.js
|
11
|
-
# - dist/**/*.js
|
12
|
-
#
|
13
1
|
src_files:
|
14
|
-
- spec/javascripts/generated/**/*.js.erb
|
15
|
-
|
16
|
-
# stylesheets
|
17
|
-
#
|
18
|
-
# Return an array of stylesheet filepaths relative to src_dir to include before jasmine specs.
|
19
|
-
# Default: []
|
20
|
-
#
|
21
|
-
# EXAMPLE:
|
22
|
-
#
|
23
|
-
# stylesheets:
|
24
|
-
# - css/style.css
|
25
|
-
# - stylesheets/*.css
|
26
|
-
#
|
27
|
-
stylesheets:
|
28
|
-
|
29
|
-
# helpers
|
30
|
-
#
|
31
|
-
# Return an array of filepaths relative to spec_dir to include before jasmine specs.
|
32
|
-
# Default: ["helpers/**/*.js"]
|
33
|
-
#
|
34
|
-
# EXAMPLE:
|
35
|
-
#
|
36
|
-
# helpers:
|
37
|
-
# - helpers/**/*.js
|
38
|
-
#
|
39
|
-
helpers:
|
40
|
-
|
41
|
-
# spec_files
|
42
|
-
#
|
43
|
-
# Return an array of filepaths relative to spec_dir to include.
|
44
|
-
# Default: ["**/*[sS]pec.js"]
|
45
|
-
#
|
46
|
-
# EXAMPLE:
|
47
|
-
#
|
48
|
-
# spec_files:
|
49
|
-
# - **/*[sS]pec.js
|
50
|
-
#
|
51
|
-
spec_files:
|
52
|
-
|
53
|
-
# src_dir
|
54
|
-
#
|
55
|
-
# Source directory path. Your src_files must be returned relative to this path. Will use root if left blank.
|
56
|
-
# Default: project root
|
57
|
-
#
|
58
|
-
# EXAMPLE:
|
59
|
-
#
|
60
|
-
# src_dir: public
|
61
|
-
#
|
62
|
-
src_dir:
|
63
|
-
|
64
|
-
# spec_dir
|
65
|
-
#
|
66
|
-
# Spec directory path. Your spec_files must be returned relative to this path.
|
67
|
-
# Default: spec/javascripts
|
68
|
-
#
|
69
|
-
# EXAMPLE:
|
70
|
-
#
|
71
|
-
# spec_dir: spec/javascripts
|
72
|
-
#
|
2
|
+
- 'spec/javascripts/generated/**/*.js.erb'
|
73
3
|
spec_dir:
|
4
|
+
- 'spec/javascripts/settings-js'
|
5
|
+
spec_files:
|
6
|
+
- '**/*[sS]pec.js'
|
7
|
+
spec_helper:
|
8
|
+
- 'spec/javascripts/support/jasmine_helper.rb'
|
@@ -0,0 +1,41 @@
|
|
1
|
+
Spec_root = File.expand_path(File.join('..', '..', '..'), __FILE__)
|
2
|
+
|
3
|
+
$LOAD_PATH << File.join(Spec_root, '..', 'lib')
|
4
|
+
require 'settingslogic'
|
5
|
+
require 'settings_js'
|
6
|
+
require 'sprockets'
|
7
|
+
|
8
|
+
class DummySettings < Settingslogic
|
9
|
+
source File.join(Spec_root, 'fixtures', 'settings_js', 'backends', 'settings_logic.yml')
|
10
|
+
end
|
11
|
+
|
12
|
+
def gem_configuration
|
13
|
+
SettingsJs.configuration do |config|
|
14
|
+
config.backend = 'settings_logic'
|
15
|
+
config.keys = %w(key1 key2.sub_key2_2)
|
16
|
+
config.klass = DummySettings
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def precompile_app_assets
|
21
|
+
puts 'Precompiling assets...'
|
22
|
+
|
23
|
+
generated_files_directory = File.expand_path(File.join('..', '..', 'generated'), __FILE__)
|
24
|
+
|
25
|
+
sprockets = Sprockets::Environment.new(File.join(Spec_root, '..', 'app', 'assets', 'javascripts'))
|
26
|
+
sprockets.append_path('settings-js')
|
27
|
+
|
28
|
+
assets = sprockets.find_asset('settings.js')
|
29
|
+
prefix, basename = assets.pathname.to_s.split('/')[-2..-1]
|
30
|
+
|
31
|
+
FileUtils.mkpath(File.join(generated_files_directory))
|
32
|
+
|
33
|
+
assets.write_to(File.join(generated_files_directory, basename))
|
34
|
+
assets.to_a.each do |asset|
|
35
|
+
realname = asset.pathname.basename.to_s.split('.')[0..1].join('.')
|
36
|
+
assets.write_to(File.join(generated_files_directory, basename))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
gem_configuration
|
41
|
+
precompile_app_assets
|
@@ -16,14 +16,16 @@ describe 'SettingsJs::Backends::SettingsLogic' do
|
|
16
16
|
|
17
17
|
describe '#to_hash' do
|
18
18
|
it 'returns subkeys when base key is in settings root' do
|
19
|
-
backend_instance.to_hash('key1').should == { 'sub_key1' => 'sub_value1' }
|
19
|
+
backend_instance.to_hash('key1').should == { 'key1' => { 'sub_key1' => 'sub_value1' }}
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'returns subkeys when base key is under the settings root' do
|
23
23
|
expected_hash = {
|
24
|
-
'
|
25
|
-
|
26
|
-
'
|
24
|
+
'sub_key2_2' => {
|
25
|
+
'sub_key2_2_1' => 'sub_value2_2_1' ,
|
26
|
+
'sub_key2_2_2' => {
|
27
|
+
'sub_key2_2_2_1' => 'sub_value2_2_2_1'
|
28
|
+
}
|
27
29
|
}
|
28
30
|
}
|
29
31
|
|
@@ -5,33 +5,32 @@ describe SettingsJs::Merger do
|
|
5
5
|
let(:merger) { SettingsJs::Merger.new }
|
6
6
|
|
7
7
|
describe '#to_hash' do
|
8
|
-
|
9
8
|
context 'when config.keys does not respond to "#reduce"' do
|
10
|
-
|
11
9
|
it 'raises an TypeError' do
|
12
|
-
SettingsJs.configuration { |config| config.keys =
|
10
|
+
SettingsJs.configuration { |config| config.keys = double(:not_reduceable_object) }
|
13
11
|
expect { merger.to_hash }.to raise_error(TypeError)
|
14
12
|
end
|
15
13
|
end
|
16
14
|
|
17
15
|
context 'when config.keys respond to "#reduce"' do
|
18
16
|
let(:reduceable_object) do
|
19
|
-
reduceable_object =
|
17
|
+
reduceable_object = double(:reduceable_object)
|
20
18
|
reduceable_object.stub(:reduce)
|
21
19
|
reduceable_object
|
22
20
|
end
|
23
21
|
|
24
22
|
it 'does not raise a TypeError' do
|
25
23
|
SettingsJs.configuration { |config| config.keys = reduceable_object }
|
26
|
-
expect { merger.to_hash }.to_not raise_error
|
24
|
+
expect { merger.to_hash }.to_not raise_error
|
27
25
|
end
|
28
26
|
end
|
29
27
|
|
30
28
|
it 'returns a hash which merge all keys hash response' do
|
31
|
-
backend =
|
32
|
-
backend.stub(:to_hash).and_return({ key1: 'value1'
|
29
|
+
backend = double(:backend)
|
30
|
+
backend.stub(:to_hash).with('key1').and_return({ key1: 'value1' })
|
31
|
+
backend.stub(:to_hash).with('key2').and_return({ key2: { key2_1: 'value2_1', key2_2: 'value2_2' }})
|
33
32
|
|
34
|
-
config =
|
33
|
+
config = double(:config)
|
35
34
|
config.stub(:keys).and_return(%w(key1 key2))
|
36
35
|
|
37
36
|
merger.stub(:config).and_return(config)
|
@@ -51,11 +50,11 @@ describe SettingsJs::Merger do
|
|
51
50
|
|
52
51
|
describe '#to_json' do
|
53
52
|
it 'calls #to_json method on the #to_hash result' do
|
54
|
-
|
55
|
-
|
56
|
-
merger.stub(:to_hash).and_return(
|
53
|
+
hash_doubleed = double(:hash)
|
54
|
+
hash_doubleed.stub(:to_json)
|
55
|
+
merger.stub(:to_hash).and_return(hash_doubleed)
|
57
56
|
|
58
|
-
|
57
|
+
hash_doubleed.should_receive(:to_json).once
|
59
58
|
|
60
59
|
merger.to_json
|
61
60
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,126 +1,111 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: settings_js
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Kevin Disneur
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-10-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activesupport
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>'
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>'
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: json
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>'
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>'
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: sprockets
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: jasmine
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rspec
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: settingslogic
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: shoulda
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - '>='
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - '>='
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
description:
|
@@ -130,8 +115,10 @@ extensions: []
|
|
130
115
|
extra_rdoc_files: []
|
131
116
|
files:
|
132
117
|
- .gitignore
|
133
|
-
- .
|
118
|
+
- .ruby-gemset
|
119
|
+
- .ruby-version
|
134
120
|
- .travis.yml
|
121
|
+
- CHANGELOG.markdown
|
135
122
|
- Gemfile
|
136
123
|
- README.markdown
|
137
124
|
- Rakefile
|
@@ -146,8 +133,8 @@ files:
|
|
146
133
|
- spec/javascripts/helpers/SpecHelper.js
|
147
134
|
- spec/javascripts/settings-js/settings_js_spec.js
|
148
135
|
- spec/javascripts/support/jasmine.yml
|
149
|
-
- spec/javascripts/support/
|
150
|
-
- spec/settings_js/backends/
|
136
|
+
- spec/javascripts/support/jasmine_helper.rb
|
137
|
+
- spec/settings_js/backends/settings_logic_spec.rb
|
151
138
|
- spec/settings_js/config_spec.rb
|
152
139
|
- spec/settings_js/merger_spec.rb
|
153
140
|
- spec/settings_js_spec.rb
|
@@ -155,35 +142,34 @@ files:
|
|
155
142
|
- spec/support/have_attr_accessor.rb
|
156
143
|
homepage: http://rubygems.org/gems/settings_js
|
157
144
|
licenses: []
|
145
|
+
metadata: {}
|
158
146
|
post_install_message:
|
159
147
|
rdoc_options: []
|
160
148
|
require_paths:
|
161
149
|
- lib
|
162
150
|
required_ruby_version: !ruby/object:Gem::Requirement
|
163
|
-
none: false
|
164
151
|
requirements:
|
165
|
-
- -
|
152
|
+
- - '>='
|
166
153
|
- !ruby/object:Gem::Version
|
167
154
|
version: '0'
|
168
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
156
|
requirements:
|
171
|
-
- -
|
157
|
+
- - '>='
|
172
158
|
- !ruby/object:Gem::Version
|
173
159
|
version: '0'
|
174
160
|
requirements: []
|
175
161
|
rubyforge_project:
|
176
|
-
rubygems_version:
|
162
|
+
rubygems_version: 2.0.6
|
177
163
|
signing_key:
|
178
|
-
specification_version:
|
164
|
+
specification_version: 4
|
179
165
|
summary: Sharing same application settings between ruby and javascript
|
180
166
|
test_files:
|
181
167
|
- spec/fixtures/settings_js/backends/settings_logic.yml
|
182
168
|
- spec/javascripts/helpers/SpecHelper.js
|
183
169
|
- spec/javascripts/settings-js/settings_js_spec.js
|
184
170
|
- spec/javascripts/support/jasmine.yml
|
185
|
-
- spec/javascripts/support/
|
186
|
-
- spec/settings_js/backends/
|
171
|
+
- spec/javascripts/support/jasmine_helper.rb
|
172
|
+
- spec/settings_js/backends/settings_logic_spec.rb
|
187
173
|
- spec/settings_js/config_spec.rb
|
188
174
|
- spec/settings_js/merger_spec.rb
|
189
175
|
- spec/settings_js_spec.rb
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm ruby-1.9.3-p327@settings-js --create
|
@@ -1,57 +0,0 @@
|
|
1
|
-
Spec_root = File.expand_path(File.join('..', '..', '..'), __FILE__)
|
2
|
-
|
3
|
-
$LOAD_PATH << File.join(Spec_root, '..', 'lib')
|
4
|
-
require 'settingslogic'
|
5
|
-
require 'settings_js'
|
6
|
-
require 'sprockets'
|
7
|
-
|
8
|
-
module Jasmine
|
9
|
-
|
10
|
-
class DummySettings < Settingslogic
|
11
|
-
source File.join(Spec_root, 'fixtures', 'settings_js', 'backends', 'settings_logic.yml')
|
12
|
-
end
|
13
|
-
|
14
|
-
|
15
|
-
class Config
|
16
|
-
|
17
|
-
def js_files(spec_filter = nil)
|
18
|
-
gem_configuration
|
19
|
-
|
20
|
-
precompile_app_assets
|
21
|
-
|
22
|
-
# this is code from the original jasmine config js_files method - you could also just alias_method_chain it
|
23
|
-
spec_files_to_include = spec_filter.nil? ? spec_files : match_files(spec_dir, [spec_filter])
|
24
|
-
src_files.collect { |f| '/' + f } + helpers.collect { |f| File.join(spec_path, f) } + spec_files_to_include.collect { |f| File.join(spec_path, f) }
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def gem_configuration
|
30
|
-
SettingsJs.configuration do |config|
|
31
|
-
config.backend = 'settings_logic'
|
32
|
-
config.keys = %w(key1 key2.sub_key2_2)
|
33
|
-
config.klass = DummySettings
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def precompile_app_assets
|
38
|
-
puts 'Precompiling assets...'
|
39
|
-
|
40
|
-
generated_files_directory = File.expand_path(File.join('..', '..', 'generated'), __FILE__)
|
41
|
-
|
42
|
-
sprockets = Sprockets::Environment.new(File.join(Spec_root, '..', 'app', 'assets', 'javascripts'))
|
43
|
-
sprockets.append_path('settings-js')
|
44
|
-
|
45
|
-
assets = sprockets.find_asset('settings.js')
|
46
|
-
prefix, basename = assets.pathname.to_s.split('/')[-2..-1]
|
47
|
-
|
48
|
-
FileUtils.mkpath(File.join(generated_files_directory))
|
49
|
-
|
50
|
-
assets.write_to(File.join(generated_files_directory, basename))
|
51
|
-
assets.to_a.each do |asset|
|
52
|
-
realname = asset.pathname.basename.to_s.split('.')[0..1].join('.')
|
53
|
-
assets.write_to(File.join(generated_files_directory, basename))
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|