volt 0.9.4 → 0.9.5.pre1

Sign up to get free protection for your applications and to get access to all the features.
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