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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/CONTRIBUTING.md +1 -1
- data/README.md +1 -0
- data/app/volt/tasks/query_tasks.rb +4 -3
- data/app/volt/tasks/store_tasks.rb +1 -1
- data/lib/volt/boot.rb +8 -7
- data/lib/volt/cli/asset_compile.rb +1 -1
- data/lib/volt/cli/console.rb +14 -3
- data/lib/volt/cli/new_gem.rb +3 -3
- data/lib/volt/cli.rb +3 -3
- data/lib/volt/config.rb +7 -1
- data/lib/volt/data_stores/base.rb +7 -0
- data/lib/volt/data_stores/data_store.rb +10 -3
- data/lib/volt/data_stores/mongo_driver.rb +58 -7
- data/lib/volt/models/associations.rb +2 -2
- data/lib/volt/models/persistors/array_store.rb +24 -6
- data/lib/volt/models/persistors/base.rb +4 -0
- data/lib/volt/models/persistors/model_store.rb +4 -15
- data/lib/volt/page/bindings/attribute_binding.rb +17 -15
- data/lib/volt/page/bindings/each_binding.rb +14 -17
- data/lib/volt/page/bindings/view_binding/controller_handler.rb +24 -0
- data/lib/volt/page/bindings/view_binding.rb +10 -30
- data/lib/volt/page/document_events.rb +7 -4
- data/lib/volt/page/page.rb +19 -13
- data/lib/volt/page/path_string_renderer.rb +41 -0
- data/lib/volt/page/targets/dom_section.rb +5 -2
- data/lib/volt/reactive/computation.rb +3 -1
- data/lib/volt/reactive/reactive_accessors.rb +8 -7
- data/lib/volt/reactive/reactive_array.rb +2 -0
- data/lib/volt/server/component_handler.rb +3 -3
- data/lib/volt/server/component_templates.rb +32 -6
- data/lib/volt/server/forking_server.rb +4 -2
- data/lib/volt/server/rack/asset_files.rb +5 -1
- data/lib/volt/server/rack/component_paths.rb +6 -4
- data/lib/volt/server/rack/opal_files.rb +16 -11
- data/lib/volt/server/rack/quiet_common_logger.rb +1 -1
- data/lib/volt/server.rb +1 -1
- data/lib/volt/spec/setup.rb +1 -1
- data/lib/volt/version.rb +5 -0
- data/lib/volt/volt/app.rb +12 -2
- data/spec/apps/kitchen_sink/app/main/views/mailers/welcome.email +12 -0
- data/spec/integration/http_endpoints_spec.rb +1 -3
- data/spec/integration/user_spec.rb +0 -10
- data/spec/models/associations_spec.rb +0 -3
- data/spec/models/model_spec.rb +13 -0
- data/spec/models/persistors/flash_spec.rb +45 -0
- data/spec/models/validators/phone_number_validator_spec.rb +2 -2
- data/spec/page/bindings/template_binding/view_lookup_for_path_spec.rb +0 -5
- data/spec/page/path_string_renderer_spec.rb +23 -0
- data/spec/page/sub_context_spec.rb +1 -0
- data/spec/router/routes_spec.rb +24 -5
- data/spec/server/html_parser/view_handler_spec.rb +20 -0
- data/spec/server/rack/quite_common_logger_spec.rb +3 -3
- data/spec/spec_helper.rb +0 -4
- data/spec/tasks/query_tracker_spec.rb +30 -0
- data/templates/newgem/lib/newgem/version.rb.tt +7 -0
- data/templates/newgem/newgem.gemspec.tt +2 -4
- data/templates/project/Gemfile.tt +5 -2
- data/templates/project/config/app.rb.tt +49 -1
- data/volt.gemspec +12 -10
- metadata +24 -28
- data/VERSION +0 -1
- data/app/volt/tasks/live_query/data_store.rb +0 -33
- 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(:
|
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
|
@@ -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
|
data/spec/router/routes_spec.rb
CHANGED
@@ -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) { {'
|
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) { {'
|
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) { {'
|
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
|
@@ -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 =
|
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.
|
13
|
+
gem 'volt-user_templates', '~> 0.2.0'
|
14
14
|
|
15
|
-
|
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 =
|
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
|
13
|
-
|
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.
|
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
|
31
|
-
spec.add_dependency '
|
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.
|
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-
|
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.
|
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.
|
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:
|
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.
|
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.
|
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: '
|
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
|
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
|