volt 0.9.1.pre4 → 0.9.1.pre5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/CONTRIBUTING.md +1 -1
  4. data/README.md +1 -0
  5. data/app/volt/tasks/query_tasks.rb +4 -3
  6. data/app/volt/tasks/store_tasks.rb +1 -1
  7. data/lib/volt/boot.rb +8 -7
  8. data/lib/volt/cli/asset_compile.rb +1 -1
  9. data/lib/volt/cli/console.rb +14 -3
  10. data/lib/volt/cli/new_gem.rb +3 -3
  11. data/lib/volt/cli.rb +3 -3
  12. data/lib/volt/config.rb +7 -1
  13. data/lib/volt/data_stores/base.rb +7 -0
  14. data/lib/volt/data_stores/data_store.rb +10 -3
  15. data/lib/volt/data_stores/mongo_driver.rb +58 -7
  16. data/lib/volt/models/associations.rb +2 -2
  17. data/lib/volt/models/persistors/array_store.rb +24 -6
  18. data/lib/volt/models/persistors/base.rb +4 -0
  19. data/lib/volt/models/persistors/model_store.rb +4 -15
  20. data/lib/volt/page/bindings/attribute_binding.rb +17 -15
  21. data/lib/volt/page/bindings/each_binding.rb +14 -17
  22. data/lib/volt/page/bindings/view_binding/controller_handler.rb +24 -0
  23. data/lib/volt/page/bindings/view_binding.rb +10 -30
  24. data/lib/volt/page/document_events.rb +7 -4
  25. data/lib/volt/page/page.rb +19 -13
  26. data/lib/volt/page/path_string_renderer.rb +41 -0
  27. data/lib/volt/page/targets/dom_section.rb +5 -2
  28. data/lib/volt/reactive/computation.rb +3 -1
  29. data/lib/volt/reactive/reactive_accessors.rb +8 -7
  30. data/lib/volt/reactive/reactive_array.rb +2 -0
  31. data/lib/volt/server/component_handler.rb +3 -3
  32. data/lib/volt/server/component_templates.rb +32 -6
  33. data/lib/volt/server/forking_server.rb +4 -2
  34. data/lib/volt/server/rack/asset_files.rb +5 -1
  35. data/lib/volt/server/rack/component_paths.rb +6 -4
  36. data/lib/volt/server/rack/opal_files.rb +16 -11
  37. data/lib/volt/server/rack/quiet_common_logger.rb +1 -1
  38. data/lib/volt/server.rb +1 -1
  39. data/lib/volt/spec/setup.rb +1 -1
  40. data/lib/volt/version.rb +5 -0
  41. data/lib/volt/volt/app.rb +12 -2
  42. data/spec/apps/kitchen_sink/app/main/views/mailers/welcome.email +12 -0
  43. data/spec/integration/http_endpoints_spec.rb +1 -3
  44. data/spec/integration/user_spec.rb +0 -10
  45. data/spec/models/associations_spec.rb +0 -3
  46. data/spec/models/model_spec.rb +13 -0
  47. data/spec/models/persistors/flash_spec.rb +45 -0
  48. data/spec/models/validators/phone_number_validator_spec.rb +2 -2
  49. data/spec/page/bindings/template_binding/view_lookup_for_path_spec.rb +0 -5
  50. data/spec/page/path_string_renderer_spec.rb +23 -0
  51. data/spec/page/sub_context_spec.rb +1 -0
  52. data/spec/router/routes_spec.rb +24 -5
  53. data/spec/server/html_parser/view_handler_spec.rb +20 -0
  54. data/spec/server/rack/quite_common_logger_spec.rb +3 -3
  55. data/spec/spec_helper.rb +0 -4
  56. data/spec/tasks/query_tracker_spec.rb +30 -0
  57. data/templates/newgem/lib/newgem/version.rb.tt +7 -0
  58. data/templates/newgem/newgem.gemspec.tt +2 -4
  59. data/templates/project/Gemfile.tt +5 -2
  60. data/templates/project/config/app.rb.tt +49 -1
  61. data/volt.gemspec +12 -10
  62. metadata +24 -28
  63. data/VERSION +0 -1
  64. data/app/volt/tasks/live_query/data_store.rb +0 -33
  65. data/templates/newgem/VERSION +0 -1
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ module Volt
4
+ module Persistors
5
+ describe Flash do
6
+ let(:fake_parent) { double('Parent', delete: true) }
7
+ let(:fake_passed_model) { double }
8
+
9
+ let(:fake_model) do
10
+ double(
11
+ 'Model',
12
+ size: 1,
13
+ parent: fake_parent,
14
+ path: '12',
15
+ delete: true
16
+ )
17
+ end
18
+
19
+ describe '#added' do
20
+ it 'returns nil' do
21
+ flash = described_class.new double
22
+
23
+ expect(flash.added(double, 0)).to be_nil
24
+ end
25
+ end
26
+
27
+ describe '#clear_model' do
28
+ it 'sends #delete to @model' do
29
+ described_class.new(fake_model).clear_model fake_passed_model
30
+
31
+ expect(fake_model).to have_received(:delete).with(fake_passed_model)
32
+ end
33
+
34
+ it 'with a size of zero, parent receives #delete' do
35
+ collection_name = fake_model.path[-1]
36
+ allow(fake_model).to receive(:size).and_return 0
37
+
38
+ described_class.new(fake_model).clear_model fake_passed_model
39
+
40
+ expect(fake_parent).to have_received(:delete).with(collection_name)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -10,7 +10,7 @@ describe Volt::PhoneNumberValidator do
10
10
  let(:options) { true }
11
11
 
12
12
  let(:phone_number) { field_content }
13
- let(:field_contet) { valid_us_number }
13
+ let(:field_content) { valid_us_number }
14
14
  let(:valid_us_number) { '(123)-123-1234' }
15
15
  let(:valid_intl_number) { '+12 123 123 1234' }
16
16
  let(:invalid_number) { '1234-123-123456' }
@@ -100,4 +100,4 @@ describe Volt::PhoneNumberValidator do
100
100
 
101
101
  specify { expect(subject.valid?).to eq true }
102
102
  end
103
- end
103
+ end
@@ -1,11 +1,6 @@
1
1
  require 'spec_helper'
2
2
  require 'volt/page/bindings/view_binding'
3
3
 
4
- # Setup page stub
5
-
6
- class Volt::Page
7
- attr_accessor :templates
8
- end
9
4
 
10
5
  describe Volt::ViewBinding do
11
6
  before do
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+ require 'volt/page/path_string_renderer'
3
+
4
+
5
+ unless RUBY_PLATFORM == 'opal'
6
+ describe Volt::PathStringRenderer do
7
+ before do
8
+ kitchen_sink_path = File.expand_path(File.join(File.dirname(__FILE__), '../apps/kitchen_sink'))
9
+ app = Volt::App.new(kitchen_sink_path)
10
+ @page = app.page
11
+ end
12
+
13
+ it 'should render a section' do
14
+ html = Volt::PathStringRenderer.new('main/mailers/welcome/subject', nil, @page).html
15
+ expect(html).to eq("\n Welcome to the site!\n\n")
16
+ end
17
+
18
+ it 'should render a section with a variable' do
19
+ html = Volt::PathStringRenderer.new('main/mailers/welcome/html', {:name => 'Jimmy'}, @page).html
20
+ expect(html).to eq("\n <h1>Welcome Jimmy</h1>\n\n <p>Glad you signed up!</p>\n\n")
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,4 @@
1
+ require 'spec_helper'
1
2
  require 'volt/page/sub_context'
2
3
 
3
4
  describe Volt::SubContext do
@@ -48,7 +48,7 @@ describe Volt::Routes do
48
48
  nil => { controller: 'comments', action: 'show', id: 1 }
49
49
  }
50
50
  }
51
- )
51
+ )
52
52
  end
53
53
 
54
54
  it 'should setup param matchers' do
@@ -74,7 +74,7 @@ describe Volt::Routes do
74
74
  expect(param_matches[:get].map { |v| v[0] }).to eq([
75
75
  { controller: 'articles', action: 'index' },
76
76
  { controller: 'articles', action: 'show', id: nil },
77
- ])
77
+ ])
78
78
  end
79
79
 
80
80
 
@@ -136,13 +136,13 @@ describe Volt::Routes do
136
136
  expect(params).to eq(controller: 'people', action: 'update')
137
137
 
138
138
  params = @routes.url_to_params(:delete, '/people/2')
139
- expect(params).to eq(controller: 'people', action: 'destroy')
139
+ expect(params).to eq(controller: 'people', action: 'destroy')
140
140
 
141
141
  params = @routes.url_to_params(:get, '/articles/2')
142
142
  expect(params).to eq(controller: 'articles', action: 'show', id: '2')
143
143
 
144
144
  params = @routes.url_to_params(:put, '/articles/2/comments/9')
145
- expect(params).to eq(controller: 'comments', action: 'update', articles_id: '2', id: '9')
145
+ expect(params).to eq(controller: 'comments', action: 'update', articles_id: '2', id: '9')
146
146
  end
147
147
 
148
148
  it 'should go from params to url' do
@@ -174,7 +174,11 @@ describe Volt::Routes do
174
174
 
175
175
  url, params = @routes.params_to_url(controller: 'articles', action: 'update', method: :put, id: 99, other: 'xyz')
176
176
  expect(url).to eq('/articles/99')
177
- expect(params).to eq({other: 'xyz'})
177
+ expect(params).to eq({other: 'xyz'})
178
+
179
+ url, params = @routes.params_to_url({})
180
+ expect(url).to eq(nil)
181
+ expect(params).to eq(nil)
178
182
  end
179
183
 
180
184
  it 'should test that params match a param matcher' do
@@ -202,6 +206,21 @@ describe Volt::Routes do
202
206
  match, params = routes.send(:check_params_match, { view: 'blog', id: '55', _extra: 'some value' }, view: 'blog', id: '55')
203
207
  expect(match).to eq(true)
204
208
  expect(params).to eq(_extra: 'some value')
209
+
210
+ match, params = routes.send(:check_params_match, { view: 'blog', id: '55' }, view: 'blog', id: '20')
211
+ expect(match).to eq(false)
212
+ end
213
+
214
+ it 'should not match params that have no matches at all' do
215
+ routes = Volt::Routes.new
216
+ match, params = routes.send(:check_params_match, { view: '', id: false }, bleep: {volt: 'rocks'} )
217
+ expect(match).to eq(false)
218
+ end
219
+
220
+ it 'should not match params that have a nil value' do
221
+ routes = Volt::Routes.new
222
+ match, params = routes.send(:check_params_match, { view: 'blog', id: false }, bleep: nil )
223
+ expect(match).to eq(false)
205
224
  end
206
225
 
207
226
  it 'should match routes' do
@@ -0,0 +1,20 @@
1
+ if RUBY_PLATFORM == 'opal'
2
+ else
3
+ require 'benchmark'
4
+ require 'volt/server/html_parser/view_handler'
5
+
6
+ describe Volt::ViewHandler do
7
+ let(:handler) { Volt::ViewHandler.new('main/main/main') }
8
+
9
+ it 'handles tags' do
10
+ handler.comment('Yowza!')
11
+ handler.start_tag('a', {href: 'yahoo.com'}, false)
12
+ handler.text('Cool in 1996')
13
+ handler.end_tag('a')
14
+
15
+ expectation = '<!--Yowza!--><a href="yahoo.com">Cool in 1996</a>'
16
+ expect(handler.html).to eq(expectation)
17
+ end
18
+ end
19
+
20
+ end
@@ -24,7 +24,7 @@ unless RUBY_PLATFORM == 'opal'
24
24
  end
25
25
 
26
26
  describe 'when request path has no file extension and request run over web socket' do
27
- let(:env) { {'REQUEST_PATH' => '/file'} }
27
+ let(:env) { {'PATH_INFO' => '/file'} }
28
28
 
29
29
  it "calls 'log' method" do
30
30
  expect(subject).to receive(:log)
@@ -33,7 +33,7 @@ unless RUBY_PLATFORM == 'opal'
33
33
  end
34
34
 
35
35
  describe 'when request path has file extension' do
36
- let(:env) { {'REQUEST_PATH' => '/file.ext'} }
36
+ let(:env) { {'PATH_INFO' => '/file.ext'} }
37
37
 
38
38
  it "doesn't call 'log' method" do
39
39
  expect(subject).not_to receive(:log)
@@ -42,7 +42,7 @@ unless RUBY_PLATFORM == 'opal'
42
42
  end
43
43
 
44
44
  describe 'when request run over web socket' do
45
- let(:env) { {'REQUEST_PATH' => '/channel'} }
45
+ let(:env) { {'PATH_INFO' => '/channel'} }
46
46
 
47
47
  it "doesn't call 'log' method" do
48
48
  expect(subject).not_to receive(:log)
data/spec/spec_helper.rb CHANGED
@@ -23,10 +23,6 @@ Volt.spec_setup(kitchen_sink_path)
23
23
 
24
24
  unless RUBY_PLATFORM == 'opal'
25
25
  RSpec.configure do |config|
26
- # config.before(:each) do
27
- # DataStore.new.drop_database
28
- # end
29
-
30
26
  config.run_all_when_everything_filtered = true
31
27
  config.filter_run :focus
32
28
 
@@ -31,6 +31,14 @@ if RUBY_PLATFORM != 'opal'
31
31
 
32
32
  @items.insert(index, item)
33
33
  end
34
+
35
+ def notify_changed(id, data, skip_channel)
36
+ item = @items.find{ |item| item['_id'] == id }
37
+ idx = @items.index(item)
38
+ @items.delete(item)
39
+ @items.insert(idx, data)
40
+ end
41
+
34
42
  end
35
43
 
36
44
  before do
@@ -113,5 +121,27 @@ if RUBY_PLATFORM != 'opal'
113
121
  @query_tracker.run
114
122
  expect(@live_query.items).to eq(@items)
115
123
  end
124
+
125
+ it 'should notify data hash has changed' do
126
+ @items = [
127
+ { '_id' => 1, '_name' => 'one' },
128
+ { '_id' => 2, '_name' => 'two' },
129
+ { '_id' => 3, '_name' => 'three' },
130
+ { '_id' => 4, '_name' => 'four' },
131
+ { '_id' => 5, '_name' => 'five' }
132
+ ]
133
+ @query_tracker.run
134
+ @items = [
135
+ { '_id' => 1, '_name' => 'some' },
136
+ { '_id' => 2, '_name' => 'values' },
137
+ { '_id' => 3, '_name' => 'have' },
138
+ { '_id' => 4, '_name' => 'changed' },
139
+ { '_id' => 5, '_name' => 'other' }
140
+ ]
141
+ expect(@live_query.items).to_not eq(@items)
142
+ @query_tracker.run
143
+ expect(@live_query.items).to eq(@items)
144
+
145
+ end
116
146
  end
117
147
  end
@@ -0,0 +1,7 @@
1
+ <%- config[:constant_array].each_with_index do |c,i| -%>
2
+ <%= ' '*i %>module <%= c %>
3
+ <%- end -%>
4
+ <%= ' '*config[:constant_array].size %>VERSION = "0.1.0"
5
+ <%- (config[:constant_array].size-1).downto(0) do |i| -%>
6
+ <%= ' '*i %>end
7
+ <%- end -%>
@@ -1,13 +1,11 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
-
5
- version = File.read(File.expand_path('../VERSION', __FILE__)).strip
6
-
4
+ require '<%=config[:namespaced_path]%>/version'
7
5
 
8
6
  Gem::Specification.new do |spec|
9
7
  spec.name = <%=config[:name].inspect%>
10
- spec.version = version
8
+ spec.version = <%=config[:constant_name]%>::VERSION
11
9
  spec.authors = [<%=config[:author].inspect%>]
12
10
  spec.email = [<%=config[:email].inspect%>]
13
11
  spec.summary = %q{TODO: Write a short summary. Required.}
@@ -10,9 +10,12 @@ gem 'volt-bootstrap', '~> 0.0.10'
10
10
  gem 'volt-bootstrap_jumbotron_theme', '~> 0.1.0'
11
11
 
12
12
  # User templates for login, signup, and logout menu.
13
- gem 'volt-user_templates', '~> 0.1.3'
13
+ gem 'volt-user_templates', '~> 0.2.0'
14
14
 
15
- group :development, :test do
15
+ # Add ability to send e-mail from apps.
16
+ gem 'volt-mailer', '~> 0.0.2'
17
+
18
+ group :test do
16
19
  # Testing dependencies
17
20
  gem 'rspec', '~> 3.2.0'
18
21
  gem 'opal-rspec', '~> 0.4.2'
@@ -1,6 +1,16 @@
1
1
  Volt.configure do |config|
2
2
  # Setup your global app config here.
3
3
 
4
+ #######################################
5
+ # Basic App Info (stuff you should set)
6
+ #######################################
7
+ config.domain = '<%= config[:domain] %>.com'
8
+ config.app_name = '<%= config[:app_name] %>'
9
+ config.mailer.from = '<%= config[:app_name] %> <no-reply@<%= config[:domain] %>.com>'
10
+
11
+ ############
12
+ # App Secret
13
+ ############
4
14
  # Your app secret is used for signing things like the user cookie so it can't
5
15
  # be tampered with. A random value is generated on new projects that will work
6
16
  # without the need to customize. Make sure this value doesn't leave your server.
@@ -12,11 +22,17 @@ Volt.configure do |config|
12
22
  #
13
23
  config.app_secret = '<%= SecureRandom.urlsafe_base64(50) %>'
14
24
 
25
+ ###############
26
+ # Log Filtering
27
+ ###############
15
28
  # Data updates from the client come in via Tasks. The task dispatcher logs all calls to tasks.
16
29
  # By default hashes in the arguments can be filtered based on keys. So any hash with a key of
17
30
  # password will be filtered. You can add more fields to filter below:
18
31
  config.filter_keys = [:password]
19
32
 
33
+ ##########
34
+ # Database
35
+ ##########
20
36
  # Database config all start with db_ and can be set either in the config
21
37
  # file or with an environment variable (DB_NAME for example).
22
38
 
@@ -25,17 +41,49 @@ Volt.configure do |config|
25
41
  # config.db_host = 'localhost'
26
42
  # config.db_port = 27017
27
43
 
44
+ #####################
28
45
  # Compression options
29
-
46
+ #####################
30
47
  # If you are not running behind something like nginx in production, you can
31
48
  # have rack deflate all files.
32
49
  # config.deflate = true
33
50
 
51
+ #######################
34
52
  # Public configurations
53
+ #######################
35
54
  # Anything under config.public will be sent to the client as well as the server,
36
55
  # so be sure no private data ends up under public
37
56
 
38
57
  # Use username instead of email as the login
39
58
  # config.public.auth.use_username = true
40
59
 
60
+ #####################
61
+ # Compression Options
62
+ #####################
63
+ # Disable or enable css/js compression. Default is to only run in production.
64
+ # if Volt.env.production?
65
+ # config.compress_javascript = true
66
+ # config.compress_css = true
67
+ # end
68
+
69
+ ################
70
+ # Mailer options
71
+ ################
72
+ # The volt-mailer gem uses pony (https://github.com/benprew/pony) to deliver e-mail. Any
73
+ # options you would pass to pony can be setup below.
74
+ # NOTE: The from address is setup at the top
75
+
76
+ # Normally pony uses /usr/sbin/sendmail if one is installed. You can specify smtp below:
77
+ # config.mailer.via = :smtp
78
+ # config.mailer.via_options = {
79
+ # :address => 'smtp.yourserver.com',
80
+ # :port => '25',
81
+ # :user_name => 'user',
82
+ # :password => 'password',
83
+ # :authentication => :plain, # :plain, :login, :cram_md5, no auth by default
84
+ # :domain => "localhost.localdomain" # the HELO domain provided by the client to the server
85
+ # }
86
+
87
+
88
+
41
89
  end
data/volt.gemspec CHANGED
@@ -1,16 +1,19 @@
1
- # coding: utf-8
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
-
5
- version = File.read(File.expand_path('../VERSION', __FILE__)).strip
3
+ require 'volt/version'
6
4
 
7
5
  Gem::Specification.new do |spec|
8
6
  spec.name = 'volt'
9
- spec.version = version
7
+ spec.version = Volt::Version::STRING
8
+ spec.platform = Gem::Platform::RUBY
9
+ spec.required_ruby_version = '>= 2.1'
10
10
  spec.authors = ['Ryan Stout']
11
11
  spec.email = ['ryan@agileproductions.com']
12
- spec.summary = 'A ruby web framework where your ruby runs on both server and client (via Opal)'
13
- # spec.description = %q{}
12
+ spec.summary = 'A reactive Ruby web framework.'
13
+ spec.description = <<-EOF
14
+ A reactive Ruby web framework where your Ruby code runs on both the server
15
+ and the client (via Opal).
16
+ EOF
14
17
  spec.homepage = 'http://voltframework.com'
15
18
  spec.license = 'MIT'
16
19
 
@@ -20,17 +23,16 @@ Gem::Specification.new do |spec|
20
23
  spec.require_paths = ['lib']
21
24
 
22
25
  spec.add_dependency 'thor', '~> 0.19.0'
23
- spec.add_dependency 'pry', '~> 0.10.0'
26
+ spec.add_dependency 'pry', '~> 0.10.1'
24
27
  spec.add_dependency 'rack', '~> 1.5.0'
25
28
  spec.add_dependency 'sprockets-sass', '~> 1.0.0'
26
29
  spec.add_dependency 'sass', '~> 3.2.5'
27
30
  spec.add_dependency 'mongo', '~> 1.9.0'
28
31
  spec.add_dependency 'listen', '~> 2.8.0'
29
32
  spec.add_dependency 'uglifier', '>= 2.4.0'
30
- spec.add_dependency "configurations", "~> 2.0.0.pre"
31
- spec.add_dependency 'yui-compressor', '~> 0.12.0'
33
+ spec.add_dependency 'configurations', '~> 2.0.0.pre'
34
+ spec.add_dependency 'ruby-clean-css', '~> 1.0.0'
32
35
  spec.add_dependency 'opal', '~> 0.7.2'
33
- spec.add_dependency 'opal-jquery', '~> 0.3.0'
34
36
  spec.add_dependency 'bundler', '>= 1.5'
35
37
  spec.add_dependency 'faye-websocket', '~> 0.9.2'
36
38
  spec.add_dependency 'concurrent-ruby', '~> 0.8.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.1.pre4
4
+ version: 0.9.1.pre5
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-04-30 00:00:00.000000000 Z
11
+ date: 2015-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.10.0
33
+ version: 0.10.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.10.0
40
+ version: 0.10.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rack
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -137,19 +137,19 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: 2.0.0.pre
139
139
  - !ruby/object:Gem::Dependency
140
- name: yui-compressor
140
+ name: ruby-clean-css
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 0.12.0
145
+ version: 1.0.0
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 0.12.0
152
+ version: 1.0.0
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: opal
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -164,20 +164,6 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: 0.7.2
167
- - !ruby/object:Gem::Dependency
168
- name: opal-jquery
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: 0.3.0
174
- type: :runtime
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: 0.3.0
181
167
  - !ruby/object:Gem::Dependency
182
168
  name: bundler
183
169
  requirement: !ruby/object:Gem::Requirement
@@ -472,7 +458,9 @@ dependencies:
472
458
  - - "~>"
473
459
  - !ruby/object:Gem::Version
474
460
  version: 2.0.0
475
- description:
461
+ description: |2
462
+ A reactive Ruby web framework where your Ruby code runs on both the server
463
+ and the client (via Opal).
476
464
  email:
477
465
  - ryan@agileproductions.com
478
466
  executables:
@@ -492,14 +480,12 @@ files:
492
480
  - LICENSE.txt
493
481
  - README.md
494
482
  - Rakefile
495
- - VERSION
496
483
  - app/volt/assets/css/notices.css.scss
497
484
  - app/volt/assets/js/jquery-2.0.3.js
498
485
  - app/volt/assets/js/volt_js_polyfills.js
499
486
  - app/volt/config/dependencies.rb
500
487
  - app/volt/controllers/notices_controller.rb
501
488
  - app/volt/models/user.rb
502
- - app/volt/tasks/live_query/data_store.rb
503
489
  - app/volt/tasks/live_query/live_query.rb
504
490
  - app/volt/tasks/live_query/live_query_pool.rb
505
491
  - app/volt/tasks/live_query/query_tracker.rb
@@ -524,6 +510,7 @@ files:
524
510
  - lib/volt/controllers/actions.rb
525
511
  - lib/volt/controllers/http_controller.rb
526
512
  - lib/volt/controllers/model_controller.rb
513
+ - lib/volt/data_stores/base.rb
527
514
  - lib/volt/data_stores/data_store.rb
528
515
  - lib/volt/data_stores/mongo_driver.rb
529
516
  - lib/volt/extra_core/array.rb
@@ -599,6 +586,7 @@ files:
599
586
  - lib/volt/page/document.rb
600
587
  - lib/volt/page/document_events.rb
601
588
  - lib/volt/page/page.rb
589
+ - lib/volt/page/path_string_renderer.rb
602
590
  - lib/volt/page/string_template_renderer.rb
603
591
  - lib/volt/page/sub_context.rb
604
592
  - lib/volt/page/targets/attribute_section.rb
@@ -673,6 +661,7 @@ files:
673
661
  - lib/volt/utils/tilt_patch.rb
674
662
  - lib/volt/utils/timers.rb
675
663
  - lib/volt/utils/volt_user_error.rb
664
+ - lib/volt/version.rb
676
665
  - lib/volt/volt/app.rb
677
666
  - lib/volt/volt/core.rb
678
667
  - lib/volt/volt/environment.rb
@@ -695,6 +684,7 @@ files:
695
684
  - spec/apps/kitchen_sink/app/main/controllers/upload_controller.rb
696
685
  - spec/apps/kitchen_sink/app/main/controllers/yield_component_controller.rb
697
686
  - spec/apps/kitchen_sink/app/main/models/user.rb
687
+ - spec/apps/kitchen_sink/app/main/views/mailers/welcome.email
698
688
  - spec/apps/kitchen_sink/app/main/views/main/bindings.html
699
689
  - spec/apps/kitchen_sink/app/main/views/main/cookie_test.html
700
690
  - spec/apps/kitchen_sink/app/main/views/main/first_last.html
@@ -745,6 +735,7 @@ files:
745
735
  - spec/models/model_spec.rb
746
736
  - spec/models/model_state_spec.rb
747
737
  - spec/models/permissions_spec.rb
738
+ - spec/models/persistors/flash_spec.rb
748
739
  - spec/models/persistors/params_spec.rb
749
740
  - spec/models/persistors/store_spec.rb
750
741
  - spec/models/url_spec.rb
@@ -760,6 +751,7 @@ files:
760
751
  - spec/page/bindings/content_binding_spec.rb
761
752
  - spec/page/bindings/template_binding/view_lookup_for_path_spec.rb
762
753
  - spec/page/bindings/template_binding_spec.rb
754
+ - spec/page/path_string_renderer_spec.rb
763
755
  - spec/page/sub_context_spec.rb
764
756
  - spec/reactive/class_eventable_spec.rb
765
757
  - spec/reactive/computation_spec.rb
@@ -770,6 +762,7 @@ files:
770
762
  - spec/router/routes_spec.rb
771
763
  - spec/server/html_parser/sample_page.html
772
764
  - spec/server/html_parser/sandlebars_parser_spec.rb
765
+ - spec/server/html_parser/view_handler_spec.rb
773
766
  - spec/server/html_parser/view_parser_spec.rb
774
767
  - spec/server/rack/asset_files_spec.rb
775
768
  - spec/server/rack/component_paths_spec.rb
@@ -816,7 +809,6 @@ files:
816
809
  - templates/newgem/LICENSE.txt.tt
817
810
  - templates/newgem/README.md.tt
818
811
  - templates/newgem/Rakefile.tt
819
- - templates/newgem/VERSION
820
812
  - templates/newgem/app/newgem/assets/css/.empty_directory
821
813
  - templates/newgem/app/newgem/assets/js/.empty_directory
822
814
  - templates/newgem/app/newgem/config/dependencies.rb
@@ -829,6 +821,7 @@ files:
829
821
  - templates/newgem/gitignore.tt
830
822
  - templates/newgem/lib/newgem.rb.tt
831
823
  - templates/newgem/lib/newgem/.empty_directory
824
+ - templates/newgem/lib/newgem/version.rb.tt
832
825
  - templates/newgem/newgem.gemspec.tt
833
826
  - templates/newgem/rspec.tt
834
827
  - templates/newgem/spec/newgem_spec.rb.tt
@@ -878,7 +871,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
878
871
  requirements:
879
872
  - - ">="
880
873
  - !ruby/object:Gem::Version
881
- version: '0'
874
+ version: '2.1'
882
875
  required_rubygems_version: !ruby/object:Gem::Requirement
883
876
  requirements:
884
877
  - - ">"
@@ -889,8 +882,7 @@ rubyforge_project:
889
882
  rubygems_version: 2.4.5
890
883
  signing_key:
891
884
  specification_version: 4
892
- summary: A ruby web framework where your ruby runs on both server and client (via
893
- Opal)
885
+ summary: A reactive Ruby web framework.
894
886
  test_files:
895
887
  - spec/apps/file_loading/app/bootstrap/assets/js/bootstrap.js
896
888
  - spec/apps/file_loading/app/main/assets/js/test1.js
@@ -910,6 +902,7 @@ test_files:
910
902
  - spec/apps/kitchen_sink/app/main/controllers/upload_controller.rb
911
903
  - spec/apps/kitchen_sink/app/main/controllers/yield_component_controller.rb
912
904
  - spec/apps/kitchen_sink/app/main/models/user.rb
905
+ - spec/apps/kitchen_sink/app/main/views/mailers/welcome.email
913
906
  - spec/apps/kitchen_sink/app/main/views/main/bindings.html
914
907
  - spec/apps/kitchen_sink/app/main/views/main/cookie_test.html
915
908
  - spec/apps/kitchen_sink/app/main/views/main/first_last.html
@@ -960,6 +953,7 @@ test_files:
960
953
  - spec/models/model_spec.rb
961
954
  - spec/models/model_state_spec.rb
962
955
  - spec/models/permissions_spec.rb
956
+ - spec/models/persistors/flash_spec.rb
963
957
  - spec/models/persistors/params_spec.rb
964
958
  - spec/models/persistors/store_spec.rb
965
959
  - spec/models/url_spec.rb
@@ -975,6 +969,7 @@ test_files:
975
969
  - spec/page/bindings/content_binding_spec.rb
976
970
  - spec/page/bindings/template_binding/view_lookup_for_path_spec.rb
977
971
  - spec/page/bindings/template_binding_spec.rb
972
+ - spec/page/path_string_renderer_spec.rb
978
973
  - spec/page/sub_context_spec.rb
979
974
  - spec/reactive/class_eventable_spec.rb
980
975
  - spec/reactive/computation_spec.rb
@@ -985,6 +980,7 @@ test_files:
985
980
  - spec/router/routes_spec.rb
986
981
  - spec/server/html_parser/sample_page.html
987
982
  - spec/server/html_parser/sandlebars_parser_spec.rb
983
+ - spec/server/html_parser/view_handler_spec.rb
988
984
  - spec/server/html_parser/view_parser_spec.rb
989
985
  - spec/server/rack/asset_files_spec.rb
990
986
  - spec/server/rack/component_paths_spec.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.9.1.pre4