modularity-rails 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -3,6 +3,8 @@ before_script:
3
3
  - "sh -e /etc/init.d/xvfb start"
4
4
  language: ruby
5
5
  rvm:
6
+ - 1.8.7
7
+ - 1.9.2
6
8
  - 1.9.3
7
9
  script: bundle exec evergreen run
8
10
 
@@ -1,3 +1,3 @@
1
1
  module ModularityRails
2
- VERSION = "0.8.1"
2
+ VERSION = "0.9.0"
3
3
  end
@@ -7,8 +7,8 @@ describe 'test environment setup', ->
7
7
  loadCS "/vendor/assets/javascripts/mixins/closable.coffee"
8
8
 
9
9
  # A standard closable module.
10
- class window.ClosableModule1 extends Module
11
- @mixin closable
10
+ class window.ClosableModule1 extends modularity.Module
11
+ @mixin modularity.closable
12
12
 
13
13
 
14
14
  describe 'Closable', ->
@@ -37,8 +37,8 @@ describe 'Closable', ->
37
37
  it "calls the closable_closing hook on the object if it exists", ->
38
38
 
39
39
  # A closable module with the 'closing' hook.
40
- class ClosableModule extends Module
41
- @mixin closable
40
+ class ClosableModule extends modularity.Module
41
+ @mixin modularity.closable
42
42
 
43
43
  constructor: ->
44
44
  super
@@ -55,8 +55,8 @@ describe 'Closable', ->
55
55
  it "calls the closable_closed hook on the object if it exists", ->
56
56
 
57
57
  # A closable module with the 'closed' hook.
58
- class ClosableModule extends Module
59
- @mixin closable
58
+ class ClosableModule extends modularity.Module
59
+ @mixin modularity.closable
60
60
 
61
61
  constructor: ->
62
62
  super
@@ -72,8 +72,8 @@ describe 'Closable', ->
72
72
 
73
73
  it "aborts the close operation if the closable_closing method returns false", ->
74
74
 
75
- class ClosableModuleWithHookThatReturnsFalse extends Module
76
- @mixin closable
75
+ class ClosableModuleWithHookThatReturnsFalse extends modularity.Module
76
+ @mixin modularity.closable
77
77
  closable_closing: -> false
78
78
 
79
79
  module = new ClosableModuleWithHookThatReturnsFalse('#test #closable1')
@@ -7,7 +7,7 @@ describe 'setting up test environment', ->
7
7
 
8
8
  it 'defining test classes', ->
9
9
 
10
- class window.TestModule extends Module
10
+ class window.TestModule extends modularity.Module
11
11
  constructor: (container) ->
12
12
  super
13
13
 
@@ -22,7 +22,7 @@ describe 'modularity', ->
22
22
  spyOn window, 'alert'
23
23
 
24
24
  it "is defined on the 'window' object", ->
25
- expect(window.Module).not.toBeUndefined()
25
+ expect(modularity.Module).not.toBeUndefined()
26
26
 
27
27
  it 'shows an error if no container is given', ->
28
28
  new TestModule()
@@ -55,34 +55,34 @@ describe 'modularity', ->
55
55
  spyOn window, 'alert'
56
56
 
57
57
  it 'shows an alert with the given message if the given condition is false', ->
58
- Module.assert false, 'Message'
58
+ modularity.assert false, 'Message'
59
59
  expect(alert).toHaveBeenCalledWith("Message")
60
60
 
61
61
  it 'fails when the condition is null', ->
62
- Module.assert null, 'Message'
62
+ modularity.assert null, 'Message'
63
63
  expect(alert).toHaveBeenCalledWith("Message")
64
64
 
65
65
  it 'fails when the condition is undefined', ->
66
- Module.assert undefined, 'Message'
66
+ modularity.assert undefined, 'Message'
67
67
  expect(alert).toHaveBeenCalledWith("Message")
68
68
 
69
69
  it 'fails when the condition is an empty array', ->
70
- Module.assert [], 'Message'
70
+ modularity.assert [], 'Message'
71
71
  expect(alert).toHaveBeenCalledWith("Message")
72
72
 
73
73
  it 'fails when the condition is an empty string', ->
74
- Module.assert '', 'Message'
74
+ modularity.assert '', 'Message'
75
75
  expect(alert).toHaveBeenCalledWith("Message")
76
76
 
77
77
  it 'passes when the condition is a string', ->
78
- Module.assert '123', 'Message'
78
+ modularity.assert '123', 'Message'
79
79
  expect(alert).not.toHaveBeenCalled()
80
80
 
81
81
  it "returns false if the condition doesn't pass", ->
82
- expect(Module.assert(false)).toBeFalsy()
82
+ expect(modularity.assert(false)).toBeFalsy()
83
83
 
84
84
  it "returns true if the condition passes", ->
85
- expect(Module.assert('123')).toBeTruthy()
85
+ expect(modularity.assert('123')).toBeTruthy()
86
86
 
87
87
 
88
88
  describe 'jQuery Integration', ->
@@ -95,7 +95,7 @@ describe 'modularity', ->
95
95
  expect(alert).not.toHaveBeenCalled()
96
96
 
97
97
  it 'returns the created instance', ->
98
- result = $('#test #module_container').module(Module)
98
+ result = $('#test #module_container').module(modularity.Module)
99
99
  expect(result).toBeDefined()
100
100
  expect(typeof result).toEqual('object')
101
101
 
@@ -104,7 +104,7 @@ describe 'modularity', ->
104
104
  expect(alert).toHaveBeenCalled()
105
105
 
106
106
  it 'returns an error if the jQuery object is empty.', ->
107
- $('#test #zonk').module(Module)
107
+ $('#test #zonk').module(modularity.Module)
108
108
  expect(alert).toHaveBeenCalled()
109
109
 
110
110
 
@@ -195,7 +195,7 @@ describe 'modularity', ->
195
195
 
196
196
  beforeEach ->
197
197
  mockGlobalContainer = $('#test #module_container')
198
- spyOn(Module, 'global_event_container').andReturn(mockGlobalContainer)
198
+ spyOn(modularity, 'global_event_container').andReturn(mockGlobalContainer)
199
199
 
200
200
  describe 'bind_global_event', ->
201
201
 
@@ -204,31 +204,31 @@ describe 'modularity', ->
204
204
 
205
205
  it 'binds the given event type and callback method to the global event container', ->
206
206
  callback = ->
207
- Module.bind_global_event '123', callback
207
+ modularity.bind_global_event '123', callback
208
208
  expect(mockGlobalContainer.bind).toHaveBeenCalledWith('123', callback)
209
209
 
210
210
  it "throws an error if no parameters are given", ->
211
- Module.bind_global_event()
211
+ modularity.bind_global_event()
212
212
  expect(window.alert).toHaveBeenCalled()
213
213
  expect(mockGlobalContainer.bind).not.toHaveBeenCalled()
214
214
 
215
215
  it "throws an error if the given event type doesn't exist", ->
216
- Module.bind_global_event undefined, ->
216
+ modularity.bind_global_event undefined, ->
217
217
  expect(window.alert).toHaveBeenCalled()
218
218
  expect(mockGlobalContainer.bind).not.toHaveBeenCalled()
219
219
 
220
220
  it 'throws an error if the given event type is not a string', ->
221
- Module.bind_global_event {}, ->
221
+ modularity.bind_global_event {}, ->
222
222
  expect(window.alert).toHaveBeenCalled()
223
223
  expect(mockGlobalContainer.bind).not.toHaveBeenCalled()
224
224
 
225
225
  it "throws an error if the given callback doesn't exist", ->
226
- Module.bind_global_event '123'
226
+ modularity.bind_global_event '123'
227
227
  expect(window.alert).toHaveBeenCalled()
228
228
  expect(mockGlobalContainer.bind).not.toHaveBeenCalled()
229
229
 
230
230
  it 'throws an error if the given callback is not a function', ->
231
- Module.bind_global_event '123', {}
231
+ modularity.bind_global_event '123', {}
232
232
  expect(window.alert).toHaveBeenCalled()
233
233
  expect(mockGlobalContainer.bind).not.toHaveBeenCalled()
234
234
 
@@ -239,30 +239,31 @@ describe 'modularity', ->
239
239
  spyOn mockGlobalContainer, 'trigger'
240
240
 
241
241
  it 'triggers a custom jQuery event with the given event type on the global event container object', ->
242
- Module.fire_global_event 'event type', 'event data'
242
+ modularity.fire_global_event 'event type', 'event data'
243
243
  expect(mockGlobalContainer.trigger).toHaveBeenCalledWith('event type', 'event data')
244
244
 
245
245
  describe 'when no payload is given', ->
246
246
  it 'provides an empty object as payload', ->
247
- Module.fire_global_event 'event type'
247
+ modularity.fire_global_event 'event type'
248
248
  expect(mockGlobalContainer.trigger).toHaveBeenCalled()
249
249
  expect(mockGlobalContainer.trigger.argsForCall[0][1]).toEqual({})
250
250
 
251
251
  it "doesn't change the original payload variable", ->
252
252
  data = undefined
253
- Module.fire_global_event 'event type', data
253
+ modularity.fire_global_event 'event type', data
254
254
  expect(data).toBeUndefined
255
255
 
256
256
  it 'provides 0 as payload if 0 is given', ->
257
- Module.fire_global_event 'event type', 0
257
+ modularity.fire_global_event 'event type', 0
258
258
  expect(mockGlobalContainer.trigger).toHaveBeenCalled()
259
259
  expect(mockGlobalContainer.trigger.argsForCall[0][1]).toEqual(0)
260
260
 
261
261
  it 'throws an error if the given event type is not a string', ->
262
- Module.fire_global_event {}
262
+ modularity.fire_global_event {}
263
263
  expect(mockGlobalContainer.trigger).not.toHaveBeenCalled()
264
264
  expect(window.alert).toHaveBeenCalled()
265
265
 
266
+
266
267
  describe 'mixins', ->
267
268
 
268
269
  myMixin = instance = recordedSelf = Test = null
@@ -272,7 +273,7 @@ describe 'modularity', ->
272
273
  method2: ->
273
274
 
274
275
  beforeEach ->
275
- class Test extends Module
276
+ class Test extends modularity.Module
276
277
  @mixin myMixin
277
278
 
278
279
 
@@ -14,7 +14,7 @@ describe 'Button', ->
14
14
  describe 'manual clicks', ->
15
15
 
16
16
  it 'fires when clicking on the container directly', ->
17
- button = new window.Button($('#test #button1'))
17
+ button = new modularity.Button($('#test #button1'))
18
18
  button.bind_event('clicked', (spy = jasmine.createSpy()))
19
19
 
20
20
  button.container.click()
@@ -24,7 +24,7 @@ describe 'Button', ->
24
24
 
25
25
 
26
26
  it 'fires when clicking embedded elements of the button', ->
27
- button = new window.Button($('#test #button2'))
27
+ button = new modularity.Button($('#test #button2'))
28
28
  button.bind_event('clicked', (spy = jasmine.createSpy()))
29
29
 
30
30
  button.container.find('.embedded').click()
@@ -36,7 +36,7 @@ describe 'Button', ->
36
36
  describe 'programmatic clicks', ->
37
37
 
38
38
  it 'programmatically clicks the button', ->
39
- button = new window.Button($('#test #button2'))
39
+ button = new modularity.Button($('#test #button2'))
40
40
  spy = jasmine.createSpy()
41
41
  button.bind_event('clicked', spy)
42
42
 
@@ -17,7 +17,7 @@ describe 'CounterButton', ->
17
17
  describe 'manual clicks', ->
18
18
 
19
19
  it 'fires when clicking on the container directly', ->
20
- button = new window.CounterButton('#test #button1')
20
+ button = new modularity.CounterButton('#test #button1')
21
21
  button.bind_event('clicked', (spy = jasmine.createSpy()))
22
22
 
23
23
  button.container.click()
@@ -27,7 +27,7 @@ describe 'CounterButton', ->
27
27
 
28
28
 
29
29
  it 'fires when clicking embedded elements of the button', ->
30
- button = new window.CounterButton('#test #button2')
30
+ button = new modularity.CounterButton('#test #button2')
31
31
  button.bind_event('clicked', (spy = jasmine.createSpy()))
32
32
 
33
33
  button.container.find('.embedded').click()
@@ -38,7 +38,7 @@ describe 'CounterButton', ->
38
38
  describe 'programmatic clicks', ->
39
39
 
40
40
  it 'programmatically clicks the button', ->
41
- button = new window.CounterButton('#test #button2')
41
+ button = new modularity.CounterButton('#test #button2')
42
42
  spy = jasmine.createSpy()
43
43
  button.bind_event('clicked', spy)
44
44
 
@@ -49,7 +49,7 @@ describe 'CounterButton', ->
49
49
  describe 'CounterButton specific functionality', ->
50
50
 
51
51
  it 'provides the click counter as the event payload', ->
52
- button = new window.CounterButton('#test #button1')
52
+ button = new modularity.CounterButton('#test #button1')
53
53
  button.bind_event('clicked', (spy = jasmine.createSpy()))
54
54
 
55
55
  button.container.click()
@@ -1,30 +1,31 @@
1
- #= require spec_helper
2
-
3
1
  describe 'test environment setup', ->
4
2
 
5
3
   it 'loading libraries', ->
6
4
  load_modularity()
5
+    loadCS "/vendor/assets/javascripts/tools/cache.coffee"
7
6
     loadCS "/vendor/assets/javascripts/tools/ajax_loader.coffee"
8
7
 
9
8
 
10
9
  describe 'ajax_loader', ->
11
10
   
11
+ ajax_loader = null
12
+ beforeEach ->
13
+ ajax_loader = new modularity.AjaxLoader()
14
+
12
15
   describe 'get', ->
16
+
17
+ url = "/users/4"
13
18
  spy = null
14
19
  beforeEach ->
15
20
  spyOn(jQuery, 'get')
16
21
  spy = jasmine.createSpy()
17
- Module.loader.cache = {}
18
-
19
- url = "user/4"
20
22
 
21
23
  describe 'the data has already been loaded', ->
24
+
22
25
     it 'calls the callback with the cached data', ->
23
- spy = jasmine.createSpy()
24
- url = "/users/4"
26
+ ajax_loader.cache.add url, "my data"
25
27
 
26
- Module.loader.cache[url] = "my data"
27
- Module.loader.get(url, spy)
28
+ ajax_loader.get(url, spy)
28
29
 
29
30
  expect(spy).toHaveBeenCalled()
30
31
  expect(spy.argsForCall[0][0]).toEqual("my data")
@@ -33,13 +34,12 @@ describe 'ajax_loader', ->
33
34
  describe 'the request is already in progress', ->
34
35
 
35
36
  beforeEach ->
36
- Module.loader.cache[url] = []
37
- Module.loader.get(url, spy)
37
+ ajax_loader.cache.cache[url] = [spy]
38
38
 
39
39
 
40
40
  it 'adds the callback to the callback array', ->
41
- expect(Module.loader.cache[url].length).toEqual(1)
42
- expect(Module.loader.cache[url][0]).toEqual(spy)
41
+ expect(ajax_loader.cache.get(url).length).toEqual(1)
42
+ expect(ajax_loader.cache.get(url)[0]).toEqual(spy)
43
43
 
44
44
 
45
45
  it 'returns without calling the callback', ->
@@ -54,15 +54,15 @@ describe 'ajax_loader', ->
54
54
  describe 'first time request', ->
55
55
 
56
56
  beforeEach ->
57
- Module.loader.get(url, spy)
57
+ ajax_loader.get(url, spy)
58
58
 
59
59
  it 'makes an ajax request', ->
60
60
  expect(jQuery.get).toHaveBeenCalled()
61
61
 
62
62
 
63
63
  it 'saves the callback for later', ->
64
- expect(Module.loader.cache[url].length).toEqual(1)
65
- expect(Module.loader.cache[url][0]).toEqual(spy)
64
+ expect(ajax_loader.cache.get(url).length).toEqual(1)
65
+ expect(ajax_loader.cache.get(url)[0]).toEqual(spy)
66
66
 
67
67
  it 'returns without calling the callback', ->
68
68
  expect(spy).not.toHaveBeenCalled()
@@ -74,7 +74,7 @@ describe 'ajax_loader', ->
74
74
  beforeEach ->
75
75
  jquery_callback = null
76
76
  jQuery.get = (url, callback) -> jquery_callback = callback
77
- Module.loader.get url, spy
77
+ ajax_loader.get url, spy
78
78
  jquery_callback('result')
79
79
 
80
80
  it 'calls the given callbacks', ->
@@ -82,4 +82,4 @@ describe 'ajax_loader', ->
82
82
  expect(spy.argsForCall[0][0]).toEqual('result')
83
83
 
84
84
  it 'replaces the cache callbacks with returned data', ->
85
- expect(Module.loader.cache[url]).toEqual('result')
85
+ expect(ajax_loader.cache.get(url)).toEqual('result')
@@ -11,7 +11,7 @@ describe 'Cache', ->
11
11
 
12
12
  cache = null
13
13
  beforeEach ->
14
- cache = new window.Cache()
14
+ cache = new modularity.Cache()
15
15
 
16
16
 
17
17
  describe 'constructor', ->
@@ -1,6 +1,6 @@
1
1
  # This mixin adds a 'clickable' aspect to modules.
2
2
  # This means clicking anywhere on the module fires the 'clicked' event.
3
- window.clickable =
3
+ window.modularity.clickable =
4
4
 
5
5
  constructor: ->
6
6
  @container.click @container_clicked
@@ -17,5 +17,5 @@ window.clickable =
17
17
 
18
18
 
19
19
  # Event handler for clicks on this clickable element.
20
- container_clicked: -> @fire_event clickable.events.clicked
20
+ container_clicked: -> @fire_event modularity.clickable.events.clicked
21
21
 
@@ -1,4 +1,4 @@
1
- window.closable =
1
+ window.modularity.closable =
2
2
 
3
3
  constructor: (container) ->
4
4
  close_button = @container.find('.CloseButton')
@@ -5,7 +5,35 @@
5
5
  # Please see https://github.com/kevgo/modularity for more information.
6
6
 
7
7
 
8
- window.modularity or= {}
8
+ window.modularity = {
9
+
10
+ # Checks whether the given condition is true.
11
+ # Shows an alert with the given message if not.
12
+ assert: (condition, message) ->
13
+ condition_ok = condition?.length > 0
14
+ alert(message) unless condition_ok
15
+ condition_ok
16
+
17
+
18
+ # GLOBAL EVENTS.
19
+
20
+ # Subscribes to the given global event,
21
+ # i.e. calls the given function when the given global event type happens.
22
+ bind_global_event: (event_type, callback) ->
23
+ return unless modularity.assert event_type, "modularity.bind_global_event: parameter 'event_type' is empty"
24
+ return alert "modularity.bind_global_event: parameter 'callback' must be a function, #{callback} (#{typeof callback}) given." unless typeof callback == 'function'
25
+ modularity.global_event_container().bind event_type, callback
26
+
27
+ # Fires the given global event with the given data payload.
28
+ fire_global_event: (event_type, data) ->
29
+ modularity.assert event_type, 'Module.fire_global_event: You must provide the event type to fire.'
30
+ return alert("Module.fire_global_event: Event type must be a string, #{event_type} (#{typeof event_type}) given.") unless typeof event_type == 'string'
31
+ modularity.global_event_container().trigger event_type, data ?= []
32
+
33
+ # Returns the DOM object that is used to fire global events on.
34
+ global_event_container: -> modularity.global_event_container_cache or= $(window)
35
+ }
36
+
9
37
 
10
38
  class window.modularity.Module
11
39
 
@@ -34,24 +62,17 @@ class window.modularity.Module
34
62
  mixin_data.mixin.constructor.apply @, arguments
35
63
 
36
64
 
37
- # Checks whether the given condition is true.
38
- # Shows an alert with the given message if not.
39
- @assert: (condition, message) ->
40
- condition_ok = condition?.length > 0
41
- alert(message) unless condition_ok
42
- condition_ok
43
-
44
65
  # MODULE EVENTS.
45
66
 
46
67
  # Calls the given function when this widget fires the given local event.
47
68
  bind_event: (event_type, callback) =>
48
- return unless Module.assert event_type, "Module.bind_event: parameter 'event_type' is empty"
69
+ return unless modularity.assert event_type, "Module.bind_event: parameter 'event_type' is empty"
49
70
  return alert "Module.bind_event: parameter 'callback' must be a function, #{callback} (#{typeof callback}) given." unless typeof callback == 'function'
50
71
  @container.bind event_type, callback
51
72
 
52
73
  # Fires the given local event with the given data payload.
53
74
  fire_event: (event_type, data) =>
54
- Module.assert event_type, 'Module.fire_event: You must provide the event type to fire.'
75
+ modularity.assert event_type, 'Module.fire_event: You must provide the event type to fire.'
55
76
  return alert("Module.fire_event: Event type must be a string, #{event_type} (#{typeof event_type}) given.") unless typeof event_type == 'string'
56
77
  @container.trigger event_type, data ?= {}
57
78
 
@@ -63,25 +84,6 @@ class window.modularity.Module
63
84
  @prototype.mixins.push({mixin: mixin, params: p})
64
85
 
65
86
 
66
- # GLOBAL EVENTS.
67
-
68
- # Subscribes to the given global event,
69
- # i.e. calls the given function when the given global event type happens.
70
- @bind_global_event: (event_type, callback) =>
71
- return unless @assert event_type, "Module.bind_global_event: parameter 'event_type' is empty"
72
- return alert "Module.bind_global_event: parameter 'callback' must be a function, #{callback} (#{typeof callback}) given." unless typeof callback == 'function'
73
- @global_event_container().bind event_type, callback
74
-
75
- # Fires the given global event with the given data payload.
76
- @fire_global_event: (event_type, data) =>
77
- @assert event_type, 'Module.fire_global_event: You must provide the event type to fire.'
78
- return alert("Module.fire_global_event: Event type must be a string, #{event_type} (#{typeof event_type}) given.") unless typeof event_type == 'string'
79
- @global_event_container().trigger event_type, data ?= []
80
-
81
- # Returns the DOM object that is used to fire global events on.
82
- @global_event_container: => @global_event_container_cache or= $(window)
83
-
84
-
85
87
  # jQuery integration for creating Modules.
86
88
  #
87
89
  # Call like this: myModule = $('...').module(MyModuleClass)
@@ -3,6 +3,6 @@
3
3
  # A button module.
4
4
  # Responds to clicks on the container element.
5
5
  # The container element is expected to already be populated.
6
- class window.modularity.Button extends Module
7
- @mixin clickable
6
+ class window.modularity.Button extends window.modularity.Module
7
+ @mixin window.modularity.clickable
8
8
 
@@ -1,7 +1,7 @@
1
1
  # A button that counts how often it is clicked.
2
2
  # This is implemented as a subclass of Button,
3
3
  # to take advantage of the already existing functionality there.
4
- class window.modularity.CounterButton extends Button
4
+ class window.modularity.CounterButton extends modularity.Button
5
5
 
6
6
  constructor: ->
7
7
  super
@@ -1,3 +1,6 @@
1
+ #= require tools/cache
2
+
3
+
1
4
  # A generic ajax loader for parallel GET requests.
2
5
  # Prevents duplicate requests, caches the responses
3
6
  # to answer subsequent requests immediately
@@ -5,24 +8,26 @@
5
8
  #
6
9
  # Warning: Caches the responses, so once a request is cached,
7
10
  # any new content on the same URL will not be visible!
8
- Module.loader =
11
+ class modularity.AjaxLoader
12
+
13
+ constructor: ->
14
+ @cache = new modularity.Cache()
9
15
 
10
- cache: {}
11
16
 
12
17
  get: (url, callback) ->
13
- cache = Module.loader.cache[url]
18
+ cached_value = @cache.get url
14
19
 
15
20
  # New request --> start GET call, store callback.
16
- unless cache?
17
- Module.loader.cache[url] = [callback]
18
- return jQuery.get url, (data) ->
19
- cb(data) for cb in Module.loader.cache[url]
20
- Module.loader.cache[url] = data
21
+ unless cached_value?
22
+ @cache.add url, [callback]
23
+ return jQuery.get url, (data) =>
24
+ cb(data) for cb in @cache.get(url)
25
+ @cache.add url, data
21
26
 
22
27
  # Request while the GET call is still pending -->
23
28
  # add the given callback to the list of waiting callbacks.
24
- if cache.constructor is Array
25
- return cache.push callback
29
+ if cached_value.constructor is Array
30
+ return cached_value.push callback
26
31
 
27
32
  # There is a cached response for this request --> answer the request immediately.
28
- callback(cache)
33
+ callback(cached_value)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modularity-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.9.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-10 00:00:00.000000000 Z
12
+ date: 2012-05-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70325015499260 !ruby/object:Gem::Requirement
16
+ requirement: &70160283637480 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70325015499260
24
+ version_requirements: *70160283637480
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: capybara-webkit
27
- requirement: &70325015480180 !ruby/object:Gem::Requirement
27
+ requirement: &70160283637020 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70325015480180
35
+ version_requirements: *70160283637020
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: evergreen
38
- requirement: &70325015479500 !ruby/object:Gem::Requirement
38
+ requirement: &70160283636560 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70325015479500
46
+ version_requirements: *70160283636560
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rb-fsevent
49
- requirement: &70325015478760 !ruby/object:Gem::Requirement
49
+ requirement: &70160283635920 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70325015478760
57
+ version_requirements: *70160283635920
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: guard-livereload
60
- requirement: &70325015478160 !ruby/object:Gem::Requirement
60
+ requirement: &70160283635300 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70325015478160
68
+ version_requirements: *70160283635300
69
69
  description: Description of ModularityRails.
70
70
  email:
71
71
  - kevin.goslar@gmail.com
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
125
  version: '0'
126
126
  requirements: []
127
127
  rubyforge_project:
128
- rubygems_version: 1.8.10
128
+ rubygems_version: 1.8.15
129
129
  signing_key:
130
130
  specification_version: 3
131
131
  summary: Summary of ModularityRails.