vanntastic-sinatra-gen 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. data/History.txt +25 -0
  2. data/Manifest.txt +29 -0
  3. data/PostInstall.txt +2 -0
  4. data/README.rdoc +158 -0
  5. data/Rakefile +28 -0
  6. data/app_generators/sinatra_app/USAGE +8 -0
  7. data/app_generators/sinatra_app/sinatra_app_generator.rb +135 -0
  8. data/app_generators/sinatra_app/templates/Capfile +3 -0
  9. data/app_generators/sinatra_app/templates/Rakefile.erb +4 -0
  10. data/app_generators/sinatra_app/templates/app.rb.erb +28 -0
  11. data/app_generators/sinatra_app/templates/config.ru.erb +8 -0
  12. data/app_generators/sinatra_app/templates/config.yml +1 -0
  13. data/app_generators/sinatra_app/templates/config/deploy.rb.erb +13 -0
  14. data/app_generators/sinatra_app/templates/lib/app_helper.rb.erb +96 -0
  15. data/app_generators/sinatra_app/templates/lib/module.rb.erb +3 -0
  16. data/app_generators/sinatra_app/templates/test/test_app_bacon.rb.erb +20 -0
  17. data/app_generators/sinatra_app/templates/test/test_app_rspec.rb.erb +19 -0
  18. data/app_generators/sinatra_app/templates/test/test_app_shoulda.rb.erb +32 -0
  19. data/app_generators/sinatra_app/templates/test/test_app_spec.rb.erb +20 -0
  20. data/app_generators/sinatra_app/templates/test/test_app_unit.rb.erb +18 -0
  21. data/app_generators/sinatra_app/templates/test/test_helper.rb.erb +21 -0
  22. data/app_generators/sinatra_app/templates/views/builder_index.erb +4 -0
  23. data/app_generators/sinatra_app/templates/views/erb_index.erb +2 -0
  24. data/app_generators/sinatra_app/templates/views/erb_layout.erb +15 -0
  25. data/app_generators/sinatra_app/templates/views/haml_index.erb +2 -0
  26. data/app_generators/sinatra_app/templates/views/haml_layout.erb +6 -0
  27. data/bin/sinatra-gen +17 -0
  28. data/lib/sinatra-gen.rb +6 -0
  29. data/sinatra-gen.gemspec +45 -0
  30. data/test/test_generator_helper.rb +29 -0
  31. data/test/test_helper.rb +3 -0
  32. data/test/test_sinatra_app_generator.rb +194 -0
  33. metadata +122 -0
@@ -0,0 +1,25 @@
1
+ == 0.2.1 2009-02-10
2
+
3
+ * Updated tests and templates for Sinatra 0.9
4
+ * Added support for test/bacon
5
+ * Fixed errors with latest rubigen where git commands were happening before file generation
6
+ * Updated rubigen dependency
7
+
8
+ == 0.2.0 2008-12-23
9
+
10
+ * 1 major enhancement
11
+ * application actions can now be specified
12
+ on the command line. See README for more info.
13
+
14
+ == 0.1.1 2008-12-16
15
+
16
+ * 1 major enhancement
17
+ * added --cap option for generating capistrano recipe
18
+ * 1 minor enhancement
19
+ * added empty config.yml on generation
20
+
21
+ == 0.1.0 2008-12-13
22
+
23
+ * 1 major enhancement:
24
+ * Initial release
25
+ * See README.rdoc for more info
@@ -0,0 +1,29 @@
1
+ History.txt
2
+ Manifest.txt
3
+ PostInstall.txt
4
+ README.rdoc
5
+ Rakefile
6
+ app_generators/sinatra_app/USAGE
7
+ app_generators/sinatra_app/sinatra_app_generator.rb
8
+ app_generators/sinatra_app/templates/Capfile
9
+ app_generators/sinatra_app/templates/Rakefile.erb
10
+ app_generators/sinatra_app/templates/app.rb.erb
11
+ app_generators/sinatra_app/templates/config.ru.erb
12
+ app_generators/sinatra_app/templates/config.yml
13
+ app_generators/sinatra_app/templates/config/deploy.rb.erb
14
+ app_generators/sinatra_app/templates/lib/module.rb.erb
15
+ app_generators/sinatra_app/templates/lib/app_helper.rb.erb
16
+ app_generators/sinatra_app/templates/test/test_app_bacon.rb.erb
17
+ app_generators/sinatra_app/templates/test/test_app_rspec.rb.erb
18
+ app_generators/sinatra_app/templates/test/test_app_shoulda.rb.erb
19
+ app_generators/sinatra_app/templates/test/test_app_spec.rb.erb
20
+ app_generators/sinatra_app/templates/test/test_app_unit.rb.erb
21
+ app_generators/sinatra_app/templates/test/test_helper.rb.erb
22
+ app_generators/sinatra_app/templates/views/builder_index.erb
23
+ app_generators/sinatra_app/templates/views/erb_index.erb
24
+ app_generators/sinatra_app/templates/views/erb_layout.erb
25
+ app_generators/sinatra_app/templates/views/haml_index.erb
26
+ app_generators/sinatra_app/templates/views/haml_layout.erb
27
+ bin/sinatra-gen
28
+ lib/sinatra-gen.rb
29
+ sinatra-gen.gemspec
@@ -0,0 +1,2 @@
1
+ For information about sinatra-gen and its options run:
2
+ sinatra-gen
@@ -0,0 +1,158 @@
1
+ = sinatra-gen
2
+
3
+ http://github.com/quirkey/sinatra-gen
4
+
5
+ == DESCRIPTION:
6
+
7
+ sinatra-gen generates a common file structure and basic app files for a web app utilizing the sinatra framework.
8
+ For more information on sinatra, check out http://sinatrarb.com
9
+
10
+ !! NOW WITH SUPPORT FOR SINATRA 0.9 (02/10/09)
11
+
12
+ == SYNOPSIS:
13
+
14
+ sinatra-gen has a bunch of different options (based loosley on merb-gen) to try to not lock the
15
+ user into any specific frameworks/dev practices.
16
+
17
+ Run:
18
+
19
+ sinatra-gen [appname] [actions] [options]
20
+
21
+ e.g.
22
+
23
+ sinatra-gen mysinatrapp get:/ post:/:id --vendor --init --test=shoulda --views=haml
24
+
25
+ === Actions
26
+
27
+ !! NEW as of 0.2.0 (12/23/08)
28
+
29
+ For even faster app development you specify actions to include in your app when generating.
30
+ Actions are written out as
31
+
32
+ http_method:path
33
+
34
+ And are seperated by spaces. For example:
35
+
36
+ get:/ post:/:id put:/update/*
37
+
38
+ Will be added you your app as:
39
+
40
+ get '/' do
41
+ end
42
+
43
+ post '/:id' do
44
+ end
45
+
46
+ put '/update/*' do
47
+ end
48
+
49
+ It will also generate test skeletons in the test framework of your choosing.
50
+
51
+ === Options
52
+
53
+ (can also be obtained by running sinatra-gen with no arguments):
54
+
55
+ -v, --version Show the sinatra-gen version number and quit.
56
+ -d, --vendor Extract the latest sinatra to vendor/sinatra
57
+ --tiny Only create the minimal files.
58
+ --init Initialize a git repository
59
+ --cap Adds config directory with basic capistrano deploy.rb
60
+ --scripts Install the rubigen scripts (script/generate, script/destroy)
61
+ --git /path/to/git Specify a different path for 'git'
62
+ --test=test_framework Specify your testing framework (unit (default)/rspec/spec/shoulda/bacon)
63
+ --views=view_framework Specify your view framework (erb (default)/haml/builder)
64
+
65
+
66
+ The --tiny option will create no directories. Just an app.rb, a Rakefile, and a config.ru (Rackup file)
67
+
68
+ == ERB Helpers:
69
+
70
+ Miss some of the erb helpers from ActionView? I've included some helpers that can help:
71
+
72
+ - image
73
+ Creates an img tag, very similar to rails' image_tag.
74
+
75
+ image src, options={}
76
+
77
+ EX:
78
+
79
+ image 'your_image.jpg', :title => "Your Image"
80
+ # => <img src='images/your_image.jpg' title='Your Image' />
81
+
82
+ - link_css
83
+ Creates a css link tag for a css file in the public/css directory, very similar to rails' stylesheet_link_tag
84
+
85
+ link_css srcs, options={}
86
+
87
+ EX:
88
+
89
+ # link to a single stylesheet
90
+ link_css 'app'
91
+ # => <link rel="stylesheet" href="/css/app.css" type="text/css" media="screen" title="no title" charset="utf-8">
92
+ # link to multiple stylesheets
93
+ link_css "app, print"
94
+
95
+ - link_js
96
+ Creates a script tag for a javascript file in the public/js directory, similar to rails' javascript_include_tag
97
+
98
+ link_js srcs, options={}
99
+
100
+ EX:
101
+
102
+ # link to a single js file
103
+ link_js 'app'
104
+ # link to multiple js files
105
+ link_js 'jquery,app'
106
+
107
+ - link
108
+ Creates an anchor tag, similar to rails' link_to
109
+
110
+ link content, options={}
111
+
112
+ EX:
113
+
114
+ # link to google
115
+ link "Google", "http://google.com"
116
+
117
+ - tag
118
+ Creates an opening and closing html tag, similar to rails' content_tag
119
+
120
+ tag name, content, options={}
121
+
122
+ EX:
123
+
124
+ # create a header tag
125
+ tag :h1, "Shizam", :title => "Shizam"
126
+ # => <h1 title="Shizam">Shizam</h1>
127
+
128
+ - single_tag
129
+ Creates a single closing html tag, like img tags and link tags
130
+
131
+ single_tag name, options
132
+
133
+ EX:
134
+
135
+ # create an img tag
136
+ single_tag :img, :src => "my_img.jpg"
137
+ # => <img src="my_img.jpg" />
138
+
139
+ == ACKNOWLEDGEMENTS:
140
+
141
+ Big props to the Sinatra developers (http://github.com/bmizerany/sinatra/).
142
+ Also, thanks to Dr. Nic (http://github.com/drnic) for the Rubigen and Newgem libraries
143
+
144
+ == REQUIREMENTS:
145
+
146
+ To use the --vendor option, git must be installed.
147
+ To run the app without using the vendor option, the sinatra gem must be installed.
148
+ If you want to use the erb helpers, activesupport must be installed.
149
+
150
+ == INSTALL:
151
+
152
+ sudo gem install sinatra-gen
153
+ #or to install the ones with erb helpers
154
+ sudo gem install vanntastic-sinatra-gen -s http://gems.github.com
155
+
156
+ You can also install directly from github:
157
+
158
+ sudo gem install quirkey-sinatra-gen -s http://gems.github.com
@@ -0,0 +1,28 @@
1
+ %w[rubygems rake rake/clean fileutils newgem rubigen].each { |f| require f }
2
+ require File.dirname(__FILE__) + '/lib/sinatra-gen'
3
+
4
+ # Generate all the Rake tasks
5
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
6
+ $hoe = Hoe.new('sinatra-gen', SinatraGen::VERSION) do |p|
7
+ p.developer('Aaron Quint', 'aaron@quirkey.com')
8
+ p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
9
+ p.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
10
+ p.rubyforge_name = 'quirkey'
11
+ p.extra_deps = [
12
+ ['rubigen','>= 1.5.2'],
13
+ ]
14
+ p.extra_dev_deps = [
15
+ ['newgem', ">= #{::Newgem::VERSION}"]
16
+ ]
17
+
18
+ p.clean_globs |= %w[**/.DS_Store tmp *.log]
19
+ path = (p.rubyforge_name == p.name) ? p.rubyforge_name : "\#{p.rubyforge_name}/\#{p.name}"
20
+ p.remote_rdoc_dir = File.join(path.gsub(/^#{p.rubyforge_name}\/?/,''), 'rdoc')
21
+ p.rsync_args = '-av --delete --ignore-errors'
22
+ end
23
+
24
+ require 'newgem/tasks' # load /tasks/*.rake
25
+ Dir['tasks/**/*.rake'].each { |t| load t }
26
+
27
+ # TODO - want other tests/tasks run by default? Add them to the list
28
+ # task :default => [:spec, :features]
@@ -0,0 +1,8 @@
1
+ Description:
2
+
3
+ sinatra-gen generates a common file structure and basic app files for a web app utilizing the sinatra framework.
4
+ For more information on sinatra, check out http://sinatrarb.com
5
+
6
+ Usage:
7
+
8
+ sinatra-gen [appname] [options]
@@ -0,0 +1,135 @@
1
+ class RubiGen::Commands::Create
2
+
3
+ def run(command, relative_path = '')
4
+ in_directory = destination_path(relative_path)
5
+ logger.run command
6
+ system("cd #{in_directory} && #{command}")
7
+ end
8
+
9
+ end
10
+
11
+
12
+ class SinatraAppGenerator < RubiGen::Base
13
+
14
+ DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
15
+ Config::CONFIG['ruby_install_name'])
16
+
17
+ SINATRA_GIT_URL = 'git://github.com/sinatra/sinatra.git'
18
+
19
+ default_options :author => nil
20
+
21
+ attr_accessor :app_name, :vendor, :tiny, :git, :git_init, :test_framework, :view_framework, :install_scripts, :cap, :actions
22
+
23
+ def initialize(runtime_args, runtime_options = {})
24
+ super
25
+ usage if args.empty?
26
+ @destination_root = File.expand_path(args.shift)
27
+ self.app_name = base_name
28
+ extract_options
29
+ parse_actions(args)
30
+ end
31
+
32
+ def manifest
33
+ record do |m|
34
+ # Ensure appropriate folder(s) exists
35
+ m.directory ''
36
+
37
+ if git_init
38
+ m.run("#{git} init")
39
+ end
40
+
41
+ m.template 'config.ru.erb', 'config.ru'
42
+ m.template 'app.rb.erb' , "#{app_name}.rb"
43
+ m.template 'Rakefile.erb' , 'Rakefile'
44
+
45
+ unless tiny
46
+ BASEDIRS.each { |path| m.directory path }
47
+ m.file 'config.yml', 'config.yml'
48
+ m.template 'lib/module.rb.erb', "lib/#{app_name}.rb"
49
+ m.template 'lib/app_helper.rb.erb', 'lib/app_helper.rb'
50
+ m.template 'test/test_helper.rb.erb', 'test/test_helper.rb'
51
+ m.template "test/test_app_#{test_framework}.rb.erb", "test/test_#{app_name}.rb"
52
+ m.template "views/#{view_framework}_index.erb", "views/index.#{view_framework}"
53
+ m.template "views/#{view_framework}_layout.erb", "views/layout.#{view_framework}" unless view_framework == 'builder'
54
+ end
55
+
56
+ if vendor
57
+ m.directory 'vendor'
58
+ if git_init || File.exists?(File.join(@destination_root, '.git'))
59
+ command = "#{git} submodule add #{SINATRA_GIT_URL} vendor/sinatra"
60
+ else
61
+ command = "#{git} clone #{SINATRA_GIT_URL} vendor/sinatra"
62
+ end
63
+ m.run(command)
64
+ end
65
+
66
+ if cap
67
+ m.directory 'config'
68
+ m.file 'Capfile', 'Capfile'
69
+ m.template 'config/deploy.rb.erb', 'config/deploy.rb'
70
+ end
71
+
72
+ if install_scripts
73
+ m.dependency "install_rubigen_scripts", [destination_root, 'sinatra-gen'], :shebang => options[:shebang], :collision => :force
74
+ end
75
+ end
76
+ end
77
+
78
+ protected
79
+ def banner
80
+ <<-EOS
81
+ Creates the skeleton for a new sinatra app
82
+
83
+ USAGE: #{spec.name} app_name
84
+ EOS
85
+ end
86
+
87
+ def add_options!(opts)
88
+ opts.separator ''
89
+ opts.separator 'Options:'
90
+
91
+ opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
92
+ opts.on("-d", "--vendor", "Extract the latest sinatra to vendor/sinatra") {|o| options[:vendor] = o }
93
+ opts.on("--tiny", "Only create the minimal files.") {|o| options[:tiny] = o }
94
+ opts.on("--init", "Initialize a git repository") {|o| options[:init] = o }
95
+ opts.on("--cap", "Adds config directory with basic capistrano deploy.rb") {|o| options[:cap] = o }
96
+ opts.on("--scripts", "Install the rubigen scripts (script/generate, script/destroy)") {|o| options[:scripts] = o }
97
+ opts.on("--git /path/to/git", "Specify a different path for 'git'") {|o| options[:git] = o }
98
+ opts.on("--test=test_framework", String, "Specify your testing framework (unit (default)/rspec/spec/shoulda/bacon)") {|o| options[:test_framework] = o }
99
+ opts.on("--views=view_framework", "Specify your view framework (erb (default)/haml/builder)") {|o| options[:view_framework] = o }
100
+ end
101
+
102
+ def extract_options
103
+ # for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
104
+ # Templates can access these value via the attr_reader-generated methods, but not the
105
+ # raw instance variable value.
106
+ self.vendor = options[:vendor]
107
+ self.tiny = options[:tiny]
108
+ self.cap = options[:cap]
109
+ self.git = options[:git] || `which git`.strip
110
+ self.git_init = options[:init] || false
111
+ self.test_framework = options[:test_framework] || 'unit'
112
+ self.view_framework = options[:view_framework] || 'erb'
113
+ self.install_scripts = options[:scripts] || false
114
+ end
115
+
116
+ def klass_name
117
+ app_name.classify
118
+ end
119
+
120
+ def parse_actions(*action_args)
121
+ @actions = action_args.flatten.collect { |a| a.split(':', 2) }
122
+ end
123
+
124
+ # Installation skeleton. Intermediate directories are automatically
125
+ # created so don't sweat their absence here.
126
+ BASEDIRS = %w(
127
+ lib
128
+ test
129
+ public
130
+ public/js
131
+ public/css
132
+ public/images
133
+ views
134
+ )
135
+ end
@@ -0,0 +1,3 @@
1
+ load 'deploy' if respond_to?(:namespace) # cap2 differentiator
2
+ Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
3
+ load 'config/deploy'
@@ -0,0 +1,4 @@
1
+ namespace :<%= app_name %> do
2
+
3
+
4
+ end
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ <%- if vendor -%>
3
+ $:.unshift File.join(File.dirname(__FILE__), 'vendor', 'sinatra', 'lib')
4
+ require 'sinatra'
5
+ <%- else -%>
6
+ require 'sinatra'
7
+ <%- end -%>
8
+ require 'activesupport'
9
+
10
+ <%- unless tiny -%>
11
+ require File.join(File.dirname(__FILE__), 'lib', '<%= app_name %>')
12
+ require File.join(File.dirname(__FILE__), 'lib', 'app_helper')
13
+
14
+ set :public, 'public'
15
+ set :views, 'views'
16
+ <%- end -%>
17
+
18
+ <%- unless actions.empty? -%>
19
+ <%- actions.each do |meth, path| -%>
20
+ <%= meth %> '<%= path %>' do
21
+ end
22
+
23
+ <%- end -%>
24
+ <%- else -%>
25
+ get '/' do
26
+ <%= view_framework -%> :index
27
+ end
28
+ <%- end -%>
@@ -0,0 +1,8 @@
1
+ # To use with thin
2
+ # thin start -p PORT -R config.ru
3
+
4
+ require File.join(File.dirname(__FILE__), '<%= app_name %>.rb')
5
+
6
+ disable :run
7
+ set :env, :production
8
+ run Sinatra.application
@@ -0,0 +1,13 @@
1
+ set :application, "<%= app_name %>"
2
+ set :deploy_via, :remote_cache
3
+ set :user, 'SERVER_USER_NAME'
4
+ set :runner, user
5
+
6
+ set :scm, :git
7
+ set :repository, "git@github.com:GITHUB_USER_NAME/#{application}.git"
8
+ set :branch, 'master'
9
+ set :git_enable_submodules, 1
10
+ set :keep_releases, 3
11
+ set :deploy_to, "/var/www/apps/#{application}"
12
+
13
+ server "YOUR_DOMAIN", :web, :app, :db, :primary => true
@@ -0,0 +1,96 @@
1
+ module AppHelper
2
+
3
+ helpers do
4
+
5
+ # helper for image_tags
6
+ # EX : image 'logo.jpg'
7
+ # => <img src="images/logo.jpg" />
8
+ def image(src,options={})
9
+ options[:src] = "/images/#{src}"
10
+ single_tag(:img, options)
11
+ end
12
+
13
+ # css link helper
14
+ # EX : link_css 'default'
15
+ # => <link rel="stylesheet" href="/css/default.css" type="text/css" media="screen" title="no title" charset="utf-8">
16
+ def link_css(srcs,options={})
17
+ srcs_length = srcs.split(",").length
18
+ options[:media] ||= "screen"
19
+ options[:type] ||= "text/css"
20
+ options[:rel] ||= "stylesheet"
21
+ content = ""
22
+ if srcs_length == 1
23
+ options[:href] = "/css/#{srcs}.css"
24
+ content = single_tag(:link, options)
25
+ else
26
+ srcs.split(",").each do |src|
27
+ options[:href] = "/css/#{src}.css"
28
+ content << single_tag(:link, options)
29
+ content << "\n"
30
+ end
31
+ end
32
+ content
33
+ end
34
+
35
+ # js link helper
36
+ # EX : link_js 'app'
37
+ # => <script src="/js/app.js" type="text/javascript" />
38
+ # EX : link_js "app,jquery"
39
+ # => <script src="/js/app.js" type="text/javascript" />
40
+ # => <script src="/js/jquery.js" type="text/javascript" />
41
+ def link_js(srcs,options={})
42
+ srcs_length = srcs.split(",").length
43
+ content = ""
44
+ if srcs_length == 1
45
+ content = single_tag(:script, :src => "/js/#{srcs}.js",
46
+ :type => "text/javascript")
47
+ else
48
+ srcs.split(",").each do |src|
49
+ content << single_tag(:script, :src => "/js/#{src}.js",
50
+ :type => "text/javascript")
51
+ content << "\n"
52
+ end
53
+ end
54
+ content
55
+ end
56
+
57
+ # standard anchor links, like rails' link_to
58
+ # EX : link "google", "http://google.com"
59
+ # => <a href="http://google.com">google</a>
60
+ def link(content,href,options={})
61
+ options.update :href => href
62
+ tag :a, content, options
63
+ end
64
+
65
+ # standard open and close tags
66
+ # EX : tag :h1, "shizam", :title => "shizam"
67
+ # => <h1 title="shizam">shizam</h1>
68
+ def tag(name,content,options={})
69
+ with_opts = "<#{name.to_s} #{options.to_html_attrs}>#{content}</#{name}>"
70
+ no_opts = "<#{name.to_s}>#{content}</#{name}>"
71
+ options.blank? ? no_opts : with_opts
72
+ end
73
+
74
+ # standard single closing tags
75
+ # single_tag :img, :src => "images/google.jpg"
76
+ # => <img src="images/google.jpg" />
77
+ def single_tag(name,options={})
78
+ options ||= options.stringify_keys
79
+ "<#{name.to_s} #{options.to_html_attrs} />"
80
+ end
81
+
82
+ end
83
+
84
+ end
85
+
86
+ class Hash
87
+
88
+ def to_html_attrs
89
+ html_attrs = ""
90
+ self.stringify_keys.each do |key, val|
91
+ html_attrs << "#{key}='#{val}' "
92
+ end
93
+ html_attrs.chop
94
+ end
95
+
96
+ end
@@ -0,0 +1,3 @@
1
+ module <%= klass_name %>
2
+
3
+ end
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+
3
+ describe '<%= klass_name %>' do
4
+
5
+ <%- unless actions.empty? -%>
6
+ <% actions.each do |meth, path| %>
7
+ it 'should <%= meth %> <%= path %>' do
8
+ <%= meth %> '<%= path %>'
9
+ should.be.ok
10
+ end
11
+
12
+ <%- end -%>
13
+ <%- else -%>
14
+ it 'should load the index' do
15
+ get '/'
16
+ should.be.ok
17
+ end
18
+ <%- end -%>
19
+ end
20
+
@@ -0,0 +1,19 @@
1
+ require 'test_helper'
2
+
3
+ describe '<%= klass_name %>' do
4
+
5
+ <%- unless actions.empty? -%>
6
+ <% actions.each do |meth, path| %>
7
+ it 'should <%= meth %> <%= path %>' do
8
+ <%= meth %> '<%= path %>'
9
+ @response.should be_ok
10
+ end
11
+
12
+ <%- end -%>
13
+ <%- else -%>
14
+ it 'should load the index' do
15
+ get '/'
16
+ @response.should be_ok
17
+ end
18
+ <%- end -%>
19
+ end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ class <%= klass_name -%>Test < Test::Unit::TestCase
4
+
5
+ context "<%= klass_name -%>" do
6
+ <%- unless actions.empty? -%>
7
+ <% actions.each do |meth, path| %>
8
+ context "<%= meth %> <%= path %>" do
9
+ setup do
10
+ <%= meth %> '<%= path %>'
11
+ end
12
+
13
+ should "respond" do
14
+ assert @response.body
15
+ end
16
+ end
17
+
18
+ <%- end -%>
19
+ <%- else -%>
20
+ context "getting the index" do
21
+ setup do
22
+ get '/'
23
+ end
24
+
25
+ should "respond" do
26
+ assert @response.body
27
+ end
28
+ end
29
+ <%- end -%>
30
+ end
31
+
32
+ end
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+
3
+ describe '<%= klass_name %>' do
4
+
5
+ <%- unless actions.empty? -%>
6
+ <% actions.each do |meth, path| %>
7
+ it 'should <%= meth %> <%= path %>' do
8
+ <%= meth %> '<%= path %>'
9
+ should.be.ok
10
+ end
11
+
12
+ <%- end -%>
13
+ <%- else -%>
14
+ it 'should load the index' do
15
+ get '/'
16
+ should.be.ok
17
+ end
18
+ <%- end -%>
19
+
20
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ class <%= klass_name -%>Test < Test::Unit::TestCase
4
+
5
+ <%- unless actions.empty? -%>
6
+ <% actions.each do |meth, path| %>
7
+ def test_<%= meth %>_<%= path.to_s.gsub(/[^a-z0-9\_]/, '') %>_should
8
+ <%= meth %> '<%= path %>'
9
+ end
10
+
11
+ <%- end -%>
12
+ <%- else -%>
13
+ def test_my_default
14
+ get '/'
15
+ end
16
+ <%- end -%>
17
+
18
+ end
@@ -0,0 +1,21 @@
1
+ <%- if vendor -%>
2
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'vendor', 'sinatra', 'lib')
3
+ require 'sinatra'
4
+ <%- else -%>
5
+ require 'sinatra'
6
+ <%- end -%>
7
+ <%- case test_framework -%>
8
+ <%- when 'rspec' -%>
9
+ require 'spec'
10
+ require 'sinatra/test/rspec'
11
+ <%- when 'bacon' -%>
12
+ require 'sinatra/test/bacon'
13
+ <%- when 'spec' -%>
14
+ require 'sinatra/test/spec'
15
+ <%- when 'shoulda' -%>
16
+ require 'sinatra/test/unit'
17
+ require 'shoulda'
18
+ <%- when 'unit' -%>
19
+ require 'sinatra/test/unit'
20
+ <%- end -%>
21
+ require File.join(File.dirname(__FILE__), '..', '<%= app_name %>.rb')
@@ -0,0 +1,4 @@
1
+ xml.instruct!
2
+ xml.app do
3
+ xml.data { xml.cdata! "Default sinatra-gen index. Generated at <%= Time.now %>" }
4
+ end
@@ -0,0 +1,2 @@
1
+ <p>Hello!</p>
2
+ <p>Default sinatra-gen index (generated at <%= Time.now %>)</p>
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
7
+
8
+ <title><%= app_name %></title>
9
+
10
+ </head>
11
+
12
+ <body>
13
+ <%%= yield %>
14
+ </body>
15
+ </html>
@@ -0,0 +1,2 @@
1
+ %p Hello!
2
+ %p Default sinatra-gen index (generated at <%= Time.now %>)
@@ -0,0 +1,6 @@
1
+ %html{:xmlns=> "http://www.w3.org/1999/xhtml", 'xml:lang' => "en", :lang => "en"}
2
+ %head
3
+ %meta{'http-equiv' => "Content-Type", 'content' => "text/html; charset=utf-8"}
4
+ %title <%= app_name %>
5
+ %body
6
+ = yield
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'rubigen'
5
+
6
+ if %w(-v --version).include? ARGV.first
7
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'sinatra-gen')
8
+ puts "#{File.basename($0)} #{SinatraGen::VERSION}"
9
+ exit(0)
10
+ end
11
+
12
+ require 'rubigen/scripts/generate'
13
+ source = RubiGen::PathSource.new(:application,
14
+ File.join(File.dirname(__FILE__), "../app_generators"))
15
+ RubiGen::Base.reset_sources
16
+ RubiGen::Base.append_sources source
17
+ RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'sinatra_app')
@@ -0,0 +1,6 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ module SinatraGen
5
+ VERSION = '0.2.2'
6
+ end
@@ -0,0 +1,45 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{sinatra-gen}
5
+ s.version = "0.2.2"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Aaron Quint","Vann Ek"]
9
+ s.date = %q{2009-03-25}
10
+ s.default_executable = %q{sinatra-gen}
11
+ s.description = %q{sinatra-gen generates a common file structure and basic app files for a web app utilizing the sinatra framework. For more information on sinatra, check out http://sinatrarb.com !! NOW WITH SUPPORT FOR SINATRA 0.9 (02/10/09)}
12
+ s.email = ["aaron@quirkey.com","ek.vann@gmail.com"]
13
+ s.executables = ["sinatra-gen"]
14
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc"]
15
+ s.files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "app_generators/sinatra_app/USAGE", "app_generators/sinatra_app/sinatra_app_generator.rb", "app_generators/sinatra_app/templates/Capfile", "app_generators/sinatra_app/templates/Rakefile.erb", "app_generators/sinatra_app/templates/app.rb.erb", "app_generators/sinatra_app/templates/config.ru.erb", "app_generators/sinatra_app/templates/config.yml", "app_generators/sinatra_app/templates/config/deploy.rb.erb", "app_generators/sinatra_app/templates/lib/module.rb.erb",
16
+ "app_generators/sinatra_app/templates/lib/app_helper.rb.erb", "app_generators/sinatra_app/templates/test/test_app_bacon.rb.erb", "app_generators/sinatra_app/templates/test/test_app_rspec.rb.erb", "app_generators/sinatra_app/templates/test/test_app_shoulda.rb.erb", "app_generators/sinatra_app/templates/test/test_app_spec.rb.erb", "app_generators/sinatra_app/templates/test/test_app_unit.rb.erb", "app_generators/sinatra_app/templates/test/test_helper.rb.erb", "app_generators/sinatra_app/templates/views/builder_index.erb", "app_generators/sinatra_app/templates/views/erb_index.erb", "app_generators/sinatra_app/templates/views/erb_layout.erb", "app_generators/sinatra_app/templates/views/haml_index.erb", "app_generators/sinatra_app/templates/views/haml_layout.erb", "bin/sinatra-gen", "lib/sinatra-gen.rb", "sinatra-gen.gemspec", "test/test_generator_helper.rb", "test/test_helper.rb", "test/test_sinatra_app_generator.rb"]
17
+ s.has_rdoc = true
18
+ s.homepage = %q{http://github.com/quirkey/sinatra-gen}
19
+ s.post_install_message = %q{PostInstall.txt}
20
+ s.rdoc_options = ["--main", "README.rdoc"]
21
+ s.require_paths = ["lib"]
22
+ s.rubyforge_project = %q{quirkey}
23
+ s.rubygems_version = %q{1.3.1}
24
+ s.summary = %q{sinatra-gen generates a common file structure and basic app files for a web app utilizing the sinatra framework}
25
+ s.test_files = ["test/test_generator_helper.rb", "test/test_helper.rb", "test/test_sinatra_app_generator.rb"]
26
+
27
+ if s.respond_to? :specification_version then
28
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
29
+ s.specification_version = 2
30
+
31
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
32
+ s.add_runtime_dependency(%q<rubigen>, [">= 1.5.2"])
33
+ s.add_development_dependency(%q<newgem>, [">= 1.2.3"])
34
+ s.add_development_dependency(%q<hoe>, [">= 1.8.0"])
35
+ else
36
+ s.add_dependency(%q<rubigen>, [">= 1.5.2"])
37
+ s.add_dependency(%q<newgem>, [">= 1.2.3"])
38
+ s.add_dependency(%q<hoe>, [">= 1.8.0"])
39
+ end
40
+ else
41
+ s.add_dependency(%q<rubigen>, [">= 1.5.2"])
42
+ s.add_dependency(%q<newgem>, [">= 1.2.3"])
43
+ s.add_dependency(%q<hoe>, [">= 1.8.0"])
44
+ end
45
+ end
@@ -0,0 +1,29 @@
1
+ begin
2
+ require File.dirname(__FILE__) + '/test_helper'
3
+ rescue LoadError
4
+ require 'test/unit'
5
+ end
6
+ require 'fileutils'
7
+
8
+ # Must set before requiring generator libs.
9
+ TMP_ROOT = File.dirname(__FILE__) + "/tmp" unless defined?(TMP_ROOT)
10
+ PROJECT_NAME = "myproject" unless defined?(PROJECT_NAME)
11
+ app_root = File.join(TMP_ROOT, PROJECT_NAME)
12
+ if defined?(APP_ROOT)
13
+ APP_ROOT.replace(app_root)
14
+ else
15
+ APP_ROOT = app_root
16
+ end
17
+ if defined?(RAILS_ROOT)
18
+ RAILS_ROOT.replace(app_root)
19
+ else
20
+ RAILS_ROOT = app_root
21
+ end
22
+
23
+ begin
24
+ require 'rubigen'
25
+ rescue LoadError
26
+ require 'rubygems'
27
+ require 'rubigen'
28
+ end
29
+ require 'rubigen/helpers/generator_test_helper'
@@ -0,0 +1,3 @@
1
+ require 'stringio'
2
+ require 'test/unit'
3
+ require File.dirname(__FILE__) + '/../lib/sinatra-gen'
@@ -0,0 +1,194 @@
1
+ require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
2
+
3
+ class TestSinatraAppGenerator < Test::Unit::TestCase
4
+ include RubiGen::GeneratorTestHelper
5
+
6
+ def setup
7
+ bare_setup
8
+ end
9
+
10
+ def teardown
11
+ bare_teardown
12
+ end
13
+
14
+ def test_generate_app_without_options
15
+ run_generator('sinatra_app', [APP_ROOT], sources)
16
+ assert_basic_paths_and_files
17
+ assert_generated_file 'views/layout.erb'
18
+ assert_generated_file 'views/index.erb'
19
+ assert_generated_file "test/test_#{app_name}.rb" do |test_contents|
20
+ assert_match(/def test/, test_contents)
21
+ end
22
+ end
23
+
24
+ def test_generate_app_with_vendor_option
25
+ run_generator('sinatra_app', [APP_ROOT, '--vendor'], sources)
26
+ assert_basic_paths_and_files
27
+ assert_directory_exists 'vendor/sinatra/lib'
28
+ end
29
+
30
+ def test_generate_app_with_tiny_option
31
+ run_generator('sinatra_app', [APP_ROOT, '--tiny'], sources)
32
+ assert_generated_file 'config.ru'
33
+ assert_generated_file "#{app_name}.rb"
34
+ assert_generated_file 'Rakefile'
35
+ end
36
+
37
+ def test_generate_app_with_init_option
38
+ run_generator('sinatra_app', [APP_ROOT, '-i'], sources)
39
+ assert_basic_paths_and_files
40
+ assert_directory_exists '.git'
41
+ end
42
+
43
+ def test_generate_app_with_cap_option
44
+ run_generator('sinatra_app', [APP_ROOT, '--cap'], sources)
45
+ assert_basic_paths_and_files
46
+ assert_directory_exists 'config'
47
+ assert_generated_file 'Capfile'
48
+ assert_generated_file 'config/deploy.rb' do |deploy_contents|
49
+ assert_match(/set \:application, "#{app_name}"/, deploy_contents)
50
+ end
51
+ end
52
+
53
+ def test_generate_app_with_rspect_test_option
54
+ run_generator('sinatra_app', [APP_ROOT, '--test=rspec'], sources)
55
+ assert_basic_paths_and_files
56
+ assert_generated_file 'test/test_helper.rb' do |helper_contents|
57
+ assert_match(/sinatra\/test\/rspec/, helper_contents)
58
+ end
59
+ assert_generated_file "test/test_#{app_name}.rb" do |test_contents|
60
+ assert_match(/describe/, test_contents)
61
+ end
62
+ end
63
+
64
+ def test_generate_app_with_spec_test_option
65
+ run_generator('sinatra_app', [APP_ROOT, '--test=spec'], sources)
66
+ assert_basic_paths_and_files
67
+ assert_generated_file 'test/test_helper.rb' do |helper_contents|
68
+ assert_match(/sinatra\/test\/spec/, helper_contents)
69
+ end
70
+ assert_generated_file "test/test_#{app_name}.rb" do |test_contents|
71
+ assert_match(/describe/, test_contents)
72
+ end
73
+ end
74
+
75
+ def test_generate_app_with_shoulda_test_option
76
+ run_generator('sinatra_app', [APP_ROOT, '--test=shoulda'], sources)
77
+ assert_basic_paths_and_files
78
+ assert_generated_file 'test/test_helper.rb' do |helper_contents|
79
+ assert_match(/sinatra\/test\/unit/, helper_contents)
80
+ assert_match(/shoulda/, helper_contents)
81
+ end
82
+ assert_generated_file "test/test_#{app_name}.rb" do |test_contents|
83
+ assert_match(/context/, test_contents)
84
+ end
85
+ end
86
+
87
+ def test_generate_app_with_test_unit_option
88
+ run_generator('sinatra_app', [APP_ROOT, '--test=unit'], sources)
89
+ assert_basic_paths_and_files
90
+ assert_generated_file 'test/test_helper.rb' do |helper_contents|
91
+ assert_match(/sinatra\/test\/unit/, helper_contents)
92
+ end
93
+ assert_generated_file "test/test_#{app_name}.rb" do |test_contents|
94
+ assert_match(/def test/, test_contents)
95
+ end
96
+ end
97
+
98
+ def test_generate_app_with_test_bacon_option
99
+ run_generator('sinatra_app', [APP_ROOT, '--test=bacon'], sources)
100
+ assert_basic_paths_and_files
101
+ assert_generated_file 'test/test_helper.rb' do |helper_contents|
102
+ assert_match(/sinatra\/test\/bacon/, helper_contents)
103
+ end
104
+ assert_generated_file "test/test_#{app_name}.rb" do |test_contents|
105
+ assert_match(/describe/, test_contents)
106
+ end
107
+ end
108
+
109
+ def test_generate_app_with_views_haml_option
110
+ run_generator('sinatra_app', [APP_ROOT, '--views=erb'], sources)
111
+ assert_basic_paths_and_files
112
+ assert_generated_file "#{app_name}.rb" do |app_contents|
113
+ assert_match(/erb \:index/, app_contents)
114
+ end
115
+ assert_generated_file 'views/layout.erb'
116
+ assert_generated_file 'views/index.erb'
117
+ end
118
+
119
+ def test_generate_app_with_views_haml_option
120
+ run_generator('sinatra_app', [APP_ROOT, '--views=haml'], sources)
121
+ assert_basic_paths_and_files
122
+ assert_generated_file "#{app_name}.rb" do |app_contents|
123
+ assert_match(/haml \:index/, app_contents)
124
+ end
125
+ assert_generated_file 'views/layout.haml'
126
+ assert_generated_file 'views/index.haml'
127
+ end
128
+
129
+ def test_generate_app_with_views_builder_option
130
+ run_generator('sinatra_app', [APP_ROOT, '--views=builder'], sources)
131
+ assert_basic_paths_and_files
132
+ assert_generated_file "#{app_name}.rb" do |app_contents|
133
+ assert_match(/builder \:index/, app_contents)
134
+ end
135
+ assert_generated_file 'views/index.builder'
136
+ end
137
+
138
+ def test_generate_app_with_scripts_option
139
+ run_generator('sinatra_app', [APP_ROOT, '--scripts'], sources)
140
+ assert_basic_paths_and_files
141
+ assert_directory_exists 'script'
142
+ assert_generated_file 'script/destroy'
143
+ assert_generated_file 'script/generate'
144
+ end
145
+
146
+ def test_generate_app_with_actions_and_no_options
147
+ run_generator('sinatra_app', [APP_ROOT, 'get:/', 'post:/users/:id', 'put:/users/*'], sources)
148
+ assert_basic_paths_and_files
149
+ assert_generated_file "#{app_name}.rb" do |app_contents|
150
+ assert_match(/get '\/' do/, app_contents)
151
+ assert_match(/post '\/users\/\:id' do/, app_contents)
152
+ assert_match(/put '\/users\/\*' do/, app_contents)
153
+ end
154
+ end
155
+
156
+ def test_generate_app_with_actions_and_options
157
+ run_generator('sinatra_app', [APP_ROOT, 'get:/', 'post:/users/:id', '--tiny', 'put:/users/*'], sources)
158
+ assert_generated_file 'config.ru'
159
+ assert_generated_file "#{app_name}.rb"
160
+ assert_generated_file 'Rakefile'
161
+ assert_generated_file "#{app_name}.rb" do |app_contents|
162
+ assert_match(/get '\/' do/, app_contents)
163
+ assert_match(/post '\/users\/\:id' do/, app_contents)
164
+ assert_match(/put '\/users\/\*' do/, app_contents)
165
+ end
166
+ end
167
+
168
+ private
169
+ def assert_basic_paths_and_files
170
+ assert_directory_exists 'lib'
171
+ assert_directory_exists 'test'
172
+ assert_directory_exists 'public'
173
+ assert_directory_exists 'views'
174
+ assert_generated_file 'config.ru'
175
+ assert_generated_file "#{app_name}.rb"
176
+ assert_generated_file 'Rakefile'
177
+ assert_generated_file 'config.yml'
178
+ assert_generated_module "lib/#{app_name}"
179
+ assert_generated_file "lib/app_helper.rb"
180
+ end
181
+
182
+
183
+ def sources
184
+ [RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))]
185
+ end
186
+
187
+ def app_name
188
+ File.basename(APP_ROOT)
189
+ end
190
+
191
+ def generator_path
192
+ "app_generators"
193
+ end
194
+ end
metadata ADDED
@@ -0,0 +1,122 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vanntastic-sinatra-gen
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.2
5
+ platform: ruby
6
+ authors:
7
+ - Aaron Quint
8
+ - Vann Ek
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-03-25 00:00:00 -07:00
14
+ default_executable: sinatra-gen
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rubigen
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 1.5.2
25
+ version:
26
+ - !ruby/object:Gem::Dependency
27
+ name: newgem
28
+ type: :development
29
+ version_requirement:
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 1.2.3
35
+ version:
36
+ - !ruby/object:Gem::Dependency
37
+ name: hoe
38
+ type: :development
39
+ version_requirement:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 1.8.0
45
+ version:
46
+ description: sinatra-gen generates a common file structure and basic app files for a web app utilizing the sinatra framework. For more information on sinatra, check out http://sinatrarb.com !! NOW WITH SUPPORT FOR SINATRA 0.9 (02/10/09)
47
+ email:
48
+ - aaron@quirkey.com
49
+ - ek.vann@gmail.com
50
+ executables:
51
+ - sinatra-gen
52
+ extensions: []
53
+
54
+ extra_rdoc_files:
55
+ - History.txt
56
+ - Manifest.txt
57
+ - PostInstall.txt
58
+ - README.rdoc
59
+ files:
60
+ - History.txt
61
+ - Manifest.txt
62
+ - PostInstall.txt
63
+ - README.rdoc
64
+ - Rakefile
65
+ - app_generators/sinatra_app/USAGE
66
+ - app_generators/sinatra_app/sinatra_app_generator.rb
67
+ - app_generators/sinatra_app/templates/Capfile
68
+ - app_generators/sinatra_app/templates/Rakefile.erb
69
+ - app_generators/sinatra_app/templates/app.rb.erb
70
+ - app_generators/sinatra_app/templates/config.ru.erb
71
+ - app_generators/sinatra_app/templates/config.yml
72
+ - app_generators/sinatra_app/templates/config/deploy.rb.erb
73
+ - app_generators/sinatra_app/templates/lib/module.rb.erb
74
+ - app_generators/sinatra_app/templates/lib/app_helper.rb.erb
75
+ - app_generators/sinatra_app/templates/test/test_app_bacon.rb.erb
76
+ - app_generators/sinatra_app/templates/test/test_app_rspec.rb.erb
77
+ - app_generators/sinatra_app/templates/test/test_app_shoulda.rb.erb
78
+ - app_generators/sinatra_app/templates/test/test_app_spec.rb.erb
79
+ - app_generators/sinatra_app/templates/test/test_app_unit.rb.erb
80
+ - app_generators/sinatra_app/templates/test/test_helper.rb.erb
81
+ - app_generators/sinatra_app/templates/views/builder_index.erb
82
+ - app_generators/sinatra_app/templates/views/erb_index.erb
83
+ - app_generators/sinatra_app/templates/views/erb_layout.erb
84
+ - app_generators/sinatra_app/templates/views/haml_index.erb
85
+ - app_generators/sinatra_app/templates/views/haml_layout.erb
86
+ - bin/sinatra-gen
87
+ - lib/sinatra-gen.rb
88
+ - sinatra-gen.gemspec
89
+ - test/test_generator_helper.rb
90
+ - test/test_helper.rb
91
+ - test/test_sinatra_app_generator.rb
92
+ has_rdoc: true
93
+ homepage: http://github.com/quirkey/sinatra-gen
94
+ post_install_message: PostInstall.txt
95
+ rdoc_options:
96
+ - --main
97
+ - README.rdoc
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: "0"
105
+ version:
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: "0"
111
+ version:
112
+ requirements: []
113
+
114
+ rubyforge_project: quirkey
115
+ rubygems_version: 1.2.0
116
+ signing_key:
117
+ specification_version: 2
118
+ summary: sinatra-gen generates a common file structure and basic app files for a web app utilizing the sinatra framework
119
+ test_files:
120
+ - test/test_generator_helper.rb
121
+ - test/test_helper.rb
122
+ - test/test_sinatra_app_generator.rb