volt 0.9.2 → 0.9.3.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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/CONTRIBUTING.md +4 -0
  4. data/Gemfile +3 -0
  5. data/app/volt/assets/js/volt_js_polyfills.js +0 -1
  6. data/app/volt/assets/js/volt_watch.js +217 -0
  7. data/app/volt/models/user.rb +7 -2
  8. data/app/volt/tasks/query_tasks.rb +6 -0
  9. data/lib/volt/boot.rb +1 -1
  10. data/lib/volt/cli/generate.rb +1 -1
  11. data/lib/volt/config.rb +12 -2
  12. data/lib/volt/controllers/model_controller.rb +1 -1
  13. data/lib/volt/data_stores/base_adaptor_client.rb +34 -0
  14. data/lib/volt/data_stores/{base.rb → base_adaptor_server.rb} +1 -1
  15. data/lib/volt/data_stores/data_store.rb +23 -7
  16. data/lib/volt/models/array_model.rb +3 -2
  17. data/lib/volt/models/model.rb +29 -91
  18. data/lib/volt/models/{dirty.rb → model_helpers/dirty.rb} +0 -0
  19. data/lib/volt/models/{listener_tracker.rb → model_helpers/listener_tracker.rb} +0 -0
  20. data/lib/volt/models/model_helpers/model_change_helpers.rb +76 -0
  21. data/lib/volt/models/{model_helpers.rb → model_helpers/model_helpers.rb} +0 -0
  22. data/lib/volt/models/persistors/array_store.rb +2 -23
  23. data/lib/volt/models/persistors/query/normalizer.rb +0 -44
  24. data/{templates/project/lib/.empty_directory → lib/volt/models/validations/errors.rb} +0 -0
  25. data/lib/volt/models/{validations.rb → validations/validations.rb} +80 -26
  26. data/lib/volt/page/bindings/attribute_binding.rb +17 -3
  27. data/lib/volt/page/page.rb +1 -0
  28. data/lib/volt/reactive/eventable.rb +1 -0
  29. data/lib/volt/server.rb +2 -1
  30. data/lib/volt/server/component_templates.rb +66 -16
  31. data/lib/volt/server/forking_server.rb +16 -14
  32. data/lib/volt/server/html_parser/sandlebars_parser.rb +2 -0
  33. data/lib/volt/server/html_parser/view_scope.rb +2 -0
  34. data/lib/volt/server/rack/component_paths.rb +4 -2
  35. data/lib/volt/server/rack/opal_files.rb +4 -2
  36. data/lib/volt/server/socket_connection_handler.rb +5 -1
  37. data/lib/volt/server/template_handlers/handlers.rb +0 -0
  38. data/lib/volt/spec/setup.rb +23 -8
  39. data/lib/volt/tasks/dispatcher.rb +4 -0
  40. data/lib/volt/utils/promise_patch.rb +3 -0
  41. data/lib/volt/version.rb +1 -1
  42. data/spec/apps/kitchen_sink/Gemfile +5 -0
  43. data/spec/apps/kitchen_sink/app/main/config/routes.rb +1 -0
  44. data/spec/apps/kitchen_sink/app/main/controllers/main_controller.rb +10 -0
  45. data/spec/apps/kitchen_sink/app/main/views/main/bindings.html +20 -0
  46. data/spec/apps/kitchen_sink/app/main/views/main/form.html +73 -0
  47. data/spec/apps/kitchen_sink/app/main/views/main/main.html +1 -0
  48. data/spec/integration/bindings_spec.rb +33 -0
  49. data/spec/integration/user_spec.rb +51 -21
  50. data/spec/models/associations_spec.rb +8 -0
  51. data/spec/models/model_spec.rb +7 -0
  52. data/spec/models/user_spec.rb +20 -0
  53. data/spec/models/validations_spec.rb +2 -1
  54. data/spec/models/validators/block_validations_spec.rb +53 -0
  55. data/spec/page/bindings/template_binding/view_lookup_for_path_spec.rb +10 -0
  56. data/spec/page/path_string_renderer_spec.rb +6 -0
  57. data/spec/reactive/eventable_spec.rb +24 -6
  58. data/spec/server/component_templates_spec.rb +21 -0
  59. data/spec/server/html_parser/sandlebars_parser_spec.rb +12 -13
  60. data/spec/server/html_parser/view_parser_spec.rb +3 -0
  61. data/spec/server/rack/asset_files_spec.rb +2 -2
  62. data/spec/server/rack/http_resource_spec.rb +10 -0
  63. data/spec/tasks/dispatcher_spec.rb +5 -0
  64. data/spec/tasks/user_tasks_spec.rb +59 -0
  65. data/spec/utils/task_argument_filtererer_spec.rb +6 -0
  66. data/templates/newgem/app/newgem/config/initializers/boot.rb +10 -0
  67. data/templates/newgem/lib/newgem.rb.tt +13 -0
  68. data/templates/project/Gemfile.tt +3 -0
  69. data/templates/project/app/main/lib/.empty_directory +0 -0
  70. data/volt.gemspec +3 -1
  71. metadata +24 -25
  72. data/lib/volt/data_stores/mongo_driver.rb +0 -69
@@ -0,0 +1,21 @@
1
+ if RUBY_PLATFORM == 'opal'
2
+ else
3
+ require 'spec_helper'
4
+ require 'benchmark'
5
+ require 'volt/server/component_templates'
6
+
7
+ describe Volt::ComponentTemplates do
8
+ let(:haml_handler) do
9
+ double(:haml_handler)
10
+ end
11
+
12
+ it 'can be extended' do
13
+ expect( Volt::ComponentTemplates::Handlers.extensions ).to eq([ :html, :email ])
14
+
15
+ Volt::ComponentTemplates.register_template_handler(:haml, haml_handler)
16
+
17
+ expect( Volt::ComponentTemplates::Handlers.extensions ).to eq([ :html, :email, :haml ])
18
+ end
19
+ end
20
+
21
+ end
@@ -20,7 +20,7 @@ class HTMLHandler
20
20
  end
21
21
 
22
22
  def binding(binding)
23
- @html << "{#{binding}}"
23
+ @html << "{{#{binding}}}"
24
24
  end
25
25
 
26
26
  def start_tag(tag_name, attributes, unary)
@@ -94,12 +94,13 @@ describe Volt::SandlebarsParser do
94
94
  end
95
95
 
96
96
  it 'should handle bindings' do
97
- html = '<p>some cool {text} is {awesome}</p>'
97
+ html = '<p>some cool {{ text }} is {{ awesome }}</p>'
98
+ match = '<p>some cool {{text}} is {{awesome}}</p>'
98
99
  test_html(html)
99
100
  end
100
101
 
101
- it 'should handle bindings with nested { and }' do
102
- html = "<p>testing with {nested { 'binding stuff' }}</p>"
102
+ it 'should handle bindings with nested {{and}}' do
103
+ html = "<p>testing with {{nested {{ 'binding stuff' }} }}</p>"
103
104
  test_html(html)
104
105
  end
105
106
 
@@ -139,7 +140,7 @@ describe Volt::SandlebarsParser do
139
140
  end
140
141
 
141
142
  it 'should not jump bindings' do
142
- html = '<p>{some} text {binding}</p>'
143
+ html = '<p>{{ some }} text {{ binding }}</p>'
143
144
  test_html(html)
144
145
  end
145
146
 
@@ -150,8 +151,8 @@ describe Volt::SandlebarsParser do
150
151
  end
151
152
 
152
153
  it 'should let you escape { and }' do
153
- html = 'should escape {{{{}}} and {{{}}}}'
154
- match = 'should escape { and }'
154
+ html = 'should escape {{{{{}}} and {{{}}}}}'
155
+ match = 'should escape {{ and }}'
155
156
  test_html(html, match)
156
157
  end
157
158
 
@@ -191,11 +192,9 @@ describe Volt::SandlebarsParser do
191
192
  test_html(html)
192
193
  end
193
194
 
194
- # it "should warn you when you over close tags" do
195
- # html = "<div><p>test</p></div></div>"
196
- #
197
- # handler = HTMLHandler.new
198
- # expect { Volt::SandlebarsParser.new(html, handler) }.to raise_error(Volt::HTMLParseError)
199
- # end
195
+ it 'should close self closing elements' do
196
+ test_html '<p><p>', '<p></p><p></p>'
197
+ test_html '<p><span>1</span>2<p>3</p>', '<p><span>1</span>2</p><p>3</p>'
198
+ end
200
199
  end
201
200
  end
@@ -192,6 +192,9 @@ describe Volt::ViewParser do
192
192
  END
193
193
 
194
194
  view = Volt::ViewParser.new(html, 'main/main/main/body')
195
+
196
+ expected = " <a href=\"{link_name}\">Link</a>\n"
197
+ expect(view.templates["main/main/main/body/body"]["html"]).to eq expected
195
198
  end
196
199
 
197
200
  it 'should parse components' do
@@ -13,13 +13,13 @@ if RUBY_PLATFORM != 'opal'
13
13
  main = Volt::AssetFiles.new('main', @component_paths)
14
14
 
15
15
  components = main.components
16
- expect(components).to eq(%w(volt main shared bootstrap slideshow))
16
+ expect(components).to eq(%w(volt mongo main shared bootstrap slideshow))
17
17
  end
18
18
 
19
19
  it 'should list all JS files' do
20
20
  main = Volt::AssetFiles.new('main', @component_paths)
21
21
 
22
- expect(main.javascript_files(nil)).to eq(['/assets/js/jquery-2.0.3.js', '/assets/js/volt_js_polyfills.js', '/assets/js/bootstrap.js', '/assets/js/test2.js', '/assets/js/test3.js', '/assets/js/test1.js', '/assets/volt/page/page.js', '/components/main.js'])
22
+ expect(main.javascript_files(nil)).to eq(['/assets/js/jquery-2.0.3.js', '/assets/js/volt_js_polyfills.js', '/assets/js/volt_watch.js', '/assets/js/bootstrap.js', '/assets/js/test2.js', '/assets/js/test3.js', '/assets/js/test1.js', '/assets/volt/page/page.js', '/components/main.js'])
23
23
  end
24
24
 
25
25
  it 'should raise an exception for a missing component gem' do
@@ -55,5 +55,15 @@ if RUBY_PLATFORM != 'opal'
55
55
  expect(response.status).to eq(200)
56
56
  expect(response.body).to eq(['show with id 99 and another_param called'])
57
57
  end
58
+
59
+ it 'should call the supplied app if routes are not matched and cause a 404' do
60
+ http_resource = Volt::HttpResource.new(app, @routes)
61
+ env = Rack::MockRequest.env_for('http://example.com/not_a_valid_param')
62
+ request = Volt::HttpRequest.new(env)
63
+ response = http_resource.call(env)
64
+ expect(response[0]).to eq(404)
65
+ #expect(response.body).to eq(['show with id 99 and another_param called'])
66
+ end
67
+
58
68
  end
59
69
  end
@@ -10,6 +10,11 @@ if RUBY_PLATFORM != 'opal'
10
10
  Volt.logger = spy('Volt::VoltLogger')
11
11
  end
12
12
 
13
+ after do
14
+ # Cleanup, make volt make a new logger. Otherwise this will leak out.
15
+ Volt.logger = nil
16
+ end
17
+
13
18
  it 'should only allow method calls on Task or above in the inheritance chain' do
14
19
  channel = double('channel')
15
20
 
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+
3
+ if RUBY_PLATFORM != 'opal'
4
+ describe UserTasks do
5
+ let(:fake_response) { double('FakeResponse', fetch_first: true) }
6
+
7
+ let(:fake_users_collection) do
8
+ double('FakeUsersCollection', where: fake_response)
9
+ end
10
+
11
+ let(:fake_store) { double('FakeStore', :_users => fake_users_collection) }
12
+
13
+ let(:login_info) { { 'login' => 'Marty', 'password' => 'McFly' } }
14
+
15
+ before do
16
+ allow($page).to receive(:store).and_return fake_store
17
+ allow(User).to receive(:login_field).and_return 'user'
18
+ allow(fake_response).to receive(:fetch_first).and_yield(user)
19
+ end
20
+
21
+ describe '#login' do
22
+ context 'with no matching user' do
23
+ let(:user) { false }
24
+
25
+ it 'raises VoltUserError' do
26
+ expect { subject.login(login_info) }.
27
+ to raise_error('User could not be found')
28
+ end
29
+ end
30
+
31
+ context 'with a matching user' do
32
+ let(:password) { BCrypt::Password.create(login_info['password']) }
33
+ let(:user) { double('User', _id: 1, _hashed_password: password) }
34
+
35
+ it 'fails on bad password' do
36
+ expect { subject.login(login_info.merge 'password' => 'Not McFly') }.
37
+ to raise_error('Password did not match')
38
+ end
39
+
40
+ it 'fails with missing app_secret' do
41
+ allow(Volt.config).to receive(:app_secret).and_return false
42
+
43
+ expect { subject.login(login_info) }.
44
+ to raise_error('app_secret is not configured')
45
+ end
46
+
47
+ it 'generates a signature digest' do
48
+ allow(Digest::SHA256).to receive(:hexdigest).and_call_original
49
+
50
+ subject.login(login_info)
51
+
52
+ expect(Digest::SHA256).to have_received(:hexdigest).with(
53
+ "#{Volt.config.app_secret}::#{user._id}"
54
+ )
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -13,5 +13,11 @@ if RUBY_PLATFORM != 'opal'
13
13
 
14
14
  expect(filtered_args).to eq([:login, { login: 'jim@jim.com', password: '[FILTERED]' }])
15
15
  end
16
+
17
+ it 'should create and run a new TaskArgumentFilterer when its filter method is called' do
18
+ filtered_args = TaskArgumentFilterer.filter([{login: 'jam@jam.com', password: 'some password'}])
19
+ expect(filtered_args).to eq([{:login=>"jam@jam.com", :password=>"[FILTERED]"}])
20
+ end
21
+
16
22
  end
17
23
  end
@@ -0,0 +1,10 @@
1
+ # Place any code you want to run when the component is included on the client
2
+ # or server.
3
+
4
+ # To include code only on the client use:
5
+ # if RUBY_PLATFORM == 'opal'
6
+ #
7
+ # To include code only on the server, use:
8
+ # unless RUBY_PLATFORM == 'opal'
9
+ # ^^ this will not send compile in code in the conditional to the client.
10
+ # ^^ this include code required in the conditional.
@@ -1,3 +1,16 @@
1
+ # If you need to require in code in the gem's app folder, keep in mind that
2
+ # the app is not on the load path when the gem is required. Use
3
+ # app/{gemname}/config/initializers/boot.rb to require in client or server
4
+ # code.
5
+ #
6
+ # Also, in volt apps, you typically use the lib folder in the
7
+ # app/{componentname} folder instead of this lib folder. This lib folder is
8
+ # for setting up gem code when Bundler.require is called. (or the gem is
9
+ # required.)
10
+ #
11
+ # If you need to configure volt in some way, you can add a Volt.configure block
12
+ # in this file.
13
+
1
14
  <%- config[:constant_array].each_with_index do |c,i| -%>
2
15
  <%= ' '*i %>module <%= c %>
3
16
  <%- end -%>
@@ -2,6 +2,9 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'volt', '<%= config[:version] %>'
4
4
 
5
+ # volt uses mongo as the default data store.
6
+ gem 'volt-mongo', '~> 0.0.1'
7
+
5
8
  # The following gem's are optional for themeing
6
9
  # Twitter bootstrap
7
10
  gem 'volt-bootstrap', '~> 0.0.10'
File without changes
data/volt.gemspec CHANGED
@@ -24,7 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.add_dependency 'rack', '~> 1.5.0'
25
25
  spec.add_dependency 'sprockets-sass', '~> 1.0.0'
26
26
  spec.add_dependency 'sass', '~> 3.2.5'
27
- spec.add_dependency 'mongo', '~> 1.9.0'
28
27
  spec.add_dependency 'listen', '~> 2.8.0'
29
28
  spec.add_dependency 'uglifier', '>= 2.4.0'
30
29
  spec.add_dependency 'configurations', '~> 2.0.0.pre'
@@ -34,6 +33,7 @@ Gem::Specification.new do |spec|
34
33
  spec.add_dependency 'faye-websocket', '~> 0.9.2'
35
34
  spec.add_dependency 'concurrent-ruby', '~> 0.8.0'
36
35
 
36
+
37
37
  # For user passwords
38
38
  spec.add_dependency 'bcrypt', '~> 3.1.9'
39
39
 
@@ -41,6 +41,8 @@ Gem::Specification.new do |spec|
41
41
  spec.add_development_dependency 'rspec', '~> 3.2.0'
42
42
  spec.add_development_dependency 'opal-rspec', '~> 0.4.2'
43
43
  spec.add_development_dependency 'capybara', '~> 2.4.2'
44
+
45
+ # There is a big performance issue with selenium-webdriver on v2.45.0
44
46
  spec.add_development_dependency 'selenium-webdriver', '~> 2.43.0'
45
47
  spec.add_development_dependency 'chromedriver2-helper', '~> 0.0.8'
46
48
  spec.add_development_dependency 'poltergeist', '~> 1.5.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.2
4
+ version: 0.9.3.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-05-06 00:00:00.000000000 Z
11
+ date: 2015-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 3.2.5
83
- - !ruby/object:Gem::Dependency
84
- name: mongo
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 1.9.0
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 1.9.0
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: listen
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -496,6 +482,7 @@ files:
496
482
  - app/volt/assets/css/notices.css.scss
497
483
  - app/volt/assets/js/jquery-2.0.3.js
498
484
  - app/volt/assets/js/volt_js_polyfills.js
485
+ - app/volt/assets/js/volt_watch.js
499
486
  - app/volt/config/dependencies.rb
500
487
  - app/volt/controllers/notices_controller.rb
501
488
  - app/volt/models/user.rb
@@ -523,9 +510,9 @@ files:
523
510
  - lib/volt/controllers/actions.rb
524
511
  - lib/volt/controllers/http_controller.rb
525
512
  - lib/volt/controllers/model_controller.rb
526
- - lib/volt/data_stores/base.rb
513
+ - lib/volt/data_stores/base_adaptor_client.rb
514
+ - lib/volt/data_stores/base_adaptor_server.rb
527
515
  - lib/volt/data_stores/data_store.rb
528
- - lib/volt/data_stores/mongo_driver.rb
529
516
  - lib/volt/extra_core/array.rb
530
517
  - lib/volt/extra_core/blank.rb
531
518
  - lib/volt/extra_core/class.rb
@@ -545,14 +532,15 @@ files:
545
532
  - lib/volt/models/associations.rb
546
533
  - lib/volt/models/buffer.rb
547
534
  - lib/volt/models/cursor.rb
548
- - lib/volt/models/dirty.rb
549
535
  - lib/volt/models/errors.rb
550
536
  - lib/volt/models/field_helpers.rb
551
- - lib/volt/models/listener_tracker.rb
552
537
  - lib/volt/models/location.rb
553
538
  - lib/volt/models/model.rb
554
539
  - lib/volt/models/model_hash_behaviour.rb
555
- - lib/volt/models/model_helpers.rb
540
+ - lib/volt/models/model_helpers/dirty.rb
541
+ - lib/volt/models/model_helpers/listener_tracker.rb
542
+ - lib/volt/models/model_helpers/model_change_helpers.rb
543
+ - lib/volt/models/model_helpers/model_helpers.rb
556
544
  - lib/volt/models/model_wrapper.rb
557
545
  - lib/volt/models/permissions.rb
558
546
  - lib/volt/models/persistors/array_store.rb
@@ -572,7 +560,8 @@ files:
572
560
  - lib/volt/models/state_helpers.rb
573
561
  - lib/volt/models/state_manager.rb
574
562
  - lib/volt/models/url.rb
575
- - lib/volt/models/validations.rb
563
+ - lib/volt/models/validations/errors.rb
564
+ - lib/volt/models/validations/validations.rb
576
565
  - lib/volt/models/validators/email_validator.rb
577
566
  - lib/volt/models/validators/format_validator.rb
578
567
  - lib/volt/models/validators/length_validator.rb
@@ -651,6 +640,7 @@ files:
651
640
  - lib/volt/server/rack/source_map_server.rb
652
641
  - lib/volt/server/socket_connection_handler.rb
653
642
  - lib/volt/server/socket_connection_handler_stub.rb
643
+ - lib/volt/server/template_handlers/handlers.rb
654
644
  - lib/volt/server/websocket/rack_server_adaptor.rb
655
645
  - lib/volt/server/websocket/websocket_handler.rb
656
646
  - lib/volt/spec/capybara.rb
@@ -702,6 +692,7 @@ files:
702
692
  - spec/apps/kitchen_sink/app/main/views/main/cookie_test.html
703
693
  - spec/apps/kitchen_sink/app/main/views/main/first_last.html
704
694
  - spec/apps/kitchen_sink/app/main/views/main/flash.html
695
+ - spec/apps/kitchen_sink/app/main/views/main/form.html
705
696
  - spec/apps/kitchen_sink/app/main/views/main/html_safe.html
706
697
  - spec/apps/kitchen_sink/app/main/views/main/index.html
707
698
  - spec/apps/kitchen_sink/app/main/views/main/main.html
@@ -756,6 +747,7 @@ files:
756
747
  - spec/models/user_spec.rb
757
748
  - spec/models/user_validation_spec.rb
758
749
  - spec/models/validations_spec.rb
750
+ - spec/models/validators/block_validations_spec.rb
759
751
  - spec/models/validators/email_validator_spec.rb
760
752
  - spec/models/validators/format_validator_spec.rb
761
753
  - spec/models/validators/length_validator_spec.rb
@@ -774,6 +766,7 @@ files:
774
766
  - spec/reactive/reactive_array_spec.rb
775
767
  - spec/reactive/reactive_hash_spec.rb
776
768
  - spec/router/routes_spec.rb
769
+ - spec/server/component_templates_spec.rb
777
770
  - spec/server/html_parser/sample_page.html
778
771
  - spec/server/html_parser/sandlebars_parser_spec.rb
779
772
  - spec/server/html_parser/view_handler_spec.rb
@@ -792,6 +785,7 @@ files:
792
785
  - spec/tasks/live_query_spec.rb
793
786
  - spec/tasks/query_tasks.rb
794
787
  - spec/tasks/query_tracker_spec.rb
788
+ - spec/tasks/user_tasks_spec.rb
795
789
  - spec/templates/targets/binding_document/component_node_spec.rb
796
790
  - spec/utils/generic_counting_pool_spec.rb
797
791
  - spec/utils/generic_pool_spec.rb
@@ -826,6 +820,7 @@ files:
826
820
  - templates/newgem/app/newgem/assets/css/.empty_directory
827
821
  - templates/newgem/app/newgem/assets/js/.empty_directory
828
822
  - templates/newgem/app/newgem/config/dependencies.rb
823
+ - templates/newgem/app/newgem/config/initializers/boot.rb
829
824
  - templates/newgem/app/newgem/config/routes.rb
830
825
  - templates/newgem/app/newgem/controllers/main_controller.rb.tt
831
826
  - templates/newgem/app/newgem/controllers/server/.empty_directory
@@ -853,6 +848,7 @@ files:
853
848
  - templates/project/app/main/config/dependencies.rb
854
849
  - templates/project/app/main/config/routes.rb
855
850
  - templates/project/app/main/controllers/main_controller.rb
851
+ - templates/project/app/main/lib/.empty_directory
856
852
  - templates/project/app/main/models/.empty_directory
857
853
  - templates/project/app/main/models/user.rb
858
854
  - templates/project/app/main/tasks/.empty_directory
@@ -863,7 +859,6 @@ files:
863
859
  - templates/project/config/app.rb.tt
864
860
  - templates/project/config/base/index.html
865
861
  - templates/project/config/initializers/.empty_directory
866
- - templates/project/lib/.empty_directory
867
862
  - templates/project/spec/app/main/controllers/server/sample_http_controller_spec.rb
868
863
  - templates/project/spec/app/main/integration/sample_integration_spec.rb
869
864
  - templates/project/spec/app/main/models/sample_model_spec.rb
@@ -888,9 +883,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
888
883
  version: '2.1'
889
884
  required_rubygems_version: !ruby/object:Gem::Requirement
890
885
  requirements:
891
- - - ">="
886
+ - - ">"
892
887
  - !ruby/object:Gem::Version
893
- version: '0'
888
+ version: 1.3.1
894
889
  requirements: []
895
890
  rubyforge_project:
896
891
  rubygems_version: 2.4.5
@@ -921,6 +916,7 @@ test_files:
921
916
  - spec/apps/kitchen_sink/app/main/views/main/cookie_test.html
922
917
  - spec/apps/kitchen_sink/app/main/views/main/first_last.html
923
918
  - spec/apps/kitchen_sink/app/main/views/main/flash.html
919
+ - spec/apps/kitchen_sink/app/main/views/main/form.html
924
920
  - spec/apps/kitchen_sink/app/main/views/main/html_safe.html
925
921
  - spec/apps/kitchen_sink/app/main/views/main/index.html
926
922
  - spec/apps/kitchen_sink/app/main/views/main/main.html
@@ -975,6 +971,7 @@ test_files:
975
971
  - spec/models/user_spec.rb
976
972
  - spec/models/user_validation_spec.rb
977
973
  - spec/models/validations_spec.rb
974
+ - spec/models/validators/block_validations_spec.rb
978
975
  - spec/models/validators/email_validator_spec.rb
979
976
  - spec/models/validators/format_validator_spec.rb
980
977
  - spec/models/validators/length_validator_spec.rb
@@ -993,6 +990,7 @@ test_files:
993
990
  - spec/reactive/reactive_array_spec.rb
994
991
  - spec/reactive/reactive_hash_spec.rb
995
992
  - spec/router/routes_spec.rb
993
+ - spec/server/component_templates_spec.rb
996
994
  - spec/server/html_parser/sample_page.html
997
995
  - spec/server/html_parser/sandlebars_parser_spec.rb
998
996
  - spec/server/html_parser/view_handler_spec.rb
@@ -1011,6 +1009,7 @@ test_files:
1011
1009
  - spec/tasks/live_query_spec.rb
1012
1010
  - spec/tasks/query_tasks.rb
1013
1011
  - spec/tasks/query_tracker_spec.rb
1012
+ - spec/tasks/user_tasks_spec.rb
1014
1013
  - spec/templates/targets/binding_document/component_node_spec.rb
1015
1014
  - spec/utils/generic_counting_pool_spec.rb
1016
1015
  - spec/utils/generic_pool_spec.rb