volt 0.9.2 → 0.9.3.pre1

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