volt 0.8.15 → 0.8.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +11 -0
  3. data/CHANGELOG.md +11 -0
  4. data/Gemfile +1 -1
  5. data/Guardfile +2 -3
  6. data/Rakefile +1 -4
  7. data/VERSION +1 -1
  8. data/app/volt/controllers/notices_controller.rb +1 -1
  9. data/app/volt/tasks/live_query/data_store.rb +7 -7
  10. data/app/volt/tasks/live_query/live_query.rb +7 -9
  11. data/app/volt/tasks/live_query/live_query_pool.rb +13 -12
  12. data/app/volt/tasks/live_query/query_tracker.rb +4 -5
  13. data/app/volt/tasks/query_tasks.rb +9 -11
  14. data/app/volt/tasks/store_tasks.rb +4 -4
  15. data/app/volt/tasks/user_tasks.rb +1 -1
  16. data/bin/volt +2 -2
  17. data/lib/volt.rb +3 -7
  18. data/lib/volt/assets/test.rb +1 -2
  19. data/lib/volt/benchmark/benchmark.rb +3 -3
  20. data/lib/volt/boot.rb +1 -1
  21. data/lib/volt/cli.rb +18 -18
  22. data/lib/volt/cli/asset_compile.rb +8 -10
  23. data/lib/volt/cli/generate.rb +9 -11
  24. data/lib/volt/cli/new_gem.rb +51 -51
  25. data/lib/volt/config.rb +2 -3
  26. data/lib/volt/console.rb +1 -1
  27. data/lib/volt/controllers/model_controller.rb +6 -6
  28. data/lib/volt/data_stores/data_store.rb +1 -1
  29. data/lib/volt/data_stores/mongo_driver.rb +1 -1
  30. data/lib/volt/extra_core/array.rb +2 -2
  31. data/lib/volt/extra_core/blank.rb +1 -2
  32. data/lib/volt/extra_core/extra_core.rb +1 -1
  33. data/lib/volt/extra_core/inflector/methods.rb +0 -1
  34. data/lib/volt/extra_core/logger.rb +13 -7
  35. data/lib/volt/extra_core/numeric.rb +1 -1
  36. data/lib/volt/extra_core/string.rb +7 -7
  37. data/lib/volt/extra_core/stringify_keys.rb +5 -5
  38. data/lib/volt/models.rb +2 -2
  39. data/lib/volt/models/array_model.rb +18 -19
  40. data/lib/volt/models/cursor.rb +0 -1
  41. data/lib/volt/models/model.rb +17 -35
  42. data/lib/volt/models/model_hash_behaviour.rb +0 -2
  43. data/lib/volt/models/model_state.rb +1 -1
  44. data/lib/volt/models/model_wrapper.rb +1 -1
  45. data/lib/volt/models/persistors/array_store.rb +26 -13
  46. data/lib/volt/models/persistors/base.rb +1 -1
  47. data/lib/volt/models/persistors/flash.rb +2 -2
  48. data/lib/volt/models/persistors/local_store.rb +2 -3
  49. data/lib/volt/models/persistors/model_store.rb +7 -6
  50. data/lib/volt/models/persistors/params.rb +2 -2
  51. data/lib/volt/models/persistors/query/query_listener.rb +2 -0
  52. data/lib/volt/models/persistors/query/query_listener_pool.rb +1 -1
  53. data/lib/volt/models/persistors/store.rb +1 -2
  54. data/lib/volt/models/persistors/store_state.rb +2 -3
  55. data/lib/volt/models/url.rb +17 -16
  56. data/lib/volt/models/validations.rb +11 -14
  57. data/lib/volt/models/validators/length_validator.rb +3 -3
  58. data/lib/volt/models/validators/presence_validator.rb +2 -2
  59. data/lib/volt/page/bindings/attribute_binding.rb +2 -3
  60. data/lib/volt/page/bindings/base_binding.rb +1 -1
  61. data/lib/volt/page/bindings/each_binding.rb +8 -9
  62. data/lib/volt/page/bindings/event_binding.rb +2 -3
  63. data/lib/volt/page/bindings/template_binding.rb +8 -7
  64. data/lib/volt/page/bindings/template_binding/grouped_controllers.rb +2 -1
  65. data/lib/volt/page/channel.rb +10 -10
  66. data/lib/volt/page/channel_stub.rb +1 -1
  67. data/lib/volt/page/document.rb +0 -1
  68. data/lib/volt/page/document_events.rb +4 -4
  69. data/lib/volt/page/page.rb +26 -19
  70. data/lib/volt/page/string_template_renderer.rb +2 -2
  71. data/lib/volt/page/sub_context.rb +10 -4
  72. data/lib/volt/page/targets/attribute_section.rb +1 -1
  73. data/lib/volt/page/targets/attribute_target.rb +1 -2
  74. data/lib/volt/page/targets/base_section.rb +4 -4
  75. data/lib/volt/page/targets/binding_document/base_node.rb +0 -1
  76. data/lib/volt/page/targets/binding_document/component_node.rb +4 -5
  77. data/lib/volt/page/targets/dom_section.rb +21 -22
  78. data/lib/volt/page/targets/dom_target.rb +1 -1
  79. data/lib/volt/page/targets/dom_template.rb +11 -12
  80. data/lib/volt/page/targets/helpers/comment_searchers.rb +7 -8
  81. data/lib/volt/page/tasks.rb +0 -1
  82. data/lib/volt/page/template_renderer.rb +1 -1
  83. data/lib/volt/page/url_tracker.rb +3 -3
  84. data/lib/volt/reactive/computation.rb +5 -11
  85. data/lib/volt/reactive/dependency.rb +1 -3
  86. data/lib/volt/reactive/eventable.rb +17 -4
  87. data/lib/volt/reactive/hash_dependency.rb +1 -0
  88. data/lib/volt/reactive/reactive_accessors.rb +0 -1
  89. data/lib/volt/reactive/reactive_array.rb +20 -25
  90. data/lib/volt/reactive/reactive_hash.rb +3 -3
  91. data/lib/volt/router/routes.rb +11 -13
  92. data/lib/volt/server.rb +17 -17
  93. data/lib/volt/server/component_handler.rb +2 -2
  94. data/lib/volt/server/component_templates.rb +8 -8
  95. data/lib/volt/server/html_parser/attribute_scope.rb +9 -10
  96. data/lib/volt/server/html_parser/if_view_scope.rb +2 -2
  97. data/lib/volt/server/html_parser/sandlebars_parser.rb +14 -14
  98. data/lib/volt/server/html_parser/textarea_scope.rb +1 -2
  99. data/lib/volt/server/html_parser/view_handler.rb +1 -1
  100. data/lib/volt/server/html_parser/view_parser.rb +1 -1
  101. data/lib/volt/server/html_parser/view_scope.rb +10 -10
  102. data/lib/volt/server/rack/asset_files.rb +15 -16
  103. data/lib/volt/server/rack/component_code.rb +2 -2
  104. data/lib/volt/server/rack/component_html_renderer.rb +0 -1
  105. data/lib/volt/server/rack/component_paths.rb +13 -10
  106. data/lib/volt/server/rack/index_files.rb +4 -4
  107. data/lib/volt/server/rack/opal_files.rb +4 -5
  108. data/lib/volt/server/rack/source_map_server.rb +3 -3
  109. data/lib/volt/server/socket_connection_handler.rb +3 -4
  110. data/lib/volt/server/socket_connection_handler_stub.rb +1 -1
  111. data/lib/volt/spec/setup.rb +3 -3
  112. data/lib/volt/store/mongo.rb +2 -2
  113. data/lib/volt/tasks/task_handler.rb +3 -3
  114. data/lib/volt/utils/generic_counting_pool.rb +2 -2
  115. data/lib/volt/utils/generic_pool.rb +7 -8
  116. data/lib/volt/utils/local_storage.rb +4 -4
  117. data/lib/volt/volt/environment.rb +1 -1
  118. data/spec/apps/file_loading/app/shared/config/dependencies.rb +1 -1
  119. data/spec/apps/kitchen_sink/Gemfile +0 -2
  120. data/spec/apps/kitchen_sink/app/main/config/routes.rb +5 -5
  121. data/spec/apps/kitchen_sink/app/main/controllers/main_controller.rb +7 -6
  122. data/spec/apps/kitchen_sink/app/main/controllers/todos_controller.rb +3 -4
  123. data/spec/controllers/reactive_accessors_spec.rb +4 -4
  124. data/spec/extra_core/inflector_spec.rb +1 -1
  125. data/spec/extra_core/string_transformation_test_cases.rb +23 -24
  126. data/spec/extra_core/string_transformations_spec.rb +11 -12
  127. data/spec/integration/bindings_spec.rb +15 -15
  128. data/spec/integration/list_spec.rb +12 -13
  129. data/spec/integration/templates_spec.rb +3 -3
  130. data/spec/models/model_spec.rb +74 -80
  131. data/spec/models/persistors/params_spec.rb +2 -2
  132. data/spec/models/persistors/store_spec.rb +4 -4
  133. data/spec/models/validations_spec.rb +14 -23
  134. data/spec/page/bindings/content_binding_spec.rb +7 -8
  135. data/spec/page/bindings/template_binding_spec.rb +22 -24
  136. data/spec/page/sub_context_spec.rb +2 -2
  137. data/spec/reactive/computation_spec.rb +3 -3
  138. data/spec/reactive/reactive_array_spec.rb +12 -12
  139. data/spec/router/routes_spec.rb +45 -48
  140. data/spec/server/html_parser/sandlebars_parser_spec.rb +42 -42
  141. data/spec/server/html_parser/view_parser_spec.rb +132 -153
  142. data/spec/server/rack/asset_files_spec.rb +9 -8
  143. data/spec/server/rack/component_paths_spec.rb +5 -5
  144. data/spec/server/rack/rack_requests_spec.rb +3 -3
  145. data/spec/spec_helper.rb +1 -1
  146. data/spec/tasks/live_query_spec.rb +4 -5
  147. data/spec/tasks/query_tasks.rb +2 -4
  148. data/spec/tasks/query_tracker_spec.rb +29 -29
  149. data/spec/templates/targets/binding_document/component_node_spec.rb +1 -1
  150. data/spec/utils/generic_counting_pool_spec.rb +4 -4
  151. data/spec/utils/generic_pool_spec.rb +12 -12
  152. data/templates/component/config/routes.rb +2 -2
  153. data/templates/component/controllers/main_controller.rb +7 -6
  154. data/templates/newgem/app/newgem/config/dependencies.rb +1 -1
  155. data/templates/newgem/app/newgem/config/routes.rb +1 -1
  156. data/templates/project/app/main/config/routes.rb +2 -2
  157. data/templates/project/app/main/controllers/main_controller.rb +7 -6
  158. data/templates/project/spec/sample_spec.rb +2 -2
  159. data/volt.gemspec +32 -33
  160. metadata +3 -4
  161. data/lib/volt/extra_core/log.rb +0 -56
  162. data/lib/volt/extra_core/try.rb +0 -31
@@ -1,13 +1,13 @@
1
1
  class Object
2
2
  def stringify_keys
3
- self.each_with_object({}) { |(key, value), hash|
3
+ each_with_object({}) do |(key, value), hash|
4
4
  hash[key.to_s] = value
5
- }
5
+ end
6
6
  end
7
7
 
8
8
  def symbolize_keys
9
- self.each_with_object({}) { |(key, value), hash|
9
+ each_with_object({}) do |(key, value), hash|
10
10
  hash[key.to_sym] = value
11
- }
11
+ end
12
12
  end
13
- end
13
+ end
@@ -11,6 +11,6 @@ if RUBY_PLATFORM == 'opal'
11
11
  require 'promise.rb'
12
12
  else
13
13
  # Opal doesn't expose its promise library directly
14
- spec = Gem::Specification.find_by_name("opal")
15
- require(spec.gem_dir + "/stdlib/promise")
14
+ spec = Gem::Specification.find_by_name('opal')
15
+ require(spec.gem_dir + '/stdlib/promise')
16
16
  end
@@ -22,9 +22,23 @@ module Volt
22
22
  end
23
23
  end
24
24
 
25
+ # Some methods get passed down to the persistor.
26
+ def self.proxy_to_persistor(*method_names)
27
+ method_names.each do |method_name|
28
+ define_method(method_name) do |*args, &block|
29
+ if @persistor.respond_to?(method_name)
30
+ @persistor.send(method_name, *args, &block)
31
+ else
32
+ raise "this model's persistance layer does not support #{method_name}, try using store"
33
+ end
34
+ end
35
+ end
36
+ end
37
+
25
38
  proxy_with_load_data :[], :size, :first, :last
39
+ proxy_to_persistor :find, :skip, :limit, :then
26
40
 
27
- def initialize(array=[], options={})
41
+ def initialize(array = [], options = {})
28
42
  @options = options
29
43
  @parent = options[:parent]
30
44
  @path = options[:path] || []
@@ -37,22 +51,6 @@ module Volt
37
51
  @persistor.loaded if @persistor
38
52
  end
39
53
 
40
- def find(*args, &block)
41
- if @persistor
42
- return @persistor.find(*args, &block)
43
- else
44
- raise "this model's persistance layer does not support find, try using store"
45
- end
46
- end
47
-
48
- def then(*args, &block)
49
- if @persistor
50
- @persistor.then(*args, &block)
51
- else
52
- raise "this model's persistance layer does not support then, try using store"
53
- end
54
- end
55
-
56
54
  def attributes
57
55
  self
58
56
  end
@@ -68,7 +66,7 @@ module Volt
68
66
 
69
67
  super(model)
70
68
 
71
- @persistor.added(model, @array.size-1) if @persistor
69
+ @persistor.added(model, @array.size - 1) if @persistor
72
70
 
73
71
  model
74
72
  end
@@ -107,7 +105,7 @@ module Volt
107
105
  def inspect
108
106
  if @persistor && @persistor.is_a?(Persistors::ArrayStore) && state == :not_loaded
109
107
  # Show a special message letting users know it is not loaded yet.
110
- "#<#{self.class.to_s}:not loaded, access with [] or size to load>"
108
+ "#<#{self.class}:not loaded, access with [] or size to load>"
111
109
  else
112
110
  # Otherwise inspect normally
113
111
  super
@@ -125,6 +123,7 @@ module Volt
125
123
  end
126
124
 
127
125
  private
126
+
128
127
  # Takes the persistor if there is one and
129
128
  def setup_persistor(persistor)
130
129
  if persistor
@@ -2,6 +2,5 @@ require 'volt/models/array_model'
2
2
 
3
3
  module Volt
4
4
  class Cursor < ArrayModel
5
-
6
5
  end
7
6
  end
@@ -7,7 +7,6 @@ require 'volt/models/model_state'
7
7
  require 'volt/reactive/reactive_hash'
8
8
 
9
9
  module Volt
10
-
11
10
  class NilMethodCall < NoMethodError
12
11
  end
13
12
 
@@ -110,7 +109,6 @@ module Volt
110
109
  !attributes
111
110
  end
112
111
 
113
-
114
112
  def method_missing(method_name, *args, &block)
115
113
  if method_name[0] == '_'
116
114
  if method_name[-1] == '='
@@ -149,7 +147,7 @@ module Volt
149
147
  # Reading an attribute, we may get back a nil model.
150
148
  method_name = method_name.to_sym
151
149
 
152
- if method_name[0] != '_' && @attributes == nil
150
+ if method_name[0] != '_' && @attributes.nil?
153
151
  # The method we are calling is on a nil model, return a wrapped
154
152
  # exception.
155
153
  return_undefined_method(method_name)
@@ -190,15 +188,13 @@ module Volt
190
188
  def return_undefined_method(method_name)
191
189
  # Methods called on nil capture an error so the user can know where
192
190
  # their nil calls are. This error can be re-raised at a later point.
193
- begin
194
- raise NilMethodCall.new("undefined method `#{method_name}' for #{self.to_s}")
195
- rescue => e
196
- result = e
197
-
198
- # Cleanup backtrace
199
- # TODO: this could be better
200
- result.backtrace.reject! { |line| line['lib/models/model.rb'] || line['lib/models/live_value.rb'] }
201
- end
191
+ fail NilMethodCall.new("undefined method `#{method_name}' for #{self}")
192
+ rescue => e
193
+ result = e
194
+
195
+ # Cleanup backtrace
196
+ # TODO: this could be better
197
+ result.backtrace.reject! { |line| line['lib/models/model.rb'] || line['lib/models/live_value.rb'] }
202
198
  end
203
199
 
204
200
  def new_model(attributes, options)
@@ -213,19 +209,6 @@ module Volt
213
209
  ArrayModel.new(attributes, options)
214
210
  end
215
211
 
216
- def trigger_by_attribute!(event_name, attribute, *passed_args)
217
- trigger_by_scope!(event_name, *passed_args) do |scope|
218
- method_name, *args, block = scope
219
-
220
- # TODO: Opal bug
221
- args ||= []
222
-
223
- # Any methods without _ are not directly related to one attribute, so
224
- # they should all trigger
225
- !method_name || method_name[0] != '_' || (method_name == attribute.to_sym && args.size == 0)
226
- end
227
- end
228
-
229
212
  # If this model is nil, it makes it into a hash model, then
230
213
  # sets it up to track from the parent.
231
214
  def expand!
@@ -244,7 +227,7 @@ module Volt
244
227
  if @parent
245
228
  @parent.expand!
246
229
  else
247
- raise "Model data should be stored in sub collections."
230
+ fail 'Model data should be stored in sub collections.'
248
231
  end
249
232
 
250
233
  # Grab the last section of the path, so we can do the assign on the parent
@@ -265,7 +248,7 @@ module Volt
265
248
 
266
249
  def inspect
267
250
  Computation.run_without_tracking do
268
- "<#{self.class.to_s}:#{object_id} #{attributes.inspect}>"
251
+ "<#{self.class}:#{object_id} #{attributes.inspect}>"
269
252
  end
270
253
  end
271
254
 
@@ -278,19 +261,19 @@ module Volt
278
261
  if save_to
279
262
  if save_to.is_a?(ArrayModel)
280
263
  # Add to the collection
281
- new_model = save_to << self.attributes
264
+ new_model = save_to << attributes
282
265
 
283
266
  # Set the buffer's id to track the main model's id
284
- self.attributes[:_id] = new_model._id
267
+ attributes[:_id] = new_model._id
285
268
  options[:save_to] = new_model
286
269
 
287
270
  # TODO: return a promise that resolves if the append works
288
271
  else
289
272
  # We have a saved model
290
- return save_to.assign_attributes(self.attributes)
273
+ return save_to.assign_attributes(attributes)
291
274
  end
292
275
  else
293
- raise "Model is not a buffer, can not be saved, modifications should be persisted as they are made."
276
+ fail 'Model is not a buffer, can not be saved, modifications should be persisted as they are made.'
294
277
  end
295
278
 
296
279
  Promise.new.resolve({})
@@ -304,7 +287,6 @@ module Volt
304
287
  end
305
288
  end
306
289
 
307
-
308
290
  # Returns a buffered version of the model
309
291
  def buffer
310
292
  model_path = options[:path]
@@ -322,7 +304,7 @@ module Volt
322
304
  if state == :loaded
323
305
  setup_buffer(model)
324
306
  else
325
- self.parent.then do
307
+ parent.then do
326
308
  setup_buffer(model)
327
309
  end
328
310
  end
@@ -330,10 +312,10 @@ module Volt
330
312
  model
331
313
  end
332
314
 
333
-
334
315
  private
316
+
335
317
  def setup_buffer(model)
336
- model.attributes = self.attributes
318
+ model.attributes = attributes
337
319
  model.change_state_to(:loaded)
338
320
  end
339
321
 
@@ -3,7 +3,6 @@ module Volt
3
3
  # Moving this into a module cleans up the main Model class for things that
4
4
  # make it behave like a model.
5
5
  module ModelHashBehaviour
6
-
7
6
  def delete(name)
8
7
  name = name.to_sym
9
8
 
@@ -45,7 +44,6 @@ module Volt
45
44
  (@attributes || {}).each_with_object(*args, &block)
46
45
  end
47
46
 
48
-
49
47
  # Convert the model to a hash all of the way down.
50
48
  def to_h
51
49
  if empty?
@@ -15,7 +15,7 @@ module Volt
15
15
  end
16
16
 
17
17
  def loaded?
18
- self.state == :loaded
18
+ state == :loaded
19
19
  end
20
20
  end
21
21
  end
@@ -12,7 +12,7 @@ module Volt
12
12
  end
13
13
  end
14
14
 
15
- def wrap_values(values, lookup=[])
15
+ def wrap_values(values, lookup = [])
16
16
  if values.is_a?(Array)
17
17
  # Coming from an array
18
18
  values.map { |v| wrap_value(v, lookup + [:[]]) }
@@ -15,10 +15,14 @@ module Volt
15
15
  @@query_pool
16
16
  end
17
17
 
18
- def initialize(model, tasks=nil)
18
+ def initialize(model, tasks = nil)
19
19
  super
20
20
 
21
21
  @query = @model.options[:query]
22
+ @limit = @model.options[:limit]
23
+ @skip = @model.options[:skip]
24
+
25
+ @skip = nil if @skip == 0
22
26
  end
23
27
 
24
28
  def event_added(event, first, first_for_event)
@@ -39,7 +43,7 @@ module Volt
39
43
 
40
44
  # Called when an event is removed and we no longer want to keep in
41
45
  # sync with the database.
42
- def stop_listening(stop_watching_query=true)
46
+ def stop_listening(stop_watching_query = true)
43
47
  return if @has_events
44
48
  return if @fetch_promises && @fetch_promises.size > 0
45
49
 
@@ -68,10 +72,10 @@ module Volt
68
72
 
69
73
  new_query = @query.call
70
74
 
71
- run_query(@model, @query.call)
75
+ run_query(@model, @query.call, @skip, @limit)
72
76
  end.watch!
73
77
  else
74
- run_query(@model, @query)
78
+ run_query(@model, @query, @skip, @limit)
75
79
  end
76
80
  end
77
81
  end
@@ -82,7 +86,7 @@ module Volt
82
86
  @model.clear
83
87
  end
84
88
 
85
- def run_query(model, query={})
89
+ def run_query(model, query={}, skip=nil, limit=nil)
86
90
  @model.clear
87
91
 
88
92
  collection = model.path.last
@@ -97,9 +101,11 @@ module Volt
97
101
  end
98
102
  end
99
103
 
100
- @query_listener = @@query_pool.lookup(collection, query) do
104
+ # The full query contains the skip and limit
105
+ full_query = [query, skip, limit]
106
+ @query_listener = @@query_pool.lookup(collection, full_query) do
101
107
  # Create if it does not exist
102
- QueryListener.new(@@query_pool, @tasks, collection, query)
108
+ QueryListener.new(@@query_pool, @tasks, collection, full_query)
103
109
  end
104
110
 
105
111
  @query_listener.add_store(self)
@@ -107,18 +113,26 @@ module Volt
107
113
 
108
114
  # Find can take either a query object, or a block that returns a query object. Use
109
115
  # the block style if you need reactive updating queries
110
- def find(query=nil, &block)
116
+ def find(query = nil, &block)
111
117
  # Set a default query if there is no block
112
118
  if block
113
119
  if query
114
- raise "Query should not be passed in to a find if a block is specified"
120
+ fail 'Query should not be passed in to a find if a block is specified'
115
121
  end
116
122
  query = block
117
123
  else
118
124
  query ||= {}
119
125
  end
120
126
 
121
- return Cursor.new([], @model.options.merge(:query => query))
127
+ return Cursor.new([], @model.options.merge(query: query))
128
+ end
129
+
130
+ def limit(limit)
131
+ return Cursor.new([], @model.options.merge(limit: limit))
132
+ end
133
+
134
+ def skip(skip)
135
+ return Cursor.new([], @model.options.merge(skip: skip))
122
136
  end
123
137
 
124
138
  # Returns a promise that is resolved/rejected when the query is complete. Any
@@ -137,7 +151,7 @@ module Volt
137
151
  load_data
138
152
  end
139
153
 
140
- return promise
154
+ promise
141
155
  end
142
156
 
143
157
  # Called from backend
@@ -147,7 +161,7 @@ module Volt
147
161
  data_id = data[:_id]
148
162
 
149
163
  # Don't add if the model is already in the ArrayModel
150
- if !@model.array.find { |v| v._id == data_id }
164
+ unless @model.array.find { |v| v._id == data_id }
151
165
  # Find the existing model, or create one
152
166
  new_model = @@identity_map.find(data_id) do
153
167
  new_options = @model.options.merge(path: @model.path + [:[]], parent: @model)
@@ -200,7 +214,6 @@ module Volt
200
214
  StoreTasks.delete(channel_name, model.attributes[:_id])
201
215
  end
202
216
  end
203
-
204
217
  end
205
218
  end
206
219
  end
@@ -2,7 +2,7 @@ module Volt
2
2
  module Persistors
3
3
  # Implements the base persistor functionality.
4
4
  class Base
5
- def loaded(initial_state=nil)
5
+ def loaded(initial_state = nil)
6
6
  end
7
7
 
8
8
  def changed(attribute_name)
@@ -10,11 +10,11 @@ module Volt
10
10
  def added(model, index)
11
11
  if Volt.client?
12
12
  # Setup a new timer for clearing the flash.
13
- %x{
13
+ `
14
14
  setTimeout(function() {
15
15
  self.$clear_model(model);
16
16
  }, 5000);
17
- }
17
+ `
18
18
  end
19
19
  end
20
20
 
@@ -4,7 +4,6 @@ require 'json'
4
4
 
5
5
  module Volt
6
6
  module Persistors
7
-
8
7
  # Backs a collection in the local store
9
8
  class LocalStore < Base
10
9
  def initialize(model)
@@ -24,7 +23,7 @@ module Volt
24
23
  end
25
24
  end
26
25
 
27
- return node
26
+ node
28
27
  end
29
28
 
30
29
  # Called when a model is added to the collection
@@ -32,7 +31,7 @@ module Volt
32
31
  root_model.persistor.save_all
33
32
  end
34
33
 
35
- def loaded(initial_state=nil)
34
+ def loaded(initial_state = nil)
36
35
  # When the main model is first loaded, we pull in the data from the
37
36
  # store if it exists
38
37
  if @model.path == []
@@ -6,7 +6,7 @@ module Volt
6
6
  class ModelStore < Store
7
7
  include StoreState
8
8
 
9
- ID_CHARS = [('a'..'f'), ('0'..'9')].map { |v| v.to_a }.flatten
9
+ ID_CHARS = [('a'..'f'), ('0'..'9')].map(&:to_a).flatten
10
10
 
11
11
  attr_reader :model
12
12
  attr_accessor :in_identity_map
@@ -49,11 +49,11 @@ module Volt
49
49
  id = []
50
50
  24.times { id << ID_CHARS.sample }
51
51
 
52
- return id.join
52
+ id.join
53
53
  end
54
54
 
55
55
  # Called when the model changes
56
- def changed(attribute_name=nil)
56
+ def changed(attribute_name = nil)
57
57
  path = @model.path
58
58
 
59
59
  promise = Promise.new
@@ -67,8 +67,8 @@ module Volt
67
67
  end
68
68
 
69
69
  if !collection
70
- puts "Attempting to save model directly on store."
71
- raise "Attempting to save model directly on store."
70
+ puts 'Attempting to save model directly on store.'
71
+ fail 'Attempting to save model directly on store.'
72
72
  else
73
73
  StoreTasks.save(collection, self_attributes).then do |errors|
74
74
  if errors.size == 0
@@ -103,10 +103,11 @@ module Volt
103
103
  end
104
104
 
105
105
  def [](val)
106
- raise "Models do not support hash style lookup. Hashes inserted into other models are converted to models, see https://github.com/voltrb/volt#automatic-model-conversion"
106
+ fail 'Models do not support hash style lookup. Hashes inserted into other models are converted to models, see https://github.com/voltrb/volt#automatic-model-conversion'
107
107
  end
108
108
 
109
109
  private
110
+
110
111
  # Return the attributes that are only for this store, not any sub-associations.
111
112
  def self_attributes
112
113
  # Don't store any sub-stores, those will do their own saving.