volt 0.8.22.beta2 → 0.8.22

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
2
  SHA1:
3
- metadata.gz: 5875c7df22b5abe60b184bcacdacb694df05610d
4
- data.tar.gz: dcb1674a686b781bfcaa59a207fd26935696145e
3
+ metadata.gz: e6ab3bfaaaef61c6d01c04750b95167dcd80515c
4
+ data.tar.gz: 8ade7dbaa63ee162ee463880a559736e004ddeed
5
5
  SHA512:
6
- metadata.gz: 91cc32e4a3903cf3a39ccf8cd410162eccc5231359ce07ad3755ff9c3c8e98461f8e3d94ec6697863b9cd3d4cc49b9f7f76e0e76741eb2bcba2c2c204c7a1f7c
7
- data.tar.gz: 7a6f53b64c30accb4f822b0cf0872ff523d9cf0ea33974b76d9a1caf7fca5890178867d871faddea087a4e6b3b03c68405bc2ec373101d157f20340e0d765907
6
+ metadata.gz: 937470848e406afe613e695d35f07b6c9a46bd4ddbd3e946c5b11327a1ea2a0d823bc111e4a40413db7c41681c1b31d61a235ff1e0862436386fe573a13aa206
7
+ data.tar.gz: f462b993fdc5a4f1a301131aaeae7767bd175e19478081417682542547d55c4109984f14b0426601fb21f03508fa578b3743bd15d845751c6a7e4e757d6ebae9
data/.travis.yml CHANGED
@@ -10,7 +10,7 @@ env:
10
10
  - secure: X95q9DUVJRLIoxd116xEbi/3xL85XiGbWdz0p5z/UawShQalMHxLfPNdU9u5gyw99LrgxTdPsJOTps8hB3vhzp8qIegrM8i2AICcicXC1QDOWi7McXSH9SBmE1AjhlyE/PLLHwLDeqfvwNMPAOrDH1GOisQp505D7SSXUZ9m0GI=
11
11
  matrix:
12
12
  - NO_BROWSER=true
13
- - BROWSER=sauce OS="Windows 8" USE_BROWSER="Firefox" VERSION="33"
13
+ # - BROWSER=sauce OS="Windows 8" USE_BROWSER="Firefox" VERSION="33"
14
14
  script: bundle exec rake
15
15
  notifications:
16
16
  webhooks:
data/CHANGELOG.md CHANGED
@@ -3,6 +3,9 @@
3
3
  ## 0.8.22 - 2014-...
4
4
  ### Added
5
5
  - Volt.config is now accessable from the client.
6
+ - Added ```.try``` to Object
7
+ - Added Volt.login
8
+ - successful asset loads are not logged in development
6
9
 
7
10
  ## 0.8.21 - 2014-11-05
8
11
  ### Changed
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.22.beta2
1
+ 0.8.22
@@ -5,7 +5,7 @@
5
5
  {{ if channel.status == :reconnecting }}
6
6
  <div class="notices alert alert-info">
7
7
  Connection Lost... {{ channel.error }}...
8
- {{ if channel.reconnect_interval }} Reconnecting in {{ (channel.reconnect_interval / 1000.0).round }} sec{{ end }}
8
+ {{ if channel.reconnect_interval }} Reconnecting in {{ (channel.reconnect_in / 1000.0).round }} sec{{ end }}
9
9
  </div>
10
10
  {{ end }}
11
11
  {{ if page._reconnected }}
data/lib/volt.rb CHANGED
@@ -48,57 +48,6 @@ module Volt
48
48
  def in_browser?
49
49
  @in_browser
50
50
  end
51
-
52
- # Get the user_id from the cookie
53
- def user_id
54
- if Volt.client?
55
- user_id_signature = $page.cookies._user_id
56
- else
57
- # Check meta for the user id and validate it
58
- meta_data = Thread.current['meta']
59
- if meta_data
60
- user_id_signature = meta_data['user_id']
61
- else
62
- user_id_signature = nil
63
- end
64
- end
65
-
66
- if user_id_signature.nil?
67
- return nil
68
- else
69
- index = user_id_signature.index(':')
70
- user_id = user_id_signature[0...index]
71
-
72
- if RUBY_PLATFORM != 'opal'
73
- hash = user_id_signature[(index+1)..-1]
74
-
75
- # Make sure the user hash matches
76
- if BCrypt::Password.new(hash) != "#{Volt.config.app_secret}::#{user._id}"
77
- # user id has been tampered with, reject
78
- raise "user id or hash has been tampered with"
79
- end
80
-
81
- end
82
-
83
- return user_id
84
- end
85
- end
86
-
87
- # True if the user is logged in and the user is loaded
88
- def user?
89
- !!user
90
- end
91
-
92
- # Return the current user.
93
- def user
94
- user_id = self.user_id
95
- if user_id
96
- return $page.store._users.find_one(_id: user_id)
97
- else
98
- return nil
99
- end
100
- end
101
-
102
51
  end
103
52
  end
104
53
 
@@ -31,7 +31,7 @@ module Volt
31
31
  model = self.current_model
32
32
 
33
33
  # If the model is a proc, call it now
34
- if model.is_a?(Proc)
34
+ if model && model.is_a?(Proc)
35
35
  model = model.call
36
36
  end
37
37
 
@@ -0,0 +1,75 @@
1
+ module Volt
2
+ module Buffer
3
+
4
+ def save!
5
+ # Compute the erros once
6
+ errors = self.errors
7
+
8
+ if errors.size == 0
9
+ save_to = options[:save_to]
10
+ if save_to
11
+ if save_to.is_a?(ArrayModel)
12
+ # Add to the collection
13
+ promise = save_to.append(attributes)
14
+ else
15
+ # We have a saved model
16
+ promise = save_to.assign_attributes(attributes)
17
+ end
18
+
19
+ return promise.then do |new_model|
20
+ if new_model
21
+ # Set the buffer's id to track the main model's id
22
+ attributes[:_id] = new_model._id
23
+ options[:save_to] = new_model
24
+ end
25
+
26
+ nil
27
+ end.fail do |errors|
28
+ if errors.is_a?(Hash)
29
+ server_errors.replace(errors)
30
+ end
31
+
32
+ promise_for_errors(errors)
33
+ end
34
+ else
35
+ fail 'Model is not a buffer, can not be saved, modifications should be persisted as they are made.'
36
+ end
37
+ else
38
+ # Some errors, mark all fields
39
+ promise_for_errors(errors)
40
+ end
41
+ end
42
+
43
+ # When errors come in, we mark all fields and return a rejected promise.
44
+ def promise_for_errors(errors)
45
+ mark_all_fields!
46
+
47
+ Promise.new.reject(errors)
48
+ end
49
+
50
+ # Returns a buffered version of the model
51
+ def buffer
52
+ model_path = options[:path]
53
+
54
+ # When we grab a buffer off of a plual class (subcollection), we get it as a model.
55
+ if model_path.last.plural? && model_path[-1] != :[]
56
+ model_klass = class_at_path(model_path + [:[]])
57
+ else
58
+ model_klass = class_at_path(model_path)
59
+ end
60
+
61
+ new_options = options.merge(path: model_path, save_to: self).reject { |k, _| k.to_sym == :persistor }
62
+ model = model_klass.new({}, new_options, :loading)
63
+
64
+ if state == :loaded
65
+ setup_buffer(model)
66
+ else
67
+ parent.then do
68
+ setup_buffer(model)
69
+ end
70
+ end
71
+
72
+ model
73
+ end
74
+ end
75
+ end
@@ -4,6 +4,7 @@ require 'volt/models/model_helpers'
4
4
  require 'volt/models/model_hash_behaviour'
5
5
  require 'volt/models/validations'
6
6
  require 'volt/models/model_state'
7
+ require 'volt/models/buffer'
7
8
  require 'volt/reactive/reactive_hash'
8
9
 
9
10
  module Volt
@@ -16,6 +17,7 @@ module Volt
16
17
  include ModelHashBehaviour
17
18
  include Validations
18
19
  include ModelState
20
+ include Buffer
19
21
 
20
22
  attr_reader :attributes
21
23
  attr_reader :parent, :path, :persistor, :options
@@ -155,7 +157,6 @@ module Volt
155
157
  # (maybe move it to persistor, though thats weird since buffers don't have a persistor)
156
158
  clear_server_errors(attribute_name) if @server_errors
157
159
 
158
-
159
160
  # Don't save right now if we're in a nosave block
160
161
  if !defined?(Thread) || !Thread.current['nosave']
161
162
  # Let the persistor know something changed
@@ -217,18 +218,6 @@ module Volt
217
218
  end
218
219
  end
219
220
 
220
- def return_undefined_method(method_name)
221
- # Methods called on nil capture an error so the user can know where
222
- # their nil calls are. This error can be re-raised at a later point.
223
- fail NilMethodCall.new("undefined method `#{method_name}' for #{self}")
224
- rescue => e
225
- result = e
226
-
227
- # Cleanup backtrace
228
- # TODO: this could be better
229
- result.backtrace.reject! { |line| line['lib/models/model.rb'] || line['lib/models/live_value.rb'] }
230
- end
231
-
232
221
  def new_model(attributes, options)
233
222
  class_at_path(options[:path]).new(attributes, options)
234
223
  end
@@ -279,80 +268,7 @@ module Volt
279
268
  end
280
269
 
281
270
  def inspect
282
- Computation.run_without_tracking do
283
- "<#{self.class}:#{object_id} #{attributes.inspect}>"
284
- end
285
- end
286
-
287
- def save!
288
- # Compute the erros once
289
- errors = self.errors
290
-
291
- if errors.size == 0
292
- save_to = options[:save_to]
293
- if save_to
294
- if save_to.is_a?(ArrayModel)
295
- # Add to the collection
296
- promise = save_to.append(attributes)
297
- else
298
- # We have a saved model
299
- promise = save_to.assign_attributes(attributes)
300
- end
301
-
302
- return promise.then do |new_model|
303
- if new_model
304
- # Set the buffer's id to track the main model's id
305
- attributes[:_id] = new_model._id
306
- options[:save_to] = new_model
307
- end
308
-
309
- nil
310
- end.fail do |errors|
311
- if errors.is_a?(Hash)
312
- server_errors.replace(errors)
313
- end
314
-
315
- promise_for_errors(errors)
316
- end
317
- else
318
- fail 'Model is not a buffer, can not be saved, modifications should be persisted as they are made.'
319
- end
320
- else
321
- # Some errors, mark all fields
322
- promise_for_errors(errors)
323
- end
324
- end
325
-
326
- # When errors come in, we mark all fields and return a rejected promise.
327
- def promise_for_errors(errors)
328
- mark_all_fields!
329
-
330
- Promise.new.reject(errors)
331
- end
332
-
333
- # Returns a buffered version of the model
334
- def buffer
335
- model_path = options[:path]
336
-
337
- # When we grab a buffer off of a plual class (subcollection), we get it as a model.
338
- if model_path.last.plural? && model_path[-1] != :[]
339
- model_klass = class_at_path(model_path + [:[]])
340
- else
341
- model_klass = class_at_path(model_path)
342
- end
343
-
344
- new_options = options.merge(path: model_path, save_to: self).reject { |k, _| k.to_sym == :persistor }
345
- model = model_klass.new({}, new_options, :loading)
346
-
347
- if state == :loaded
348
- setup_buffer(model)
349
- else
350
- parent.then do
351
- setup_buffer(model)
352
- end
353
- end
354
-
355
- model
271
+ "<#{self.class}:#{object_id} #{attributes.inspect}>"
356
272
  end
357
273
 
358
274
  # Takes a block that when run, changes to models will not save inside of
@@ -68,6 +68,12 @@ module Volt
68
68
  (@attributes || {}).each_with_object(*args, &block)
69
69
  end
70
70
 
71
+ def each(&block)
72
+ # TODO: We shouldn't need to check the size for this to work
73
+ size
74
+ @array.each(&block)
75
+ end
76
+
71
77
  def each_pair
72
78
  @attributes.each_pair do |k,v|
73
79
  yield(k,v) unless v.is_a?(Model) && v.nil?
@@ -81,7 +81,7 @@ module Volt
81
81
 
82
82
  # TODORW: :parent => @value may change
83
83
  item_context = SubContext.new({ _index_value: position, parent: @value }, @context)
84
- item_context.locals[@item_name.to_sym] = proc { @value[item_context.locals[:_index_value]] }
84
+ item_context.locals[@item_name.to_sym] = proc { @value[item_context.locals[:_index_value]]}
85
85
 
86
86
  position_dependency = Dependency.new
87
87
  item_context.locals[:index_dependency] = position_dependency
@@ -127,7 +127,7 @@ module Volt
127
127
  @computation = nil
128
128
 
129
129
  # Clear value
130
- @value = nil
130
+ @value = []
131
131
 
132
132
  if @added_listener
133
133
  @added_listener.remove
@@ -103,7 +103,10 @@ module Volt
103
103
  Computation.run_without_tracking do
104
104
  # Remove existing template and call _removed
105
105
  controller_send(:"#{@action}_removed") if @action && @controller
106
- @current_template.remove if @current_template
106
+ if @current_template
107
+ @current_template.remove
108
+ @current_template = nil
109
+ end
107
110
 
108
111
  @options = options
109
112
 
@@ -9,7 +9,7 @@ module Volt
9
9
  include ReactiveAccessors
10
10
  include Eventable
11
11
 
12
- reactive_accessor :connected, :status, :error, :reconnect_interval, :retry_count
12
+ reactive_accessor :connected, :status, :error, :reconnect_interval, :retry_count, :reconnect_in
13
13
 
14
14
  def initialize
15
15
  @socket = nil
@@ -45,11 +45,10 @@ module Volt
45
45
  end
46
46
 
47
47
  def opened
48
- old_status = @status
49
- @status = :open
50
- @connected = true
51
- @reconnect_interval = nil
52
- @retry_count = 0
48
+ self.status = :open
49
+ self.connected = true
50
+ self.reconnect_interval = nil
51
+ self.retry_count = 0
53
52
  @queue.each do |message|
54
53
  send_message(message)
55
54
  end
@@ -66,16 +65,14 @@ module Volt
66
65
  def reconnect!
67
66
  self.status = :reconnecting
68
67
  self.reconnect_interval ||= 0
69
- self.reconnect_interval += (2000 + rand(5000))
68
+ self.reconnect_interval += (1000 + rand(5000))
70
69
  self.retry_count += 1
71
70
 
72
71
  interval = self.reconnect_interval
73
72
 
74
- `
75
- setTimeout(function() {
76
- self['$connect!']();
77
- }, interval);
78
- `
73
+ self.reconnect_in = interval
74
+
75
+ reconnect_tick
79
76
  end
80
77
 
81
78
  def message_received(message)
@@ -102,5 +99,21 @@ module Volt
102
99
  this.socket.close();
103
100
  `
104
101
  end
102
+
103
+ private
104
+
105
+ def reconnect_tick
106
+ if reconnect_in >= 1000
107
+ self.reconnect_in -= 1000
108
+ `
109
+ setTimeout(function() {
110
+ self['$reconnect_tick']();
111
+ }, 1000);
112
+ `
113
+ else
114
+ connect!
115
+ end
116
+ end
117
+
105
118
  end
106
119
  end
@@ -0,0 +1,45 @@
1
+ require 'volt/spec/sauce_labs'
2
+
3
+ module Volt
4
+ class << self
5
+ def setup_capybara(app_path)
6
+ browser = ENV['BROWSER']
7
+
8
+ if browser
9
+ setup_capybara_app(app_path)
10
+
11
+ case browser
12
+ when 'phantom'
13
+ Capybara.default_driver = :poltergeist
14
+ when 'chrome', 'safari'
15
+ # Use the browser name, note that safari requires an extension to run
16
+ browser = browser.to_sym
17
+ Capybara.register_driver(browser) do |app|
18
+ Capybara::Selenium::Driver.new(app, browser: browser)
19
+ end
20
+
21
+ Capybara.default_driver = browser
22
+ when 'firefox'
23
+ Capybara.default_driver = :selenium
24
+ when 'sauce'
25
+ setup_sauce_labs
26
+ end
27
+ end
28
+ end
29
+
30
+ def setup_capybara_app(app_path)
31
+ require 'capybara'
32
+ require 'capybara/dsl'
33
+ require 'capybara/rspec'
34
+ require 'capybara/poltergeist'
35
+ require 'volt/server'
36
+
37
+ Capybara.server do |app, port|
38
+ require 'rack/handler/thin'
39
+ Rack::Handler::Thin.run(app, Port: port)
40
+ end
41
+
42
+ Capybara.app = Server.new(app_path).app
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,33 @@
1
+ module Volt
2
+ class << self
3
+ def setup_sauce_labs
4
+ require "sauce"
5
+ require "sauce/capybara"
6
+
7
+ Sauce.config do |c|
8
+ if ENV['OS']
9
+ # Use a specifc OS, BROWSER, VERSION combo (for travis)
10
+ c[:browsers] = [
11
+ [ENV['OS'], ENV['USE_BROWSER'], ENV['VERSION']]
12
+ ]
13
+ else
14
+ # Run all
15
+ c[:browsers] = [
16
+ # ["Windows 7", "Chrome", "30"],
17
+ # ["Windows 8", "Firefox", "28"],
18
+ ["Windows 8.1", "Internet Explorer", "11"],
19
+ ["Windows 8.0", "Internet Explorer", "10"],
20
+ ["Windows 7.0", "Internet Explorer", "9"],
21
+ # ["OSX 10.9", "iPhone", "8.1"],
22
+ # ["OSX 10.8", "Safari", "6"],
23
+ # ["Linux", "Chrome", "26"]
24
+ ]
25
+ end
26
+ c[:start_local_application] = false
27
+ end
28
+
29
+ Capybara.default_driver = :sauce
30
+ Capybara.javascript_driver = :sauce
31
+ end
32
+ end
33
+ end
@@ -1,88 +1,19 @@
1
1
  module Volt
2
- def self.spec_setup(app_path = '.')
3
- if RUBY_PLATFORM == 'opal'
2
+ class << self
3
+ def spec_setup(app_path = '.')
4
4
  require 'volt'
5
- else
6
- ENV['SERVER'] = 'true'
7
- ENV['VOLT_ENV'] = 'test'
5
+ unless RUBY_PLATFORM == 'opal'
6
+ require 'volt/spec/capybara'
8
7
 
9
- if ENV['BROWSER']
10
- require 'capybara'
11
- require 'capybara/dsl'
12
- require 'capybara/rspec'
13
- require 'capybara/poltergeist'
14
- end
15
-
16
- require 'volt'
17
- require 'volt/boot'
18
-
19
- # Require in app
20
- Volt.boot(app_path)
21
-
22
- if ENV['BROWSER']
23
- require 'volt/server'
24
-
25
- Capybara.server do |app, port|
26
- require 'rack/handler/thin'
27
- Rack::Handler::Thin.run(app, Port: port)
28
- end
29
-
30
- Capybara.app = Server.new(app_path).app
31
-
32
- if ENV['BROWSER'] == 'phantom'
33
- Capybara.default_driver = :poltergeist
34
- elsif ENV['BROWSER'] == 'chrome'
35
- Capybara.register_driver :chrome do |app|
36
- Capybara::Selenium::Driver.new(app, browser: :chrome)
37
- end
38
-
39
- Capybara.default_driver = :chrome
40
- elsif ENV['BROWSER'] == 'firefox'
41
-
42
- # require 'selenium/webdriver'
43
- # # require 'selenium/client'
44
- #
45
- Capybara.default_driver = :selenium
8
+ ENV['SERVER'] = 'true'
9
+ ENV['VOLT_ENV'] = 'test'
46
10
 
47
- # Capybara.register_driver :selenium_firefox do |app|
48
- # Capybara::Selenium::Driver.new(app, :browser => :firefox)
49
- # end
50
- # Capybara.current_driver = :selenium_firefox
51
- elsif ENV['BROWSER'] == 'safari'
52
- # Needs extension
53
- Capybara.register_driver :safari do |app|
54
- Capybara::Selenium::Driver.new(app, browser: :safari)
55
- end
56
- Capybara.default_driver = :safari
57
- elsif ENV['BROWSER'] == 'sauce'
58
- require "sauce"
59
- require "sauce/capybara"
11
+ require 'volt/boot'
60
12
 
61
- Sauce.config do |c|
62
- if ENV['OS']
63
- # Use a specifc OS, BROWSER, VERSION combo (for travis)
64
- c[:browsers] = [
65
- [ENV['OS'], ENV['USE_BROWSER'], ENV['VERSION']]
66
- ]
67
- else
68
- # Run all
69
- c[:browsers] = [
70
- # ["Windows 7", "Chrome", "30"],
71
- # ["Windows 8", "Firefox", "28"],
72
- ["Windows 8.1", "Internet Explorer", "11"],
73
- ["Windows 8.0", "Internet Explorer", "10"],
74
- ["Windows 7.0", "Internet Explorer", "9"],
75
- # ["OSX 10.9", "iPhone", "8.1"],
76
- # ["OSX 10.8", "Safari", "6"],
77
- # ["Linux", "Chrome", "26"]
78
- ]
79
- end
80
- c[:start_local_application] = false
81
- end
13
+ # Require in app
14
+ Volt.boot(app_path)
82
15
 
83
- Capybara.default_driver = :sauce
84
- Capybara.javascript_driver = :sauce
85
- end
16
+ setup_capybara(app_path)
86
17
  end
87
18
  end
88
19
  end
@@ -1,18 +1,80 @@
1
1
  module Volt
2
+ class << self
3
+ # Get the user_id from the cookie
4
+ def user_id
5
+ user_id_signature = self.user_id_signature
2
6
 
3
- # Login the user, return a promise for success
4
- def self.login(username, password)
5
- UserTasks.login(username, password).then do |result|
7
+ if user_id_signature.nil?
8
+ return nil
9
+ else
10
+ index = user_id_signature.index(':')
11
+ user_id = user_id_signature[0...index]
6
12
 
7
- # Assign the user_id cookie for the user
8
- $page.cookies._user_id = result
13
+ if RUBY_PLATFORM != 'opal'
14
+ hash = user_id_signature[(index+1)..-1]
9
15
 
10
- # Pass nil back
11
- nil
16
+ # Make sure the user hash matches
17
+ if BCrypt::Password.new(hash) != "#{Volt.config.app_secret}::#{user._id}"
18
+ # user id has been tampered with, reject
19
+ raise "user id or hash has been tampered with"
20
+ end
21
+
22
+ end
23
+
24
+ return user_id
25
+ end
12
26
  end
13
- end
14
27
 
15
- def self.logout
16
- $page.cookies.delete(:user_id)
28
+ # True if the user is logged in and the user is loaded
29
+ def user?
30
+ !!user
31
+ end
32
+
33
+ # Return the current user.
34
+ def user
35
+ user_id = self.user_id
36
+ if user_id
37
+ return $page.store._users.find_one(_id: user_id)
38
+ else
39
+ return nil
40
+ end
41
+ end
42
+
43
+ # Login the user, return a promise for success
44
+ def login(username, password)
45
+ UserTasks.login(username, password).then do |result|
46
+
47
+ # Assign the user_id cookie for the user
48
+ $page.cookies._user_id = result
49
+
50
+ # Pass nil back
51
+ nil
52
+ end
53
+ end
54
+
55
+ def logout
56
+ $page.cookies.delete(:user_id)
57
+ end
58
+
59
+
60
+ private
61
+
62
+ # Fetches the user_id+signature from the correct spot depending on client
63
+ # or server, does not verify it.
64
+ def user_id_signature
65
+ if Volt.client?
66
+ user_id_signature = $page.cookies._user_id
67
+ else
68
+ # Check meta for the user id and validate it
69
+ meta_data = Thread.current['meta']
70
+ if meta_data
71
+ user_id_signature = meta_data['user_id']
72
+ else
73
+ user_id_signature = nil
74
+ end
75
+ end
76
+
77
+ user_id_signature
78
+ end
17
79
  end
18
80
  end
data/volt.gemspec CHANGED
@@ -26,10 +26,10 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency 'sass', '~> 3.2.5'
27
27
  spec.add_dependency 'mongo', '~> 1.9.0'
28
28
  spec.add_dependency 'rake', '~> 10.0.4'
29
- spec.add_dependency 'listen', '~> 2.7.0'
30
- spec.add_dependency 'uglifier', '~> 2.4.0'
29
+ spec.add_dependency 'listen', '~> 2.8.0'
30
+ spec.add_dependency 'uglifier', '>= 2.4.0'
31
31
  spec.add_dependency "configurations", "~> 2.0.0.pre"
32
- spec.add_dependency 'yui-compressor', '~> 0.12.0'
32
+ spec.add_dependency 'yui-compressor', '>= 0.12.0'
33
33
  spec.add_dependency 'opal', '~> 0.6.0'
34
34
  spec.add_dependency 'opal-jquery', '~> 0.2.0'
35
35
  spec.add_dependency 'rspec-core', '~> 3.1.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: volt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.22.beta2
4
+ version: 0.8.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Stout
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-10 00:00:00.000000000 Z
11
+ date: 2014-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -114,26 +114,26 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 2.7.0
117
+ version: 2.8.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 2.7.0
124
+ version: 2.8.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: uglifier
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: 2.4.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: 2.4.0
139
139
  - !ruby/object:Gem::Dependency
@@ -154,14 +154,14 @@ dependencies:
154
154
  name: yui-compressor
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
159
  version: 0.12.0
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - "~>"
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: 0.12.0
167
167
  - !ruby/object:Gem::Dependency
@@ -473,6 +473,7 @@ files:
473
473
  - lib/volt/extra_core/true_false.rb
474
474
  - lib/volt/models.rb
475
475
  - lib/volt/models/array_model.rb
476
+ - lib/volt/models/buffer.rb
476
477
  - lib/volt/models/cursor.rb
477
478
  - lib/volt/models/model.rb
478
479
  - lib/volt/models/model_hash_behaviour.rb
@@ -556,6 +557,8 @@ files:
556
557
  - lib/volt/server/rack/source_map_server.rb
557
558
  - lib/volt/server/socket_connection_handler.rb
558
559
  - lib/volt/server/socket_connection_handler_stub.rb
560
+ - lib/volt/spec/capybara.rb
561
+ - lib/volt/spec/sauce_labs.rb
559
562
  - lib/volt/spec/setup.rb
560
563
  - lib/volt/store/mongo.rb
561
564
  - lib/volt/tasks/dispatcher.rb
@@ -700,9 +703,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
700
703
  version: '0'
701
704
  required_rubygems_version: !ruby/object:Gem::Requirement
702
705
  requirements:
703
- - - ">"
706
+ - - ">="
704
707
  - !ruby/object:Gem::Version
705
- version: 1.3.1
708
+ version: '0'
706
709
  requirements: []
707
710
  rubyforge_project:
708
711
  rubygems_version: 2.2.2