volt 0.9.4 → 0.9.5.pre1

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -1
  3. data/Gemfile +3 -1
  4. data/lib/volt/cli/asset_compile.rb +8 -9
  5. data/lib/volt/extra_core/object.rb +3 -1
  6. data/lib/volt/models/associations.rb +9 -6
  7. data/lib/volt/models/buffer.rb +3 -0
  8. data/lib/volt/models/field_helpers.rb +38 -21
  9. data/lib/volt/models/model.rb +1 -1
  10. data/lib/volt/models/permissions.rb +2 -2
  11. data/lib/volt/models/validations/validations.rb +5 -1
  12. data/lib/volt/models/validators/numericality_validator.rb +6 -2
  13. data/lib/volt/page/bindings/each_binding.rb +7 -0
  14. data/lib/volt/page/bindings/view_binding.rb +22 -20
  15. data/lib/volt/server/component_templates.rb +21 -7
  16. data/lib/volt/server/message_bus/message_encoder.rb +4 -0
  17. data/lib/volt/server/message_bus/peer_to_peer/peer_connection.rb +1 -1
  18. data/lib/volt/server/middleware/default_middleware_stack.rb +1 -5
  19. data/lib/volt/server/rack/asset_files.rb +59 -13
  20. data/lib/volt/server/rack/component_code.rb +1 -7
  21. data/lib/volt/server/rack/index_files.rb +12 -4
  22. data/lib/volt/server/rack/opal_files.rb +29 -7
  23. data/lib/volt/server/template_handlers/sprockets_component_handler.rb +163 -0
  24. data/lib/volt/server.rb +2 -3
  25. data/lib/volt/utils/generic_pool.rb +1 -1
  26. data/lib/volt/version.rb +1 -1
  27. data/lib/volt/volt/app.rb +1 -1
  28. data/lib/volt.rb +6 -1
  29. data/spec/apps/kitchen_sink/config/base/index.html +3 -7
  30. data/spec/integration/bindings_spec.rb +1 -0
  31. data/spec/models/associations_spec.rb +18 -0
  32. data/spec/models/buffer_spec.rb +12 -0
  33. data/spec/server/rack/asset_files_spec.rb +35 -25
  34. data/templates/project/config/base/index.html +2 -7
  35. data/volt.gemspec +5 -5
  36. metadata +13 -28
  37. data/lib/volt/server/component_handler.rb +0 -42
  38. data/lib/volt/server/template_handlers/handlers.rb +0 -0
@@ -10,7 +10,7 @@ ENV['EXECJS_RUNTIME'] = 'Node'
10
10
  # Sets up the maps for the opal assets, and source maps if enabled.
11
11
  module Volt
12
12
  class OpalFiles
13
- attr_reader :environment
13
+ attr_reader :environment, :server
14
14
 
15
15
  def initialize(builder, app_path, component_paths)
16
16
  Opal::Processor.source_map_enabled = Volt.source_maps?
@@ -34,11 +34,12 @@ module Volt
34
34
  # Opal::Processor.arity_check_enabled = !Volt.env.production?
35
35
  # Opal::Processor.dynamic_require_severity = :raise
36
36
 
37
- server = Opal::Server.new(prefix: '/')
37
+ @server = Opal::Server.new(prefix: '/assets', debug: Volt.source_maps?)
38
+ @server.use_index = false
38
39
 
39
40
  @component_paths = component_paths
40
41
  # @environment = Opal::Environment.new
41
- @environment = server.sprockets
42
+ @environment = @server.sprockets
42
43
 
43
44
  # Since the scope changes in builder blocks, we need to capture
44
45
  # environment in closure
@@ -59,17 +60,38 @@ module Volt
59
60
  Csso.install(environment)
60
61
  end
61
62
 
62
- server.append_path(app_path)
63
+ @server.append_path(app_path)
63
64
 
64
65
  volt_gem_lib_path = File.expand_path(File.join(File.dirname(__FILE__), '../../..'))
65
- server.append_path(volt_gem_lib_path)
66
+ @server.append_path(volt_gem_lib_path)
66
67
 
67
- add_asset_folders(server)
68
+ add_asset_folders(@server)
68
69
 
70
+ env = @enviroment
69
71
  builder.map '/assets' do
70
- run server
72
+ run environment
71
73
  end
72
74
 
75
+ @environment.logger.level ||= Logger::DEBUG
76
+ source_map_enabled = Volt.source_maps?
77
+ if source_map_enabled
78
+ maps_prefix = Opal::Server::SOURCE_MAPS_PREFIX_PATH
79
+ maps_app = Opal::SourceMapServer.new(@environment, maps_prefix)
80
+ ::Opal::Sprockets::SourceMapHeaderPatch.inject!(maps_prefix)
81
+ end
82
+
83
+ if source_map_enabled
84
+ builder.map(maps_prefix) do
85
+ require 'rack/conditionalget'
86
+ require 'rack/etag'
87
+ use Rack::ConditionalGet
88
+ use Rack::ETag
89
+ run maps_app
90
+ end
91
+ end
92
+
93
+
94
+
73
95
  # map server.source_maps.prefix do
74
96
  # run server.source_maps
75
97
  # end
@@ -0,0 +1,163 @@
1
+ # This file Monkeypatches sprockets to provide custom file loading (from volt
2
+ # instead disk) for component root files. These files then require in all parts
3
+ # or include generated ruby for templates, routes, and tasks.
4
+ module Volt
5
+ class StatStub
6
+ def directory?
7
+ false
8
+ end
9
+
10
+ def file?
11
+ false
12
+ end
13
+
14
+ def stub?
15
+ true
16
+ end
17
+
18
+ def digest
19
+ "stub-digest-#{mtime}"
20
+ end
21
+
22
+ def mtime
23
+ # return a random mtime so it always reloads
24
+ rand(2_000_000_000)
25
+ end
26
+ end
27
+ end
28
+
29
+ module Sprockets
30
+ # Internal: The first processor in the pipeline that reads the file into
31
+ # memory and passes it along as `input[:data]`.
32
+ class FileReader
33
+ def self.call(input)
34
+ env = input[:environment]
35
+ path = input[:filename]
36
+
37
+ # Handle a /components path match. /components will load up a component.
38
+ if path =~ /\/components\/[^.]+[.]rb$/
39
+ component_name = path.match(/\/components\/([^.]+)[.]rb$/)[1]
40
+
41
+ cached = env.cached
42
+
43
+ stats = cached.instance_variable_get('@stats')
44
+
45
+ stats[path] = Volt::StatStub.new
46
+
47
+ # Working with a component path
48
+ data = Volt::ComponentCode.new(component_name, $volt_app.component_paths, true).code
49
+ else
50
+ data = env.read_file(input[:filename], input[:content_type])
51
+ end
52
+
53
+ dependencies = Set.new(input[:metadata][:dependencies])
54
+ dependencies += [env.build_file_digest_uri(input[:filename])]
55
+
56
+ { data: data, dependencies: dependencies }
57
+ end
58
+ end
59
+ end
60
+
61
+ module Sprockets
62
+ # Internal: File and path related utilities. Mixed into Environment.
63
+ #
64
+ # Probably would be called FileUtils, but that causes namespace annoyances
65
+ # when code actually wants to reference ::FileUtils.
66
+ module PathUtils
67
+ extend self
68
+
69
+ # Public: Like `File.file?`.
70
+ #
71
+ # path - String file path.
72
+ #
73
+ # Returns true path exists and is a file.
74
+ def file?(path)
75
+ # if path =~ /\/components\/[^.]+[.]rb$/
76
+ # return true
77
+ # end
78
+
79
+ if stat = self.stat(path)
80
+ stat.file?
81
+ elsif path =~ /^#{Volt.root}\/app\/components\/[^\/]+[.]rb$/
82
+ # Matches a component
83
+ return true
84
+ else
85
+ false
86
+ end
87
+ end
88
+
89
+ # Public: Like `File.directory?`.
90
+ #
91
+ # path - String file path.
92
+ #
93
+ # Returns true path exists and is a directory.
94
+ def directory?(path)
95
+ # if path == '/Users/ryanstout/Sites/volt/volt/app/components/main'
96
+ # return true
97
+ # end
98
+
99
+ if stat = self.stat(path)
100
+ stat.directory?
101
+ # else
102
+ elsif path =~ /^#{Volt.root}\/app\/components\/[^\/]+$/
103
+ # Matches a component
104
+ return true
105
+ else
106
+ false
107
+ end
108
+ end
109
+ end
110
+ end
111
+
112
+ module Sprockets
113
+ module PathDigestUtils
114
+ def stat_digest(path, stat)
115
+ if stat.directory?
116
+ # If its a directive, digest the list of filenames
117
+ digest_class.digest(self.entries(path).join(','))
118
+ elsif stat.file?
119
+ # If its a file, digest the contents
120
+ digest_class.file(path.to_s).digest
121
+ elsif stat.stub?
122
+ # Component lookup, custom digest that always invalidates
123
+ return stat.digest
124
+ else
125
+ raise TypeError, "stat was not a directory or file: #{stat.ftype}"
126
+ end
127
+ end
128
+ end
129
+ end
130
+
131
+ module Sprockets
132
+ module Resolve
133
+ def path_matches(load_path, logical_name, logical_basename)
134
+
135
+ dirname = File.dirname(File.join(load_path, logical_name))
136
+ candidates = dirname_matches(dirname, logical_basename)
137
+ deps = file_digest_dependency_set(dirname)
138
+
139
+ if load_path == "#{Volt.root}/app"
140
+ match = logical_name.match(/^components\/([^\/]+)$/)
141
+ if match && (component_name = match[1])
142
+ return [["#{Volt.root}/app/components/#{component_name}.rb", "application/javascript"]], deps
143
+ end
144
+ end
145
+
146
+ result = resolve_alternates(load_path, logical_name)
147
+ result[0].each do |fn|
148
+ candidates << [fn, parse_path_extnames(fn)[1]]
149
+ end
150
+ deps.merge(result[1])
151
+
152
+ dirname = File.join(load_path, logical_name)
153
+ if directory? dirname
154
+ result = dirname_matches(dirname, "index")
155
+ candidates.concat(result)
156
+ end
157
+
158
+ deps.merge(file_digest_dependency_set(dirname))
159
+
160
+ return candidates.select { |fn, _| file?(fn) }, deps
161
+ end
162
+ end
163
+ end
data/lib/volt/server.rb CHANGED
@@ -5,13 +5,12 @@ require 'opal'
5
5
  require 'rack'
6
6
  require 'sass'
7
7
  require 'volt/utils/tilt_patch'
8
- require 'sprockets-sass'
9
8
 
10
9
  require 'volt'
11
10
  require 'volt/tasks/dispatcher'
12
11
  require 'volt/tasks/task'
13
- require 'volt/server/component_handler'
14
- require 'volt/server/rack/component_paths'
12
+ require 'volt/server/rack/component_code'
13
+ require 'volt/server/template_handlers/sprockets_component_handler'
15
14
 
16
15
  require 'volt/server/websocket/websocket_handler'
17
16
  require 'volt/utils/read_write_lock'
@@ -112,7 +112,7 @@ module Volt
112
112
  end
113
113
 
114
114
  def inspect
115
- "<#{self.class} #{@pool.inspect}>"
115
+ "<#{self.class}:#{object_id} #{@pool.inspect}>"
116
116
  end
117
117
 
118
118
  def print
data/lib/volt/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Volt
2
2
  module Version
3
- STRING = '0.9.4'
3
+ STRING = '0.9.5.pre1'
4
4
  end
5
5
  end
data/lib/volt/volt/app.rb CHANGED
@@ -44,7 +44,7 @@ module Volt
44
44
  attr_reader :component_paths, :router, :live_query_pool,
45
45
  :channel_live_queries, :app_path, :database, :message_bus,
46
46
  :middleware, :browser
47
- attr_accessor :sprockets
47
+ attr_accessor :sprockets, :opal_files
48
48
 
49
49
  def initialize(app_path=nil)
50
50
  if Volt.server? && !app_path
data/lib/volt.rb CHANGED
@@ -40,7 +40,12 @@ module Volt
40
40
  end
41
41
 
42
42
  def source_maps?
43
- !!ENV['MAPS']
43
+ if !ENV['MAPS']
44
+ # If no MAPS is specified, enable it in dev
45
+ Volt.env.development?
46
+ else
47
+ ENV['MAPS'] != 'false'
48
+ end
44
49
  end
45
50
 
46
51
  def env
@@ -2,14 +2,10 @@
2
2
  <html>
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
- <% javascript_files.each do |javascript_file| %>
6
- <script src="<%= javascript_file %>"></script>
7
- <% end %>
5
+ <%= javascript_tags %>
6
+
7
+ <%= css_tags %>
8
8
 
9
- <% css_files.each do |css_file| %>
10
- <link href="<%= css_file %>" media="all" rel="stylesheet" type="text/css" />
11
- <% end %>
12
-
13
9
  </head>
14
10
  <body>
15
11
 
@@ -3,6 +3,7 @@ require 'spec_helper'
3
3
  describe 'bindings test', type: :feature, sauce: true do
4
4
  it 'should load the page' do
5
5
  visit '/'
6
+ sleep 10
6
7
 
7
8
  expect(page).to have_content('Kitchen Sink')
8
9
  end
@@ -9,6 +9,10 @@ class ::Address < Volt::Model
9
9
  has_one :zip_info
10
10
  end
11
11
 
12
+ class ::AddressBelongToOption < Volt::Model
13
+ belongs_to :someone, collection: :person, foreign_key: :id, local_key: :some_weird_id
14
+ end
15
+
12
16
  class ::ZipInfo < Volt::Model
13
17
  belongs_to :address
14
18
  end
@@ -29,6 +33,20 @@ describe Volt::Associations do
29
33
  expect(address.person.sync.id).to eq(@person.id)
30
34
  end
31
35
 
36
+ it 'should support collection and foreign_key on belongs_to' do
37
+ @person = Person.new(name: 'Jimmy')
38
+ store.people << @person
39
+ @location = AddressBelongToOption.new(someone: @person)
40
+
41
+ store.address_belong_to_options << @location
42
+
43
+ @location.someone.then do |someone|
44
+ expect(someone.id).to eq(@person.id)
45
+ end
46
+ end
47
+
48
+ it 'should raise an exception if you try to use an association on a model that isn\'t associated with a repository'
49
+
32
50
  it 'should associate via has_many' do
33
51
  store._people!.first do |person|
34
52
 
@@ -26,6 +26,18 @@ describe Volt::Buffer do
26
26
  expect(result.class).to eq(Promise)
27
27
  end
28
28
 
29
+ it 'should clear the buffer\'s changed attributes after a save' do
30
+ buffer = the_page._items.buffer
31
+
32
+ buffer._name = 'Jimithy'
33
+
34
+ expect(buffer.changed_attributes).to eq({name: [nil]})
35
+
36
+ buffer.save!
37
+
38
+ expect(buffer.changed_attributes).to eq({})
39
+ end
40
+
29
41
  if RUBY_PLATFORM != 'opal'
30
42
  it 'should copy attributes back from the save_to model incase it changes them during save' do
31
43
  buffer = the_page._test_changed_attributes.buffer
@@ -1,6 +1,8 @@
1
1
  if RUBY_PLATFORM != 'opal'
2
2
  require 'spec_helper'
3
3
  require 'volt/server/rack/asset_files'
4
+ require 'volt/server/template_handlers/sprockets_component_handler'
5
+
4
6
  describe Volt::AssetFiles do
5
7
  before do
6
8
  spec_app_root = File.join(File.dirname(__FILE__), '../../apps/file_loading')
@@ -19,30 +21,30 @@ if RUBY_PLATFORM != 'opal'
19
21
  context "when the component's dependencies.rb does not contain .disable_auto_import" do
20
22
  it 'should list all JS files' do
21
23
  main = Volt::AssetFiles.new('main', @component_paths)
22
- expect(main.javascript_files(nil)).to eq([
23
- '/assets/js/jquery-2.0.3.js',
24
- '/assets/js/volt_js_polyfills.js',
25
- '/assets/js/volt_watch.js',
26
- '/assets/js/bootstrap.js',
27
- '/assets/js/test2.js',
28
- '/assets/js/test3.js',
29
- '/assets/js/test1.js',
30
- '/assets/volt/volt/app.js',
31
- '/components/main.js'
24
+ expect(main.javascript(volt_app)).to eq([
25
+ [:src, '/assets/js/jquery-2.0.3.js'],
26
+ [:src, '/assets/js/volt_js_polyfills.js'],
27
+ [:src, '/assets/js/volt_watch.js'],
28
+ [:src, '/assets/js/bootstrap.js'],
29
+ [:src, '/assets/js/test2.js'],
30
+ [:src, '/assets/js/test3.js'],
31
+ [:src, '/assets/js/test1.js'],
32
+ [:src, '/assets/volt/volt/app.js'],
33
+ [:src, '/assets/components/main.js']
32
34
  ])
33
35
  end
34
36
  end
35
-
37
+
36
38
  context "when the component's dependencies.rb contains .disable_auto_import" do
37
39
  it 'should list only the files included via the css_file helpers' do
38
40
  disabled_auto = Volt::AssetFiles.new('disable_auto', @component_paths)
39
- expect(disabled_auto.javascript_files(nil)).to eq([
40
- '/assets/js/jquery-2.0.3.js',
41
- '/assets/js/volt_js_polyfills.js',
42
- '/assets/js/volt_watch.js',
43
- '/assets/disable_auto/assets/js/test1.js',
44
- '/assets/volt/volt/app.js',
45
- '/components/main.js'
41
+ expect(disabled_auto.javascript(volt_app)).to eq([
42
+ [:src, '/assets/js/jquery-2.0.3.js'],
43
+ [:src, '/assets/js/volt_js_polyfills.js'],
44
+ [:src, '/assets/js/volt_watch.js'],
45
+ [:src, '/assets/disable_auto/assets/js/test1.js'],
46
+ [:src, '/assets/volt/volt/app.js'],
47
+ [:src, '/assets/components/main.js']
46
48
  ])
47
49
  end
48
50
  end
@@ -54,7 +56,7 @@ if RUBY_PLATFORM != 'opal'
54
56
  it 'should list all the asset files in that component' do
55
57
  main = Volt::AssetFiles.new('main', @component_paths)
56
58
 
57
- expect(main.css_files).to eq([
59
+ expect(main.css).to eq([
58
60
  '/assets/css/notices.css',
59
61
  '/assets/css/01-bootstrap.css',
60
62
  '/assets/css/test3.css'
@@ -66,39 +68,39 @@ if RUBY_PLATFORM != 'opal'
66
68
  it 'should list only the files included via the css_file helpers' do
67
69
  disabled_auto = Volt::AssetFiles.new('disable_auto', @component_paths)
68
70
 
69
- expect(disabled_auto.css_files).to eq([
71
+ expect(disabled_auto.css).to eq([
70
72
  '/assets/css/notices.css',
71
73
  '/assets/disable_auto/assets/css/test1.css'
72
74
  ])
73
75
  end
74
76
  end
75
77
  end
76
-
78
+
77
79
  describe '.is_url?' do
78
80
  it 'should return true for URIs like //something.com/something.js' do
79
81
  main = Volt::AssetFiles.new('main', @component_paths)
80
82
  expect(main.url_or_path? '//something.com/a-folder/something.js').to eq(true)
81
83
  end
82
-
84
+
83
85
  it 'should return true for HTTP and HTTPS urls' do
84
86
  main = Volt::AssetFiles.new('main', @component_paths)
85
87
  expect(main.url_or_path? 'http://something.com/a-folder/something.js').to eq(true)
86
88
  expect(main.url_or_path? 'https://something.com/a-folder/something.js').to eq(true)
87
89
  end
88
-
90
+
89
91
  it 'should return true for paths' do
90
92
  main = Volt::AssetFiles.new('main', @component_paths)
91
93
  expect(main.url_or_path? 'something.js').to eq(false)
92
94
  expect(main.url_or_path? '/assets/something.js').to eq(true)
93
95
  expect(main.url_or_path? '/assets/something/something.js').to eq(true)
94
96
  end
95
-
97
+
96
98
  it 'should return false for file names' do
97
99
  main = Volt::AssetFiles.new('main', @component_paths)
98
100
  expect(main.url_or_path? 'something.js').to eq(false)
99
101
  expect(main.url_or_path? 'assets/something/something.js').to eq(false)
100
102
  end
101
-
103
+
102
104
  end
103
105
 
104
106
  it 'should raise an exception for a missing component gem' do
@@ -121,5 +123,13 @@ if RUBY_PLATFORM != 'opal'
121
123
  main.load_dependencies(path_to_missing_deps, 'component_name')
122
124
  end.to_not raise_error
123
125
  end
126
+
127
+ it 'should parse javascript src/body from the javascript tags' do
128
+ main = Volt::AssetFiles.new('main', @component_paths)
129
+
130
+ expect(main).to receive(:javascript_tags).and_return("<script src='/someurl.js'></script><script>var inlinejs = true;</script>")
131
+
132
+ expect(main.javascript(nil)).to eq([[:src, "/someurl.js"], [:body, "var inlinejs = true;"]])
133
+ end
124
134
  end
125
135
  end
@@ -6,13 +6,8 @@
6
6
  <%# language difference. This file handles auto-loading all JS/Opal and CSS. %>
7
7
  <head>
8
8
  <meta charset="UTF-8" />
9
- <% javascript_files.each do |javascript_file| %>
10
- <script src="<%= javascript_file %>"></script>
11
- <% end %>
12
-
13
- <% css_files.each do |css_file| %>
14
- <link href="<%= css_file %>" media="all" rel="stylesheet" type="text/css" />
15
- <% end %>
9
+ <%= javascript_tags %>
10
+ <%= css_tags %>
16
11
  </head>
17
12
  <body>
18
13
 
data/volt.gemspec CHANGED
@@ -22,13 +22,13 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency 'thor', '~> 0.19.0'
23
23
  spec.add_dependency 'pry', '~> 0.10.1'
24
24
  spec.add_dependency 'rack', '~> 1.5.0'
25
- spec.add_dependency 'sprockets-sass', '~> 1.0.0'
26
- spec.add_dependency 'sass', '~> 3.2.5'
25
+ # spec.add_dependency 'sprockets-sass', '~> 1.0.0'
26
+ spec.add_dependency 'sass', '~> 3.4.15'
27
27
  spec.add_dependency 'listen', '~> 3.0.1'
28
28
  spec.add_dependency 'configurations', '~> 2.0.0.pre'
29
- spec.add_dependency 'opal', '~> 0.7.2'
29
+ spec.add_dependency 'opal', '~> 0.8.0'
30
30
  spec.add_dependency 'bundler', '>= 1.5'
31
- spec.add_dependency 'faye-websocket', '~> 0.9.2'
31
+ spec.add_dependency 'faye-websocket', '~> 0.10.0'
32
32
 
33
33
  # Locking down concurrent-ruby because one currently used feature is going to
34
34
  # be deprecated (which we need to build a work around for)
@@ -40,7 +40,7 @@ Gem::Specification.new do |spec|
40
40
 
41
41
  # For testing
42
42
  spec.add_development_dependency 'rspec', '~> 3.2.0'
43
- spec.add_development_dependency 'opal-rspec', '~> 0.4.2'
43
+ spec.add_development_dependency 'opal-rspec', '~> 0.4.3'
44
44
  spec.add_development_dependency 'capybara', '~> 2.4.2'
45
45
 
46
46
  # There is a big performance issue with selenium-webdriver on v2.45.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.9.4
4
+ version: 0.9.5.pre1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Stout
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-05 00:00:00.000000000 Z
11
+ date: 2015-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -52,34 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.5.0
55
- - !ruby/object:Gem::Dependency
56
- name: sprockets-sass
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 1.0.0
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 1.0.0
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: sass
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - "~>"
74
60
  - !ruby/object:Gem::Version
75
- version: 3.2.5
61
+ version: 3.4.15
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
- version: 3.2.5
68
+ version: 3.4.15
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: listen
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +100,14 @@ dependencies:
114
100
  requirements:
115
101
  - - "~>"
116
102
  - !ruby/object:Gem::Version
117
- version: 0.7.2
103
+ version: 0.8.0
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
108
  - - "~>"
123
109
  - !ruby/object:Gem::Version
124
- version: 0.7.2
110
+ version: 0.8.0
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: bundler
127
113
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +128,14 @@ dependencies:
142
128
  requirements:
143
129
  - - "~>"
144
130
  - !ruby/object:Gem::Version
145
- version: 0.9.2
131
+ version: 0.10.0
146
132
  type: :runtime
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
136
  - - "~>"
151
137
  - !ruby/object:Gem::Version
152
- version: 0.9.2
138
+ version: 0.10.0
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: concurrent-ruby
155
141
  requirement: !ruby/object:Gem::Requirement
@@ -198,14 +184,14 @@ dependencies:
198
184
  requirements:
199
185
  - - "~>"
200
186
  - !ruby/object:Gem::Version
201
- version: 0.4.2
187
+ version: 0.4.3
202
188
  type: :development
203
189
  prerelease: false
204
190
  version_requirements: !ruby/object:Gem::Requirement
205
191
  requirements:
206
192
  - - "~>"
207
193
  - !ruby/object:Gem::Version
208
- version: 0.4.2
194
+ version: 0.4.3
209
195
  - !ruby/object:Gem::Dependency
210
196
  name: capybara
211
197
  requirement: !ruby/object:Gem::Requirement
@@ -527,7 +513,6 @@ files:
527
513
  - lib/volt/router/routes.rb
528
514
  - lib/volt/server.rb
529
515
  - lib/volt/server/banner.txt
530
- - lib/volt/server/component_handler.rb
531
516
  - lib/volt/server/component_templates.rb
532
517
  - lib/volt/server/forking_server.rb
533
518
  - lib/volt/server/forking_server/boot_error.html.erb
@@ -564,7 +549,7 @@ files:
564
549
  - lib/volt/server/rack/source_map_server.rb
565
550
  - lib/volt/server/socket_connection_handler.rb
566
551
  - lib/volt/server/socket_connection_handler_stub.rb
567
- - lib/volt/server/template_handlers/handlers.rb
552
+ - lib/volt/server/template_handlers/sprockets_component_handler.rb
568
553
  - lib/volt/server/websocket/rack_server_adaptor.rb
569
554
  - lib/volt/server/websocket/websocket_handler.rb
570
555
  - lib/volt/spec/capybara.rb
@@ -849,9 +834,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
849
834
  version: '2.1'
850
835
  required_rubygems_version: !ruby/object:Gem::Requirement
851
836
  requirements:
852
- - - ">="
837
+ - - ">"
853
838
  - !ruby/object:Gem::Version
854
- version: '0'
839
+ version: 1.3.1
855
840
  requirements: []
856
841
  rubyforge_project:
857
842
  rubygems_version: 2.4.5