vesper 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/README.md +1 -1
  2. data/bin/vesper +119 -126
  3. data/lib/vesper.rb +31 -20
  4. data/lib/vesper/framework/Gemfile +1 -1
  5. data/lib/vesper/framework/Rakefile +2 -1
  6. data/lib/vesper/framework/application/hello_world.rb +0 -17
  7. data/lib/vesper/framework/config.ru +1 -0
  8. data/lib/vesper/framework/plugins/{core-extensions → core-extensions.vpi}/Gemfile +0 -0
  9. data/lib/vesper/framework/plugins/{core-extensions → core-extensions.vpi}/Readme.md +0 -0
  10. data/lib/vesper/framework/plugins/{core-extensions → core-extensions.vpi}/application/date_time.rb +0 -0
  11. data/lib/vesper/framework/plugins/{core-extensions → core-extensions.vpi}/application/helpers.rb +0 -0
  12. data/lib/vesper/framework/plugins/{core-extensions → core-extensions.vpi}/application/number.rb +0 -0
  13. data/lib/vesper/framework/plugins/{core-extensions → core-extensions.vpi}/application/string.rb +0 -0
  14. data/lib/vesper/framework/tmp/plugins/{data-mapper → data-mapper.vpi}/Gemfile +0 -0
  15. data/lib/vesper/framework/tmp/plugins/{data-mapper → data-mapper.vpi}/Readme.md +0 -0
  16. data/lib/vesper/framework/tmp/plugins/{data-mapper → data-mapper.vpi}/assets/data/seeds.rb +0 -0
  17. data/lib/vesper/framework/tmp/plugins/{data-mapper → data-mapper.vpi}/assets/data/transmogrify.rb +0 -0
  18. data/lib/vesper/framework/tmp/plugins/{data-mapper → data-mapper.vpi}/config/datasources.rb +0 -0
  19. data/lib/vesper/framework/tmp/plugins/{data-mapper → data-mapper.vpi}/hooks/post-boot.rb +0 -0
  20. data/lib/vesper/framework/tmp/plugins/{data-mapper → data-mapper.vpi}/tasks/data-mapper.rb +0 -0
  21. data/lib/vesper/framework/tmp/plugins/{hot-reloader → hot-reloader.vpi}/Gemfile +0 -0
  22. data/lib/vesper/framework/tmp/plugins/{hot-reloader → hot-reloader.vpi}/Readme.md +0 -0
  23. data/lib/vesper/framework/tmp/plugins/{hot-reloader → hot-reloader.vpi}/config/hot-reloader.rb +0 -0
  24. data/lib/vesper/framework/tmp/plugins/mini-test.vpi/Readme.md +14 -0
  25. data/lib/vesper/framework/tmp/plugins/mini-test.vpi/assets/tests/hello_world.rb +5 -0
  26. data/lib/vesper/framework/tmp/plugins/mini-test.vpi/tasks/mini-test.rb +16 -0
  27. data/lib/vesper/framework/tmp/plugins/{pony-emailer → pony-emailer.vpi}/Gemfile +0 -0
  28. data/lib/vesper/framework/tmp/plugins/{pony-emailer → pony-emailer.vpi}/Readme.md +0 -0
  29. data/lib/vesper/framework/tmp/plugins/{pony-emailer → pony-emailer.vpi}/config/pony.rb +0 -0
  30. data/lib/vesper/framework/views/hello_world.html +230 -45
  31. data/lib/vesper/version.rb +1 -1
  32. data/vesper.gemspec +4 -5
  33. metadata +31 -46
  34. data/lib/vesper/framework/plugins/core-extensions/meta_data.rb +0 -7
  35. data/lib/vesper/framework/tests/hello_world.rb +0 -9
  36. data/lib/vesper/framework/tmp/plugins/data-mapper/meta_data.rb +0 -7
  37. data/lib/vesper/framework/tmp/plugins/hot-reloader/meta_data.rb +0 -7
  38. data/lib/vesper/framework/tmp/plugins/pony-emailer/meta_data.rb +0 -7
  39. data/lib/vesper/plugin/meta_data.rb +0 -7
  40. data/lib/vesper/rake.rb +0 -4
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ![Vesper Logo](http://vesperapps.com/img/vesper.png)
2
2
 
3
- Version 1.0.1
3
+ Version 1.1.0
4
4
  ======
5
5
  > The Ruby web framework designed for clarity, flexibility and effectiveness.
6
6
 
data/bin/vesper CHANGED
@@ -1,168 +1,161 @@
1
1
  #!/usr/bin/env ruby
2
- require 'fileutils.rb'
3
- require 'grit'
4
2
 
5
3
 
6
- def show_options
7
- puts ''
8
- puts 'Commands:'
9
- puts ''
10
- puts ' vesper create app'
11
- puts ' Summary: Creates a new Vesper web app.'
12
- puts ' Alias for vesper create application.'
13
- puts ' Example: vesper create app HelloWorld'
14
- puts ''
15
- puts ' vesper install plugin'
16
- puts ' Summary: Installs a plugin from a git repo.'
17
- puts ' Should be run from inside an existing Vesper app.'
18
- puts ' Example: vesper install plugin git@github.com:vesper/logger.git'
19
- puts ''
20
- puts ' vesper remove plugin'
21
- puts ' Summary: Removes an existing plugin from a Vesper app.'
22
- puts ' Example: vesper remove plugin logger'
23
- puts ''
24
- puts ' vesper create plugin'
25
- puts ' Summary: Creates an empty plugin for development.'
26
- puts ' Should be run from inside an existing Vesper app.'
27
- puts ' Example: vesper create plugin my-plugin'
28
- puts ''
29
- puts ' vesper run test'
30
- puts ' Summary: Runs a test using a file in /tests using MiniTest.'
31
- puts ' Example: vesper run test hello_world'
32
- puts ''
33
- puts ' vesper run tests'
34
- puts ' Summary: Runs tests on all the files in /tests using MiniTest'
35
- puts ' Example: vesper run tests'
36
- puts ''
37
- puts 'Documentation can be found online at: http://vesperapps.com'
38
- puts ''
39
- puts 'Questions and comments should be send to: jarrod@vesperapps.com'
40
- puts ''
41
- end
4
+ ARGV[0] && ARGV[1] ? msg = "#{ARGV[0]} #{ARGV[1]}" : msg = false
5
+ ARGV[2] ? rec = ARGV[2] : rec = false
6
+ ARGV[3] ? opt = ARGV[3] : opt = false
42
7
 
43
8
 
44
- def create_app app_name
45
- if Dir.exists? app_name
9
+ if rec && (msg == 'create application' || msg == 'create app')
10
+ require 'fileutils.rb'
11
+
12
+ if Dir.exists? rec
46
13
  puts 'That name is already taken.'
47
14
  else
48
- puts "Creating #{app_name}..."
49
- FileUtils.cp_r File.dirname(__FILE__) + '/../lib/vesper/framework', app_name
50
- FileUtils.chmod_R 0777, app_name
51
- puts 'Installing default plugins...'
52
- Dir["#{app_name}/tmp/plugins/**"].each {|plugin| FileUtils.cp_r plugin, "#{app_name}/plugins"}
53
- Dir["#{app_name}/plugins/**"].each {|plugin| Dir["#{plugin}/assets/**"].each {|asset| FileUtils.cp_r asset, "#{app_name}/"}}
54
- FileUtils.rm_rf "#{app_name}/tmp/plugins"
15
+ puts "Creating #{rec}..."
16
+ FileUtils.cp_r File.dirname(__FILE__) + '/../lib/vesper/framework', rec
17
+ FileUtils.chmod_R 0777, rec
18
+
19
+ unless opt == '-core' || opt == '-recipe'
20
+ puts 'Installing default plugins...'
21
+ Dir["#{rec}/tmp/plugins/**"].each {|plugin| FileUtils.cp_r plugin, "#{rec}/plugins"}
22
+ Dir["#{rec}/plugins/**"].each {|plugin| Dir["#{plugin}/assets/**"].each {|asset| FileUtils.cp_r asset, "#{rec}/"}}
23
+ end
24
+
25
+ if opt == '-recipe'
26
+ errors = false
27
+ errors = true if ARGV[4].nil?
28
+ errors = true unless File.exists?(ENV['HOME'] + '/.vesper.rb')
29
+ require ENV['HOME'] + '/.vesper' unless errors
30
+ errors = true unless @recipes && @recipes[ARGV[4].to_sym]
31
+
32
+ if errors
33
+ puts ''
34
+ puts 'I can\'t seem to find that recipe.'
35
+ puts ''
36
+ else
37
+ @recipes[ARGV[4].to_sym].each {|p| system "cd #{rec} && vesper install plugin #{p} -no-bundle"}
38
+ end
39
+ end
40
+
41
+ FileUtils.rm_rf "#{rec}/tmp/plugins"
55
42
  puts "Bundling gems..."
56
- system "cd #{app_name} && bundle > /dev/null"
43
+ system "cd #{rec} && bundle > /dev/null"
57
44
  puts ''
58
- puts "#{app_name} is ready. Next steps:"
59
- puts " cd #{app_name}"
45
+ puts "#{rec} is ready. Next steps:"
46
+ puts " cd #{rec}"
60
47
  puts " rackup"
61
48
  puts ''
62
49
  end
50
+
51
+ exit
63
52
  end
64
53
 
65
54
 
66
- def create_plugin plugin_name
67
- plugin_name = plugin_name.downcase
68
- if Dir.exists? "plugins/#{plugin_name}"
55
+ if rec && msg == 'create plugin'
56
+ require 'fileutils.rb'
57
+
58
+ rec = rec.downcase
59
+ if Dir.exists? "plugins/#{rec}"
69
60
  puts ''
70
- puts "#{plugin_name} is already installed in /plugins."
61
+ puts "#{rec} is already installed in /plugins."
71
62
  puts ''
72
63
  else
73
64
  puts 'Creating plugin...'
74
- FileUtils.cp_r File.dirname(__FILE__) + '/../lib/vesper/plugin', "plugins/#{plugin_name}"
75
- FileUtils.chmod_R 0777, "plugins/#{plugin_name}"
76
- File.rename "plugins/#{plugin_name}/application/plugin.rb", "plugins/#{plugin_name}/application/#{plugin_name}.rb"
77
- File.rename "plugins/#{plugin_name}/assets/plugin.rb", "plugins/#{plugin_name}/assets/#{plugin_name}.rb"
78
- File.rename "plugins/#{plugin_name}/config/plugin.rb", "plugins/#{plugin_name}/config/#{plugin_name}.rb"
79
- File.rename "plugins/#{plugin_name}/tasks/plugin.rb", "plugins/#{plugin_name}/tasks/#{plugin_name}.rb"
65
+ FileUtils.cp_r File.dirname(__FILE__) + '/../lib/vesper/plugin', "plugins/#{rec}"
66
+ FileUtils.chmod_R 0777, "plugins/#{rec}"
67
+ File.rename "plugins/#{rec}/application/plugin.rb", "plugins/#{rec}/application/#{rec}.rb"
68
+ File.rename "plugins/#{rec}/assets/plugin.rb", "plugins/#{rec}/assets/#{rec}.rb"
69
+ File.rename "plugins/#{rec}/config/plugin.rb", "plugins/#{rec}/config/#{rec}.rb"
70
+ File.rename "plugins/#{rec}/tasks/plugin.rb", "plugins/#{rec}/tasks/#{rec}.rb"
80
71
  puts ''
81
- puts "#{plugin_name} has been installed in /plugins."
72
+ puts "#{rec} has been created in /plugins."
82
73
  puts 'For more information on Vesper plugin development, visit: http://vesperapps.com'
83
74
  puts ''
84
75
  end
76
+
77
+ exit
85
78
  end
86
79
 
87
80
 
88
- def remove_plugin plugin_name
89
- if Dir.exists? "plugins/#{plugin_name}"
81
+ if rec && msg == 'install plugin'
82
+ require 'fileutils.rb'
83
+
84
+ plugin = rec.gsub(/(.)*\//, '').gsub(/.git/, '')
85
+
86
+ puts 'Installing plugin...'
87
+ system "cd plugins && git clone #{rec}"
88
+ FileUtils.rm_rf "plugins/#{plugin}/.git"
89
+ FileUtils.chmod_R 0777, "plugins/#{plugin}"
90
+
91
+ puts 'Copying assets...'
92
+ Dir["plugins/#{plugin}/assets/**"].each {|asset| FileUtils.cp_r asset, "./"}
93
+
94
+ unless opt == '-no-bundle'
95
+ puts 'Bundling gems...'
96
+ system "bundle > /dev/null"
97
+ end
98
+
99
+ puts ''
100
+ puts "#{plugin} is installed in /plugins."
101
+ puts ''
102
+
103
+ exit
104
+ end
105
+
106
+
107
+ if rec && msg == 'remove plugin'
108
+ require 'fileutils.rb'
109
+
110
+ if Dir.exists? "plugins/#{rec}"
90
111
  assets = []
91
- Dir["plugins/#{plugin_name}/assets/**/*"].each {|asset| assets << asset.gsub("plugins/#{plugin_name}/assets/", "")}
112
+ Dir["plugins/#{rec}/assets/**/*"].each {|asset| assets << asset.gsub("plugins/#{rec}/assets/", "")}
92
113
  template = []
93
114
  Dir[File.dirname(__FILE__) + '/../lib/vesper/framework/**/*'].each {|i| template << i.gsub(/(.)*framework\//, '')}
94
115
  assets.each {|asset| FileUtils.rm_rf asset if !template.include?(asset) && asset.include?('.')}
95
116
  assets.each {|asset| FileUtils.rm_rf asset if !template.include?(asset) && Dir.exists?(asset) && Dir.entries(asset) == [".", ".."]}
96
- FileUtils.rm_rf "plugins/#{plugin_name}"
117
+ FileUtils.rm_rf "plugins/#{rec}"
97
118
  system "bundle > /dev/null"
98
119
  puts ''
99
- puts "#{plugin_name} plugin removed."
120
+ puts "#{rec} plugin removed."
100
121
  puts ''
101
122
  else
102
123
  puts ''
103
124
  puts 'That plugin isn\'t installed'
104
125
  puts ''
105
126
  end
127
+
128
+ exit
106
129
  end
107
130
 
108
131
 
109
- def install_plugin repo
110
- puts 'Installing plugin...'
111
- new_plugin = Grit::Git.new 'tmp/new_plugin'
112
- new_plugin.clone({:branch => 'master'}, repo, new_plugin.git_dir)
113
- FileUtils.rm_rf "#{new_plugin.git_dir}/.git"
114
- require "./#{new_plugin.git_dir}/meta_data.rb"
115
- FileUtils.mv new_plugin.git_dir, "plugins/#{META_DATA[:name]}"
116
- FileUtils.chmod_R 0777, "plugins/#{META_DATA[:name]}"
117
- puts 'Copying assets...'
118
- Dir["plugins/#{META_DATA[:name]}/assets/**"].each {|asset| FileUtils.cp_r asset, "./"}
119
- puts 'Bundling gems...'
120
- system "bundle > /dev/null"
121
- puts ''
122
- puts "#{META_DATA[:name]} is installed in /plugins."
123
- puts ''
124
- end
125
-
126
-
127
- def run_test file
128
- if File.exists? "./tests/#{file}.rb"
129
- require 'minitest/autorun'
130
- require 'vesper'
131
- require "./tests/#{file}.rb"
132
- else
133
- puts ''
134
- puts 'I can\'t find that test. Maybe there\'s a typ0?'
135
- puts ''
136
- end
137
- end
138
-
139
-
140
- def run_tests
141
- require 'minitest/autorun'
142
- require 'vesper'
143
- Dir["./tests/**/*"].each {|file| require file}
144
- end
145
-
146
-
147
- ARGV[0] && ARGV[1] ? command = "#{ARGV[0]} #{ARGV[1]}" : command = false
148
- ARGV[2] ? option = ARGV[2] : option = false
149
-
150
-
151
- case command
152
- when 'create application'
153
- option ? create_app(option) : show_options
154
- when 'create app'
155
- option ? create_app(option) : show_options
156
- when 'create plugin'
157
- option ? create_plugin(option) : show_options
158
- when 'install plugin'
159
- option ? install_plugin(option) : show_options
160
- when 'remove plugin'
161
- option ? remove_plugin(option) : show_options
162
- when 'run test'
163
- option ? run_test(option) : show_options
164
- when 'run tests'
165
- run_tests
166
- else
167
- show_options
168
- end
132
+ puts ''
133
+ puts 'Messages:'
134
+ puts ''
135
+ puts ' vesper create app'
136
+ puts ' -----------------'
137
+ puts ' Creates a new Vesper web app.'
138
+ puts ' ~: vesper create app HelloWorld'
139
+ puts ' Options:'
140
+ puts ' -core creates app without extra plugins'
141
+ puts ' -recipe my_recipe creates app with plugins listed in the recipe my_recipe'
142
+ puts ''
143
+ puts ' vesper install plugin'
144
+ puts ' ---------------------'
145
+ puts ' Installs a plugin from a git repo.'
146
+ puts ' ~/HelloWorld: vesper install plugin git@github.com:jarrodtaylor/mobile-request-router.vpi.git'
147
+ puts ''
148
+ puts ' vesper remove plugin'
149
+ puts ' --------------------'
150
+ puts ' Removes an existing plugin from a Vesper app.'
151
+ puts ' ~/HelloWorld: vesper remove plugin mobile-request-router.vpi'
152
+ puts ''
153
+ puts ' vesper create plugin'
154
+ puts ' --------------------'
155
+ puts ' Creates an empty plugin for development.'
156
+ puts ' ~/HelloWorld: vesper create plugin my-plugin'
157
+ puts ''
158
+ puts 'Documentation can be found online at: http://vesperapps.com'
159
+ puts ''
160
+ puts 'Questions and comments should be send to: jarrod@vesperapps.com'
161
+ puts ''
@@ -1,32 +1,43 @@
1
1
  require "vesper/version"
2
2
 
3
3
  module Vesper
4
+
5
+ def self.load_app
6
+ require 'bundler'
7
+ Bundler.require
4
8
 
5
- require 'bundler'
6
- Bundler.require
9
+ set :environment, ENV['env'] if ENV['env']
10
+ set :environment, ENV['environment'] if ENV['environment']
11
+ set :environment, ENV['rack_env'] if ENV['rack_env']
7
12
 
8
- Tilt.register Tilt::ERBTemplate, 'html'
13
+ Tilt.register Tilt::ERBTemplate, 'html'
9
14
 
10
- set :views, './views'
11
- set :public_folder, './public'
15
+ set :views, './views'
16
+ set :public_folder, './public'
12
17
 
13
- Dir["./plugins/**/pre-boot.rb"].each {|file| require file}
18
+ Dir["./plugins/**/pre-boot.rb"].each {|file| require file}
14
19
 
15
- [
16
- 'config',
17
- 'plugins/**/config',
18
- 'plugins/**/application',
19
- 'application'
20
- ].each {|dir| Dir["./#{dir}/**/*.rb"].each {|file| require file}}
20
+ [
21
+ 'config',
22
+ 'plugins/**/config',
23
+ 'plugins/**/application',
24
+ 'application'
25
+ ].each {|dir| Dir["./#{dir}/**/*.rb"].each {|file| require file}}
21
26
 
22
- Dir["./plugins/**/post-boot.rb"].each {|file| require file}
27
+ Dir["./plugins/**/post-boot.rb"].each {|file| require file}
23
28
 
24
- error(400) { redirect '/400.html' }
25
- error(401) { redirect '/401.html' }
26
- error(403) { redirect '/403.html' }
27
- error(404) { redirect '/404.html' }
28
- error(408) { redirect '/408.html' }
29
- error(500) { redirect '/500.html' }
30
- error(502) { redirect '/502.html' }
29
+ error(400) { redirect '/400.html' }
30
+ error(401) { redirect '/401.html' }
31
+ error(403) { redirect '/403.html' }
32
+ error(404) { redirect '/404.html' }
33
+ error(408) { redirect '/408.html' }
34
+ error(500) { redirect '/500.html' }
35
+ error(502) { redirect '/502.html' }
36
+ end
37
+
38
+ def self.load_tasks
39
+ Dir["./plugins/**/tasks/*"].each {|file| require file}
40
+ Dir["./tasks/**/*"].each {|file| require file}
41
+ end
31
42
 
32
43
  end
@@ -2,7 +2,7 @@ source 'http://rubygems.org'
2
2
 
3
3
 
4
4
  gem 'sinatra', '~> 1.3.2'
5
- gem 'vesper', '~> 1.0.1', require: false
5
+ gem 'vesper', '~> 1.1.0', require: false
6
6
 
7
7
 
8
8
  Dir["./plugins/**/Gemfile"].each {|gemfile| self.send(:eval, File.open(gemfile, 'r').read)}
@@ -1,2 +1,3 @@
1
1
  require 'vesper'
2
- require 'vesper/rake'
2
+ Vesper.load_app
3
+ Vesper.load_tasks
@@ -3,21 +3,4 @@
3
3
  #
4
4
  get '/?' do
5
5
  erb :hello_world
6
- end
7
-
8
- class User
9
- # DataMapper model class
10
- # For more info: http://datamapper.org/
11
- #
12
- # include DataMapper::Resource
13
- #
14
- # property :id, Serial
15
- # property :deleted_at, ParanoidDateTime
16
- # timestamps :at
17
- #
18
- # property :email, String
19
-
20
- def knock_knock
21
- "Who's there?"
22
- end
23
6
  end
@@ -1,4 +1,5 @@
1
1
  require 'vesper'
2
+ Vesper.load_app
2
3
 
3
4
  # Run the app on Rack
4
5
  run Sinatra::Application
@@ -0,0 +1,14 @@
1
+ MiniTest Vesper Plugin
2
+ ======================
3
+ > Automates running MiniTest tests in Vesper.
4
+
5
+
6
+ minitest(file)
7
+ --------------
8
+ > Runs MiniTest on all file in /test or single file passes in args.
9
+
10
+ >> rake minitest
11
+ => runs all tests in /tests
12
+
13
+ >> rake minitest file=hello_world
14
+ => runs test in tests/hello_world.rb
@@ -0,0 +1,5 @@
1
+ class TestHelloWorld < MiniTest::Unit::TestCase
2
+ def test_IAMA
3
+ assert_equal "IAMA String", "IAMA String"
4
+ end
5
+ end
@@ -0,0 +1,16 @@
1
+ desc 'Runs MiniTest on /tests'
2
+ task :minitest do
3
+ require 'minitest/autorun'
4
+ require 'vesper'
5
+ unless ENV['file']
6
+ Dir["./tests/**/*.rb"].each {|file| require file}
7
+ else
8
+ if File.exists? "./tests/#{ENV['file']}.rb"
9
+ require "./tests/#{ENV['file']}.rb"
10
+ else
11
+ puts ''
12
+ puts 'I can\'t find that test. Maybe there\'s a typ0?'
13
+ puts ''
14
+ end
15
+ end
16
+ end
@@ -1,51 +1,186 @@
1
1
  <!-- From /lib/hello_world.rb -->
2
2
 
3
-
4
3
  <style type="text/css" media="screen">
5
- /* Import fonts from Google */
6
- @import url(http://fonts.googleapis.com/css?family=Cabin+Condensed:400);
7
- @import url(http://fonts.googleapis.com/css?family=Lato:300,700);
4
+ @import url(http://fonts.googleapis.com/css?family=Cabin+Condensed:400);
5
+ @import url(http://fonts.googleapis.com/css?family=Lato:300,700);
6
+
7
+ html {
8
+ background-attachment: fixed;
9
+ background-color: #f3f3f3;
10
+ background-image: url(http://vesperapps.com/img/stone.png);
11
+ border-top: 3px solid #121212;
12
+ margin: 0;
13
+ padding: 0;
14
+ }
15
+
8
16
  body {
9
- background-color: #ededed;
10
17
  color: #121212;
11
- font-family: "Lato", sans-serif;
18
+ font-family: 'Lato', sans-serif;
12
19
  font-size: 16px;
13
20
  line-height: 1.5em;
14
- padding-bottom: 33px;
15
- text-align: center;
21
+ margin: auto;
22
+ padding: 33px 0 0 0;
23
+ width: 616px;
24
+ -webkit-text-size-adjust: none;
16
25
  }
26
+
17
27
  a, a:visited {
18
- color: rgb(39, 177, 245);
19
- text-decoration: none;
28
+ color: #27b1f5;
29
+ display: inline-block;
30
+ margin: 0 -3px;
31
+ padding: 0 3px;
32
+ text-decoration: underline;
33
+ -webkit-border-radius: 3px;
34
+ -moz-border-radius: 3px;
35
+ border-radius: 3px;
20
36
  }
37
+
21
38
  a:hover {
22
- text-decoration: underline;
23
- text-shadow: 0 0 3px rgb(39, 177, 245);
39
+ text-decoration: none;
24
40
  }
25
- div {
26
- background-color: white;
27
- border: 1px solid silver;
28
- display: inline-block;
41
+
42
+ a img {
43
+ border: none;
44
+ }
45
+
46
+ h1, h2, h3, h4, h5, h6 {
47
+ font-family: 'Cabin Condensed', sans-serif;
48
+ font-weight: normal;
49
+ }
50
+
51
+ h2.meta {
52
+ color: silver;
53
+ font-size: 16px;
54
+ text-align: center;
55
+ }
56
+
57
+ h2#version {
58
+ float: right;
59
+ }
60
+
61
+ div#logo {
62
+ display: block;
29
63
  margin: auto;
30
- padding: 11px 33px 22px 33px;
31
- text-align: left;
64
+ position: relative;
65
+ width: 309px;
66
+ }
67
+
68
+ div#logo code {
69
+ left: 86px;
70
+ position: absolute;
71
+ text-shadow: 0 1px 0 silver;
72
+ top: 140px;
73
+ }
74
+
75
+ div#menu {
76
+ margin: 33px auto;
77
+ text-align: center;
78
+ width: 309px;
79
+ }
80
+
81
+ div#menu p a {
82
+ background-color: #121212;
83
+ box-shadow: 0 0 3px #777;
84
+ color: white;
85
+ display: block;
86
+ font-family: 'Cabin Condensed', sans-serif;
87
+ margin: 11px 33px;
88
+ padding: 7px 11px;
89
+ text-decoration: none;
90
+ }
91
+
92
+ div#menu p a:hover {
93
+ box-shadow: 0 0 7px #27B1F5;
94
+ color: #27B1F5\9; /* IE hack */
95
+ text-shadow: 0 0 7px #27B1F5;
96
+ }
97
+
98
+ div#readme {
99
+ background-color: white;
100
+ border: 1px solid silver\9; /* IE hack */
101
+ border-top: 3px solid #121212;
102
+ box-shadow: 0 0 3px #777;
103
+ padding: 11px 33px 33px 33px;
32
104
  width: 550px;
33
- -webkit-border-radius: 7px;
34
- -moz-border-radius: 7px;
35
- border-radius: 7px;
36
105
  }
37
- blockquote {
106
+
107
+ div#readme a:hover {
108
+ background-color: #121212;
109
+ color: white;
110
+ text-decoration: none;
111
+ text-shadow: 0 0 3px white;
112
+ }
113
+
114
+ div#readme h1 a:hover,
115
+ div#readme h2 a:hover,
116
+ div#readme h3 a:hover,
117
+ div#readme h4 a:hover,
118
+ div#readme h5 a:hover,
119
+ div#readme h6 a:hover {
120
+ text-shadow: none;
121
+ }
122
+
123
+ div#readme h1,
124
+ div#readme h2,
125
+ div#readme h3,
126
+ div#readme h4,
127
+ div#readme h5,
128
+ div#readme h6 {
129
+ color: #111;
130
+ text-shadow: 0 0 7px silver;
131
+ }
132
+
133
+ div#readme h1 {
134
+ background-color: lightyellow;
135
+ border: 1px solid silver\9; /* IE hack */
136
+ box-shadow: 0 0 3px #777;
137
+ color: #777;
138
+ display: inline-block;
139
+ font-size: 16px;
140
+ margin-bottom: 0.67em;
141
+ margin-left: -44px;
142
+ margin-top: 2.01em;
143
+ padding: 3px 33px;
144
+ padding-left: 44px;
145
+ width: 18%\9;
146
+ }
147
+
148
+ div#readme h2 {
149
+ font-size: 36px;
150
+ line-height: 100%;
151
+ }
152
+
153
+ div#readme h3 {
154
+ font-size: 24px;
155
+ }
156
+
157
+ div#readme h4 {
158
+ font-size: 16px;
159
+ margin-top: 27px;
160
+ text-align: center;
161
+ }
162
+
163
+ div#readme hr {
164
+ border: none;
165
+ border-top: 1px solid #ededed;
166
+ border-top-color: #fefefe\9; /* IE hack */
167
+ margin: 33px 0;
168
+ margin: 11px 0\9;
169
+ }
170
+ div#readme blockquote {
38
171
  border-left: 3px solid #ededed;
39
172
  color: #777;
40
173
  font-size: 90%;
41
174
  margin-left: 11px;
42
175
  padding-left: 11px;
43
176
  }
44
- blockquote.output {
177
+
178
+ div#readme blockquote.output {
45
179
  font-family: monospace;
46
180
  font-size: 11px;
47
181
  }
48
- code {
182
+
183
+ div#readme code {
49
184
  background-color: #121212;
50
185
  color: white;
51
186
  display: block;
@@ -57,27 +192,71 @@
57
192
  -moz-border-radius: 3px;
58
193
  border-radius: 3px;
59
194
  }
60
- code span { color: #777; }
61
- dl dt { font-weight: bold; }
62
- dl dd {
195
+
196
+ div#readme h5 {
197
+ background-color: #333;
198
+ color: white;
199
+ font-family: "Lato", sans-serif;
200
+ font-size: 11px;
201
+ margin: -11px -11px 11px -11px;
202
+ padding: 3px 11px;
203
+ text-shadow: none;
204
+ -webkit-border-top-left-radius: 3px;
205
+ -webkit-border-top-right-radius: 3px;
206
+ -moz-border-radius-topleft: 3px;
207
+ -moz-border-radius-topright: 3px;
208
+ border-top-left-radius: 3px;
209
+ border-top-right-radius: 3px;
210
+ }
211
+
212
+ div#readme code span { color: #777 }
213
+
214
+ div#readme dl dt { font-weight: bold; }
215
+
216
+ div#readme dl dd {
63
217
  color: #777;
64
218
  font-size: 90%;
65
219
  line-height: 1.3em;
66
- margin: 3px 11px 11px 11px;
220
+ margin-bottom: 11px;
221
+ margin-left: 11px;
222
+ margin-top: 3px;
67
223
  }
68
- hr {
69
- border: none;
70
- border-top: 1px solid #ededed;
71
- margin: 30px 0;
224
+
225
+ div#readme p#credits {
226
+ color: silver;
227
+ font-size: 80%;
228
+ text-align: center;
72
229
  }
73
- </style>
74
-
75
230
 
76
- <p><img src="/img/vesper.png" /></p>
231
+ div#readme p#credits a {
232
+ margin: 0 11px;
233
+ }
234
+
235
+
236
+ </style>
77
237
 
78
- <div>
79
- <p>Vesper handles tieing all this together for you, but it's still important to know where everything is and what it does. Take a look at what's included in a new application.</p>
80
-
238
+ <h2 class="meta" id="version">v1.1.0</h2>
239
+
240
+ <div id="logo">
241
+ <img src="img/vesper.png" />
242
+ <code>gem install vesper</code>
243
+ </div>
244
+
245
+ <div id="menu">
246
+ <p>
247
+ <a href="http://vesperapps.com">Documentation</a>
248
+ <a href="https://github.com/vesper/framework-gem">Source Code</a>
249
+ </p>
250
+ </div>
251
+
252
+ <h2 class="meta">Welcome to Vesper</h2>
253
+
254
+ <div id="readme">
255
+
256
+ <h4>Send any questions or comments to: <a href="mailto:jarrod@vesperapps.com">jarrod@vesperapps.com</a></h4>
257
+
258
+ <hr />
259
+
81
260
  <dl>
82
261
  <dt>.gitignore</dt>
83
262
  <dd>Tell git which files to ignore. Learn more from <a href="http://book.git-scm.com/4_ignoring_files.html">The Git Community Book</a>.</dd>
@@ -121,8 +300,8 @@
121
300
 
122
301
  <dt>tests/</dt>
123
302
  <dd>
124
- Write your tests here and they'll be automatically loaded, along with your app, when you run Vesper's test commands. Set up by default to use MiniTest.
125
- <code><span>~/HelloWorld:</span> vesper run tests</code>
303
+ Created by the MiniTest plugin, write your tests here and they'll be automatically loaded, along with your app, when you run the MiniTest command.
304
+ <code><span>~/HelloWorld:</span> rake minitest</code>
126
305
  </dd>
127
306
 
128
307
  <dt>tmp/</dt>
@@ -137,8 +316,14 @@
137
316
  <blockquote><strong>Pro Tip:</strong> Check out the Mobile Request Router plugin for easy mobile designs.</blockquote>
138
317
  </dd>
139
318
  </dl>
140
-
141
- </div>
142
-
143
- <p>Documentation can be found online at: <a href="http://vesperapps.com">http://vesperapps.com</a></p>
144
- <p>Questions, comments and bugs should be send to: <a href="mailto:jarrod@vesperapps.com">jarrod@vesperapps.com</a></p>
319
+
320
+ <hr />
321
+
322
+ <p id="credits">
323
+ Vesper was created by:
324
+ <br />
325
+ <a href="https://twitter.com/#!/jarrodtaylor">Jarrod Taylor</a>
326
+ <a href="https://twitter.com/#!/TheKarmakazie">Richard Rissanen</a>
327
+ </p>
328
+
329
+ </div>
@@ -1,3 +1,3 @@
1
1
  module Vesper
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -15,11 +15,10 @@ Gem::Specification.new do |s|
15
15
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
16
  s.require_paths = ["lib"]
17
17
 
18
- s.required_ruby_version = ">= 1.9.2"
18
+ s.required_ruby_version = ">= 1.9.3"
19
19
 
20
- s.post_install_message = "\nTo see what vesper can do:\n vesper options\n\nSend any questions or comments to jarrod@vesperapps.com\n\n"
20
+ s.post_install_message = "\nTo see what vesper can do:\n vesper messages\n\nSend any questions or comments to jarrod@vesperapps.com\n\n"
21
21
 
22
22
  s.add_runtime_dependency "bundler", "~> 1.0.21"
23
- s.add_runtime_dependency "grit", "~> 2.4.1"
24
- s.add_runtime_dependency "sinatra", "~> 1.3.1"
25
- end
23
+ s.add_runtime_dependency "sinatra", "~> 1.3.2"
24
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vesper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-01-13 00:00:00.000000000 Z
13
+ date: 2012-01-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
17
- requirement: &70345138772800 !ruby/object:Gem::Requirement
17
+ requirement: &70256438215020 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,29 +22,18 @@ dependencies:
22
22
  version: 1.0.21
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70345138772800
26
- - !ruby/object:Gem::Dependency
27
- name: grit
28
- requirement: &70345138772340 !ruby/object:Gem::Requirement
29
- none: false
30
- requirements:
31
- - - ~>
32
- - !ruby/object:Gem::Version
33
- version: 2.4.1
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: *70345138772340
25
+ version_requirements: *70256438215020
37
26
  - !ruby/object:Gem::Dependency
38
27
  name: sinatra
39
- requirement: &70345138771880 !ruby/object:Gem::Requirement
28
+ requirement: &70256438213820 !ruby/object:Gem::Requirement
40
29
  none: false
41
30
  requirements:
42
31
  - - ~>
43
32
  - !ruby/object:Gem::Version
44
- version: 1.3.1
33
+ version: 1.3.2
45
34
  type: :runtime
46
35
  prerelease: false
47
- version_requirements: *70345138771880
36
+ version_requirements: *70256438213820
48
37
  description:
49
38
  email: jarrod@vesperapps.com
50
39
  executables:
@@ -65,13 +54,12 @@ files:
65
54
  - lib/vesper/framework/application/hello_world.rb
66
55
  - lib/vesper/framework/config.ru
67
56
  - lib/vesper/framework/config/sessions.rb
68
- - lib/vesper/framework/plugins/core-extensions/Gemfile
69
- - lib/vesper/framework/plugins/core-extensions/Readme.md
70
- - lib/vesper/framework/plugins/core-extensions/application/date_time.rb
71
- - lib/vesper/framework/plugins/core-extensions/application/helpers.rb
72
- - lib/vesper/framework/plugins/core-extensions/application/number.rb
73
- - lib/vesper/framework/plugins/core-extensions/application/string.rb
74
- - lib/vesper/framework/plugins/core-extensions/meta_data.rb
57
+ - lib/vesper/framework/plugins/core-extensions.vpi/Gemfile
58
+ - lib/vesper/framework/plugins/core-extensions.vpi/Readme.md
59
+ - lib/vesper/framework/plugins/core-extensions.vpi/application/date_time.rb
60
+ - lib/vesper/framework/plugins/core-extensions.vpi/application/helpers.rb
61
+ - lib/vesper/framework/plugins/core-extensions.vpi/application/number.rb
62
+ - lib/vesper/framework/plugins/core-extensions.vpi/application/string.rb
75
63
  - lib/vesper/framework/public/400.html
76
64
  - lib/vesper/framework/public/401.html
77
65
  - lib/vesper/framework/public/403.html
@@ -84,23 +72,22 @@ files:
84
72
  - lib/vesper/framework/public/js/hide_addressbar.js
85
73
  - lib/vesper/framework/public/robots.txt
86
74
  - lib/vesper/framework/tasks/irb.rb
87
- - lib/vesper/framework/tests/hello_world.rb
88
- - lib/vesper/framework/tmp/plugins/data-mapper/Gemfile
89
- - lib/vesper/framework/tmp/plugins/data-mapper/Readme.md
90
- - lib/vesper/framework/tmp/plugins/data-mapper/assets/data/seeds.rb
91
- - lib/vesper/framework/tmp/plugins/data-mapper/assets/data/transmogrify.rb
92
- - lib/vesper/framework/tmp/plugins/data-mapper/config/datasources.rb
93
- - lib/vesper/framework/tmp/plugins/data-mapper/hooks/post-boot.rb
94
- - lib/vesper/framework/tmp/plugins/data-mapper/meta_data.rb
95
- - lib/vesper/framework/tmp/plugins/data-mapper/tasks/data-mapper.rb
96
- - lib/vesper/framework/tmp/plugins/hot-reloader/Gemfile
97
- - lib/vesper/framework/tmp/plugins/hot-reloader/Readme.md
98
- - lib/vesper/framework/tmp/plugins/hot-reloader/config/hot-reloader.rb
99
- - lib/vesper/framework/tmp/plugins/hot-reloader/meta_data.rb
100
- - lib/vesper/framework/tmp/plugins/pony-emailer/Gemfile
101
- - lib/vesper/framework/tmp/plugins/pony-emailer/Readme.md
102
- - lib/vesper/framework/tmp/plugins/pony-emailer/config/pony.rb
103
- - lib/vesper/framework/tmp/plugins/pony-emailer/meta_data.rb
75
+ - lib/vesper/framework/tmp/plugins/data-mapper.vpi/Gemfile
76
+ - lib/vesper/framework/tmp/plugins/data-mapper.vpi/Readme.md
77
+ - lib/vesper/framework/tmp/plugins/data-mapper.vpi/assets/data/seeds.rb
78
+ - lib/vesper/framework/tmp/plugins/data-mapper.vpi/assets/data/transmogrify.rb
79
+ - lib/vesper/framework/tmp/plugins/data-mapper.vpi/config/datasources.rb
80
+ - lib/vesper/framework/tmp/plugins/data-mapper.vpi/hooks/post-boot.rb
81
+ - lib/vesper/framework/tmp/plugins/data-mapper.vpi/tasks/data-mapper.rb
82
+ - lib/vesper/framework/tmp/plugins/hot-reloader.vpi/Gemfile
83
+ - lib/vesper/framework/tmp/plugins/hot-reloader.vpi/Readme.md
84
+ - lib/vesper/framework/tmp/plugins/hot-reloader.vpi/config/hot-reloader.rb
85
+ - lib/vesper/framework/tmp/plugins/mini-test.vpi/Readme.md
86
+ - lib/vesper/framework/tmp/plugins/mini-test.vpi/assets/tests/hello_world.rb
87
+ - lib/vesper/framework/tmp/plugins/mini-test.vpi/tasks/mini-test.rb
88
+ - lib/vesper/framework/tmp/plugins/pony-emailer.vpi/Gemfile
89
+ - lib/vesper/framework/tmp/plugins/pony-emailer.vpi/Readme.md
90
+ - lib/vesper/framework/tmp/plugins/pony-emailer.vpi/config/pony.rb
104
91
  - lib/vesper/framework/tmp/restart.txt
105
92
  - lib/vesper/framework/views/hello_world.html
106
93
  - lib/vesper/framework/views/layout.html
@@ -109,14 +96,12 @@ files:
109
96
  - lib/vesper/plugin/application/plugin.rb
110
97
  - lib/vesper/plugin/assets/plugin.rb
111
98
  - lib/vesper/plugin/config/plugin.rb
112
- - lib/vesper/plugin/meta_data.rb
113
99
  - lib/vesper/plugin/tasks/plugin.rb
114
- - lib/vesper/rake.rb
115
100
  - lib/vesper/version.rb
116
101
  - vesper.gemspec
117
102
  homepage: http://vesperapps.com/
118
103
  licenses: []
119
- post_install_message: ! "\nTo see what vesper can do:\n vesper options\n\nSend any
104
+ post_install_message: ! "\nTo see what vesper can do:\n vesper messages\n\nSend any
120
105
  questions or comments to jarrod@vesperapps.com\n\n"
121
106
  rdoc_options: []
122
107
  require_paths:
@@ -126,7 +111,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
111
  requirements:
127
112
  - - ! '>='
128
113
  - !ruby/object:Gem::Version
129
- version: 1.9.2
114
+ version: 1.9.3
130
115
  required_rubygems_version: !ruby/object:Gem::Requirement
131
116
  none: false
132
117
  requirements:
@@ -1,7 +0,0 @@
1
- META_DATA = {
2
- name: 'core-extensions',
3
- version: '1.0.0',
4
- authors: ['Jarrod Taylor'],
5
- homepage: 'https://github.com/vesper/core-extensions',
6
- source: 'git@github.com:vesper/core-extensions.git'
7
- }
@@ -1,9 +0,0 @@
1
- class TestHelloWorld < MiniTest::Unit::TestCase
2
- def setup
3
- @user = User.new
4
- end
5
-
6
- def test_knock_knock_joke
7
- assert_equal "Who's there?", @user.knock_knock
8
- end
9
- end
@@ -1,7 +0,0 @@
1
- META_DATA = {
2
- name: 'data-mapper',
3
- version: '1.0.0',
4
- authors: ['Jarrod Taylor', 'Richard Rissanen'],
5
- homepage: 'https://github.com/jarrodtaylor/vpi-data-mapper',
6
- source: 'git@github.com:jarrodtaylor/vpi-data-mapper.git'
7
- }
@@ -1,7 +0,0 @@
1
- META_DATA = {
2
- name: 'hot-reloader',
3
- version: '1.0.0',
4
- authors: ['Jarrod Taylor'],
5
- homepage: 'https://github.com/jarrodtaylor/vpi-hot-reloader',
6
- source: 'git@github.com:jarrodtaylor/vpi-hot-reloader.git'
7
- }
@@ -1,7 +0,0 @@
1
- META_DATA = {
2
- name: 'pony-emailer',
3
- version: '1.0.0',
4
- authors: ['Jarrod Taylor', 'Richard Rissanen'],
5
- homepage: 'https://github.com/jarrodtaylor/vpi-pony-emailer',
6
- source: 'git@github.com:jarrodtaylor/vpi-pony-emailer.git'
7
- }
@@ -1,7 +0,0 @@
1
- META_DATA = {
2
- name: 'my-nifty-plugin', # This is what your plugin directory will be called
3
- version: '0.0.1',
4
- authors: ['Your name here...'],
5
- homepage: 'http://example.com/yourplugin',
6
- source: '' # Link to git repo for installation
7
- }
@@ -1,4 +0,0 @@
1
- class Vesper::Rake
2
- Dir["./plugins/**/tasks/*"].each {|file| require file}
3
- Dir["./tasks/**/*"].each {|file| require file}
4
- end