sinatra-gen 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,12 @@
1
+ == 0.4.0 2009-08-13
2
+
3
+ * Unless --tiny is specified generate an app that < Sinatra::Application
4
+ * Added --vegas/--bin option for generating an executable using Vegas
5
+ * Add --middleware option. e.g --middleware rack/flash,Rack::Cache
6
+ * Fix deprecations:
7
+ * Require the view framework as that isn't explicit in sinatra anymore
8
+ * Fix config.ru deprecations
9
+
1
10
  == 0.3.0 2009-04-29
2
11
 
3
12
  * No longer use deprecated Sinatra::Test - depend on Rack::Test and simple helper
@@ -7,11 +7,11 @@ app_generators/sinatra_app/USAGE
7
7
  app_generators/sinatra_app/sinatra_app_generator.rb
8
8
  app_generators/sinatra_app/templates/Capfile
9
9
  app_generators/sinatra_app/templates/Rakefile.erb
10
- app_generators/sinatra_app/templates/app.rb.erb
11
10
  app_generators/sinatra_app/templates/config.ru.erb
11
+ app_generators/sinatra_app/templates/bin/app.erb
12
12
  app_generators/sinatra_app/templates/config.yml
13
13
  app_generators/sinatra_app/templates/config/deploy.rb.erb
14
- app_generators/sinatra_app/templates/lib/module.rb.erb
14
+ app_generators/sinatra_app/templates/lib/app.rb.erb
15
15
  app_generators/sinatra_app/templates/test/test_app_bacon.rb.erb
16
16
  app_generators/sinatra_app/templates/test/test_app_rspec.rb.erb
17
17
  app_generators/sinatra_app/templates/test/test_app_shoulda.rb.erb
@@ -9,7 +9,7 @@ For more information on sinatra, check out http://sinatrarb.com
9
9
 
10
10
  == SYNOPSIS:
11
11
 
12
- sinatra-gen has a bunch of different options (based loosley on merb-gen) to try to not lock the
12
+ sinatra-gen has a bunch of different options (based looseley on merb-gen) to try to not lock the
13
13
  user into any specific frameworks/dev practices.
14
14
 
15
15
  Run:
@@ -20,6 +20,8 @@ e.g.
20
20
 
21
21
  sinatra-gen mysinatrapp --vendor --init --test=shoulda --views=haml get:/ post:/:id
22
22
 
23
+ ! Note: As of version 0.4.0 by default the sinatra app is placed in lib/appname.rb and is a subclass of Sinatra::Application. If you want 'classic' style apps (no class/module) use the --tiny option.
24
+
23
25
  === Actions
24
26
 
25
27
  For even faster app development you specify actions to include in your app when generating.
@@ -27,7 +29,7 @@ Actions are written out as
27
29
 
28
30
  http_method:path
29
31
 
30
- And are seperated by spaces. For example:
32
+ And are separated by spaces. For example:
31
33
 
32
34
  get:/ post:/:id put:/update/*
33
35
 
@@ -44,6 +46,22 @@ Will be added you your app as:
44
46
 
45
47
  It will also generate test skeletons in the test framework of your choosing.
46
48
 
49
+ === Middleware
50
+
51
+ You can specify middleware to include by passing the filename(s) or class name(s), seperated by commas.
52
+
53
+ sinatra-gen myapp --middleware=rack/flash,Rack::Cache
54
+
55
+ Will place both the 'require' and 'use' statements in your app.
56
+
57
+ require 'rack/flash'
58
+ require 'rack/cache'
59
+
60
+ #...
61
+
62
+ use Rack::Flash
63
+ use Rack::Cache
64
+
47
65
  === Options
48
66
 
49
67
  (can also be obtained by running sinatra-gen with no arguments):
@@ -58,6 +76,8 @@ It will also generate test skeletons in the test framework of your choosing.
58
76
  --scripts Install the rubigen scripts (script/generate, script/destroy)
59
77
  --test=test_framework Specify your testing framework (bacon (default)/rspec/spec/shoulda/test)
60
78
  --views=view_framework Specify your view framework (haml (default)/erb/builder)
79
+ --middleware=rack-middleware Specify Rack Middleware to be required and included (comma delimited)
80
+ --vegas, --bin=[bin_name] Create an executable bin using Vegas. Pass an optional bin_name
61
81
  General Options:
62
82
  -h, --help Show this help message and quit.
63
83
  -p, --pretend Run but do not make any changes.
@@ -78,12 +98,15 @@ Also, thanks to Dr. Nic (http://github.com/drnic) for the Rubigen and Newgem lib
78
98
 
79
99
  == REQUIREMENTS:
80
100
 
81
- To use the --vendor option, git must be installed.
101
+ To use the --vendor option, git must be installed.
102
+ To use the --bin/vegas option Vegas is required (sudo gem install vegas).
103
+ To use the --heroku option, a Heroku account and the heroku gem is required (sudo gem install heroku).
104
+
82
105
  To run the app without using the vendor option, the sinatra gem must be installed.
83
106
 
84
107
  == INSTALL:
85
108
 
86
- sudo gem install sintra-gen
109
+ sudo gem install sinatra-gen
87
110
 
88
111
  You can also install directly from github:
89
112
 
data/Rakefile CHANGED
@@ -1,16 +1,20 @@
1
- %w[rubygems rake rake/clean fileutils newgem rubigen].each { |f| require f }
1
+ %w[rubygems rake rake/clean hoe fileutils newgem rubigen].each { |f| require f }
2
2
  require File.dirname(__FILE__) + '/lib/sinatra-gen'
3
3
 
4
4
  # Generate all the Rake tasks
5
5
  # Run 'rake -T' to see list of generated tasks (from gem root directory)
6
- $hoe = Hoe.new('sinatra-gen', SinatraGen::VERSION) do |p|
6
+ $hoe = Hoe.spec('sinatra-gen') do |p|
7
7
  p.developer('Aaron Quint', 'aaron@quirkey.com')
8
8
  p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
9
9
  p.rubyforge_name = 'quirkey'
10
+ p.summary = %q{sinatra-gen generates a common file structure and basic app files for a web app utilizing the sinatra framework}
11
+ p.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}
12
+
13
+ p.version = SinatraGen::VERSION
10
14
  p.extra_deps = [
11
- ['rubigen','>= 1.5.2'],
12
- ['sinatra', '>= 0.9.0'],
13
- ['rack-test', '>= 0.1.0']
15
+ ['rubigen','=1.5.2'],
16
+ ['sinatra', '>= 0.9.4'],
17
+ ['rack-test', '>= 0.4.1']
14
18
  ]
15
19
  p.extra_dev_deps = [
16
20
  ['newgem', ">= #{::Newgem::VERSION}"]
@@ -28,7 +28,9 @@ class SinatraAppGenerator < RubiGen::Base
28
28
  :view_framework,
29
29
  :install_scripts,
30
30
  :cap,
31
- :actions
31
+ :actions,
32
+ :middleware,
33
+ :bin_name
32
34
 
33
35
  def initialize(runtime_args, runtime_options = {})
34
36
  super
@@ -49,7 +51,6 @@ class SinatraAppGenerator < RubiGen::Base
49
51
  end
50
52
 
51
53
  m.template 'config.ru.erb', 'config.ru'
52
- m.template 'app.rb.erb' , "#{app_name}.rb"
53
54
  m.template 'Rakefile.erb' , 'Rakefile'
54
55
 
55
56
  test_dir = (tests_are_specs? ? 'spec' : 'test')
@@ -58,12 +59,19 @@ class SinatraAppGenerator < RubiGen::Base
58
59
  BASEDIRS.each { |path| m.directory path }
59
60
  m.directory test_dir
60
61
  m.file 'config.yml', 'config.yml'
61
- m.template 'lib/module.rb.erb', "lib/#{app_name}.rb"
62
+ m.template 'lib/app.rb.erb', "lib/#{app_name}.rb"
62
63
  m.template 'test/test_helper.rb.erb', "#{test_dir}/#{test_dir}_helper.rb"
63
64
  m.template "test/test_app_#{test_framework}.rb.erb",
64
65
  "#{test_dir}/#{(tests_are_specs? ? "#{app_name}_spec" : "test_#{app_name}")}.rb"
65
66
  m.template "views/#{view_framework}_index.erb", "views/index.#{view_framework}"
66
67
  m.template "views/#{view_framework}_layout.erb", "views/layout.#{view_framework}" unless view_framework == 'builder'
68
+ else
69
+ m.template "lib/app.rb.erb", "#{app_name}.rb"
70
+ end
71
+
72
+ if options[:bin]
73
+ m.directory "bin"
74
+ m.template "bin/app.erb", "bin/#{bin_name}", {:chmod => 0755}
67
75
  end
68
76
 
69
77
  if vendor
@@ -98,7 +106,7 @@ class SinatraAppGenerator < RubiGen::Base
98
106
  <<-EOS
99
107
  Creates the skeleton for a new sinatra app
100
108
 
101
- USAGE: #{spec.name} app_name [options] [paths]
109
+ USAGE: sinatra-gen app_name [options] [paths]
102
110
  EOS
103
111
  end
104
112
 
@@ -116,6 +124,8 @@ class SinatraAppGenerator < RubiGen::Base
116
124
  opts.on("--git /path/to/git", "Specify a different path for 'git'") {|o| options[:git] = o }
117
125
  opts.on("--test=test_framework", String, "Specify your testing framework (bacon (default)/rspec/spec/shoulda/test)") {|o| options[:test_framework] = o }
118
126
  opts.on("--views=view_framework", "Specify your view framework (haml (default)/erb/builder)") {|o| options[:view_framework] = o }
127
+ opts.on("--middleware=rack-middleware", Array, "Specify Rack Middleware to be required and included (comma delimited)") {|o| options[:middleware] = o }
128
+ opts.on("--vegas=[bin_name]", "--bin=[bin_name]", "Create an executable bin using Vegas. Pass an optional bin_name") {|o| options[:bin] = true; options[:bin_name] = o }
119
129
  end
120
130
 
121
131
  def extract_options
@@ -131,12 +141,18 @@ class SinatraAppGenerator < RubiGen::Base
131
141
  self.test_framework = options[:test_framework] || 'bacon'
132
142
  self.view_framework = options[:view_framework] || 'haml'
133
143
  self.install_scripts = options[:scripts] || false
144
+ self.middleware = options[:middleware] ? options[:middleware].reject {|m| m.blank? } : []
145
+ self.bin_name = options[:bin_name] || app_name
134
146
  end
135
147
 
136
148
  def klass_name
137
149
  app_name.classify
138
150
  end
139
151
 
152
+ def app_klass
153
+ tiny ? "Sinatra::Application" : klass_name
154
+ end
155
+
140
156
  def parse_actions(*action_args)
141
157
  @actions = action_args.flatten.collect { |a| a.split(':', 2) }
142
158
  end
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.join(File.dirname(__FILE__), '..', <%- unless tiny -%>'lib', <%- end -%>'<%= app_name %>.rb')
4
+ require 'vegas'
5
+
6
+ Vegas::Runner.new(<%= app_klass %>, '<%= bin_name %>')
@@ -1,8 +1,8 @@
1
1
  # To use with thin
2
2
  # thin start -p PORT -R config.ru
3
3
 
4
- require File.join(File.dirname(__FILE__), '<%= app_name %>.rb')
4
+ require File.join(File.dirname(__FILE__), <%- unless tiny -%>'lib', <%- end -%>'<%= app_name %>.rb')
5
5
 
6
6
  disable :run
7
- set :env, :production
8
- run Sinatra.application
7
+ set :environment, :production
8
+ run <%= app_klass -%>
@@ -0,0 +1,57 @@
1
+ <%- if tiny -%>
2
+ APP_ROOT = File.expand_path(File.dirname(__FILE__))
3
+ <%- else -%>
4
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
5
+ <%- end -%>
6
+
7
+ require 'rubygems'
8
+ <%- if vendor -%>
9
+ $:.unshift File.join(APP_ROOT, 'vendor', 'sinatra', 'lib')
10
+ require 'sinatra'
11
+ <%- else -%>
12
+ require 'sinatra'
13
+ <%- end -%>
14
+ require '<%= view_framework %>'
15
+ <%- middleware.each do |m| -%>
16
+ require '<%= m.to_s.underscore %>'
17
+ <%- end -%>
18
+
19
+ <%- if tiny -%>
20
+ set :root, APP_ROOT
21
+
22
+ <%- unless actions.empty? -%>
23
+ <%- actions.each do |meth, path| -%>
24
+ <%= meth %> '<%= path %>' do
25
+ end
26
+
27
+ <%- end -%>
28
+ <%- else -%>
29
+ get '/' do
30
+ <%= view_framework -%> :index
31
+ end
32
+ <%- end -%>
33
+
34
+ <%- else -%>
35
+ class <%= klass_name -%> < Sinatra::Application
36
+
37
+ set :root, APP_ROOT
38
+ <%- middleware.each do |m| -%>
39
+ use <%= m.to_s.classify %>
40
+ <%- end -%>
41
+
42
+ <%- unless actions.empty? -%>
43
+ <%- actions.each do |meth, path| -%>
44
+ <%= meth %> '<%= path %>' do
45
+ <%= view_framework -%> :<%= path %>
46
+ end
47
+
48
+ <%- end -%>
49
+ <%- else -%>
50
+ get '/' do
51
+ <%= view_framework -%> :index
52
+ end
53
+ <%- end -%>
54
+
55
+ end
56
+ <%- end -%>
57
+
@@ -4,14 +4,14 @@ $:.unshift File.join(File.dirname(__FILE__), '..', 'vendor', 'sinatra', 'lib')
4
4
  require 'sinatra'
5
5
  require 'rack/test'
6
6
 
7
- Sinatra::Default.set(
7
+ <%= app_klass -%>.set(
8
8
  :environment => :test,
9
9
  :run => false,
10
10
  :raise_errors => true,
11
11
  :logging => false
12
12
  )
13
13
 
14
- require File.join(File.dirname(__FILE__), '..', '<%= app_name %>.rb')
14
+ require File.join(File.dirname(__FILE__), '..', <%- unless tiny -%>'lib', <%- end -%>'<%= app_name %>.rb')
15
15
 
16
16
  module TestHelper
17
17
 
@@ -2,5 +2,5 @@ $:.unshift(File.dirname(__FILE__)) unless
2
2
  $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
3
 
4
4
  module SinatraGen
5
- VERSION = '0.3.0'
5
+ VERSION = '0.4.0'
6
6
  end
@@ -2,49 +2,46 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{sinatra-gen}
5
- s.version = "0.3.0"
5
+ s.version = "0.4.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Aaron Quint"]
9
- s.date = %q{2009-04-29}
9
+ s.date = %q{2009-08-13}
10
10
  s.default_executable = %q{sinatra-gen}
11
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}
12
12
  s.email = ["aaron@quirkey.com"]
13
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", "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"]
16
- s.has_rdoc = true
17
- s.homepage = %q{http://github.com/quirkey/sinatra-gen}
18
- s.post_install_message = %q{PostInstall.txt}
19
- s.rdoc_options = ["--main", "README.rdoc"]
14
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "PostInstall.txt"]
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/config.ru.erb", "app_generators/sinatra_app/templates/bin/app.erb", "app_generators/sinatra_app/templates/config.yml", "app_generators/sinatra_app/templates/config/deploy.rb.erb", "app_generators/sinatra_app/templates/lib/app.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"]
16
+ s.rdoc_options = ["--main", "README.txt"]
20
17
  s.require_paths = ["lib"]
21
18
  s.rubyforge_project = %q{quirkey}
22
- s.rubygems_version = %q{1.3.1}
19
+ s.rubygems_version = %q{1.3.5}
23
20
  s.summary = %q{sinatra-gen generates a common file structure and basic app files for a web app utilizing the sinatra framework}
24
21
  s.test_files = ["test/test_generator_helper.rb", "test/test_helper.rb", "test/test_sinatra_app_generator.rb"]
25
22
 
26
23
  if s.respond_to? :specification_version then
27
24
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
28
- s.specification_version = 2
25
+ s.specification_version = 3
29
26
 
30
27
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
31
- s.add_runtime_dependency(%q<rubigen>, [">= 1.5.2"])
32
- s.add_runtime_dependency(%q<sinatra>, [">= 0.9.0"])
33
- s.add_runtime_dependency(%q<rack-test>, [">= 0.1.0"])
34
- s.add_development_dependency(%q<newgem>, [">= 1.2.3"])
35
- s.add_development_dependency(%q<hoe>, [">= 1.8.0"])
28
+ s.add_runtime_dependency(%q<rubigen>, ["= 1.5.2"])
29
+ s.add_runtime_dependency(%q<sinatra>, [">= 0.9.4"])
30
+ s.add_runtime_dependency(%q<rack-test>, [">= 0.4.1"])
31
+ s.add_development_dependency(%q<newgem>, [">= 1.5.2"])
32
+ s.add_development_dependency(%q<hoe>, [">= 2.3.3"])
36
33
  else
37
- s.add_dependency(%q<rubigen>, [">= 1.5.2"])
38
- s.add_dependency(%q<sinatra>, [">= 0.9.0"])
39
- s.add_dependency(%q<rack-test>, [">= 0.1.0"])
40
- s.add_dependency(%q<newgem>, [">= 1.2.3"])
41
- s.add_dependency(%q<hoe>, [">= 1.8.0"])
34
+ s.add_dependency(%q<rubigen>, ["= 1.5.2"])
35
+ s.add_dependency(%q<sinatra>, [">= 0.9.4"])
36
+ s.add_dependency(%q<rack-test>, [">= 0.4.1"])
37
+ s.add_dependency(%q<newgem>, [">= 1.5.2"])
38
+ s.add_dependency(%q<hoe>, [">= 2.3.3"])
42
39
  end
43
40
  else
44
- s.add_dependency(%q<rubigen>, [">= 1.5.2"])
45
- s.add_dependency(%q<sinatra>, [">= 0.9.0"])
46
- s.add_dependency(%q<rack-test>, [">= 0.1.0"])
47
- s.add_dependency(%q<newgem>, [">= 1.2.3"])
48
- s.add_dependency(%q<hoe>, [">= 1.8.0"])
41
+ s.add_dependency(%q<rubigen>, ["= 1.5.2"])
42
+ s.add_dependency(%q<sinatra>, [">= 0.9.4"])
43
+ s.add_dependency(%q<rack-test>, [">= 0.4.1"])
44
+ s.add_dependency(%q<newgem>, [">= 1.5.2"])
45
+ s.add_dependency(%q<hoe>, [">= 2.3.3"])
49
46
  end
50
47
  end
@@ -59,7 +59,7 @@ class TestSinatraAppGenerator < Test::Unit::TestCase
59
59
  end
60
60
  end
61
61
 
62
- def test_generate_app_with_rspect_test_option
62
+ def test_generate_app_with_rspec_test_option
63
63
  run_generator('sinatra_app', [APP_ROOT, '--test=rspec'], sources)
64
64
  assert_basic_paths_and_files('spec')
65
65
  assert_generated_file 'spec/spec_helper.rb' do |helper_contents|
@@ -115,10 +115,10 @@ class TestSinatraAppGenerator < Test::Unit::TestCase
115
115
  end
116
116
  end
117
117
 
118
- def test_generate_app_with_views_haml_option
118
+ def test_generate_app_with_views_erb_option
119
119
  run_generator('sinatra_app', [APP_ROOT, '--views=erb'], sources)
120
120
  assert_basic_paths_and_files('spec')
121
- assert_generated_file "#{app_name}.rb" do |app_contents|
121
+ assert_generated_file "lib/#{app_name}.rb" do |app_contents|
122
122
  assert_match(/erb \:index/, app_contents)
123
123
  end
124
124
  assert_generated_file 'views/layout.erb'
@@ -128,7 +128,7 @@ class TestSinatraAppGenerator < Test::Unit::TestCase
128
128
  def test_generate_app_with_views_haml_option
129
129
  run_generator('sinatra_app', [APP_ROOT, '--views=haml'], sources)
130
130
  assert_basic_paths_and_files('spec')
131
- assert_generated_file "#{app_name}.rb" do |app_contents|
131
+ assert_generated_file "lib/#{app_name}.rb" do |app_contents|
132
132
  assert_match(/haml \:index/, app_contents)
133
133
  end
134
134
  assert_generated_file 'views/layout.haml'
@@ -138,7 +138,7 @@ class TestSinatraAppGenerator < Test::Unit::TestCase
138
138
  def test_generate_app_with_views_builder_option
139
139
  run_generator('sinatra_app', [APP_ROOT, '--views=builder'], sources)
140
140
  assert_basic_paths_and_files('spec')
141
- assert_generated_file "#{app_name}.rb" do |app_contents|
141
+ assert_generated_file "lib/#{app_name}.rb" do |app_contents|
142
142
  assert_match(/builder \:index/, app_contents)
143
143
  end
144
144
  assert_generated_file 'views/index.builder'
@@ -155,7 +155,7 @@ class TestSinatraAppGenerator < Test::Unit::TestCase
155
155
  def test_generate_app_with_actions_and_no_options
156
156
  run_generator('sinatra_app', [APP_ROOT, 'get:/', 'post:/users/:id', 'put:/users/*'], sources)
157
157
  assert_basic_paths_and_files('spec')
158
- assert_generated_file "#{app_name}.rb" do |app_contents|
158
+ assert_generated_file "lib/#{app_name}.rb" do |app_contents|
159
159
  assert_match(/get '\/' do/, app_contents)
160
160
  assert_match(/post '\/users\/\:id' do/, app_contents)
161
161
  assert_match(/put '\/users\/\*' do/, app_contents)
@@ -165,7 +165,6 @@ class TestSinatraAppGenerator < Test::Unit::TestCase
165
165
  def test_generate_app_with_actions_and_options
166
166
  run_generator('sinatra_app', [APP_ROOT, 'get:/', 'post:/users/:id', '--tiny', 'put:/users/*'], sources)
167
167
  assert_generated_file 'config.ru'
168
- assert_generated_file "#{app_name}.rb"
169
168
  assert_generated_file 'Rakefile'
170
169
  assert_generated_file "#{app_name}.rb" do |app_contents|
171
170
  assert_match(/get '\/' do/, app_contents)
@@ -174,6 +173,34 @@ class TestSinatraAppGenerator < Test::Unit::TestCase
174
173
  end
175
174
  end
176
175
 
176
+ def test_generate_app_with_middleware
177
+ run_generator('sinatra_app', [APP_ROOT, "--middleware", "rack/flash,Rack::Cache"], sources)
178
+ assert_generated_file 'config.ru'
179
+ assert_generated_file 'Rakefile'
180
+ assert_generated_file "lib/#{app_name}.rb" do |app_contents|
181
+ assert_match(/require \'rack\/flash\'/, app_contents)
182
+ assert_match(/require \'rack\/cache\'/, app_contents)
183
+ assert_match(/use Rack::Flash/, app_contents)
184
+ assert_match(/use Rack::Cache/, app_contents)
185
+ end
186
+ end
187
+
188
+ def test_generate_app_with_vegas_and_default_bin
189
+ run_generator('sinatra_app', [APP_ROOT, '--vegas'], sources)
190
+ assert_basic_paths_and_files('spec')
191
+ assert_generated_file "bin/#{app_name}" do |app_contents|
192
+ assert_match("Vegas::Runner.new(#{app_name.classify}, '#{app_name}')", app_contents)
193
+ end
194
+ end
195
+
196
+ def test_generate_app_with_vegas_and_different_bin_name
197
+ run_generator('sinatra_app', [APP_ROOT, '--vegas=other_bin'], sources)
198
+ assert_basic_paths_and_files('spec')
199
+ assert_generated_file "bin/other_bin" do |app_contents|
200
+ assert_match("Vegas::Runner.new(#{app_name.classify}, 'other_bin')", app_contents)
201
+ end
202
+ end
203
+
177
204
  private
178
205
  def assert_basic_paths_and_files(spec_or_test = 'spec')
179
206
  assert_directory_exists 'lib'
@@ -181,10 +208,9 @@ class TestSinatraAppGenerator < Test::Unit::TestCase
181
208
  assert_directory_exists 'public'
182
209
  assert_directory_exists 'views'
183
210
  assert_generated_file 'config.ru'
184
- assert_generated_file "#{app_name}.rb"
185
211
  assert_generated_file 'Rakefile'
186
212
  assert_generated_file 'config.yml'
187
- assert_generated_module "lib/#{app_name}"
213
+ assert_generated_class "lib/#{app_name}"
188
214
  end
189
215
 
190
216
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-gen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Quint
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-29 00:00:00 -04:00
12
+ date: 2009-08-13 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -18,7 +18,7 @@ dependencies:
18
18
  version_requirement:
19
19
  version_requirements: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - ">="
21
+ - - "="
22
22
  - !ruby/object:Gem::Version
23
23
  version: 1.5.2
24
24
  version:
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9.0
33
+ version: 0.9.4
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: rack-test
@@ -40,7 +40,7 @@ dependencies:
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: 0.1.0
43
+ version: 0.4.1
44
44
  version:
45
45
  - !ruby/object:Gem::Dependency
46
46
  name: newgem
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 1.2.3
53
+ version: 1.5.2
54
54
  version:
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: hoe
@@ -60,7 +60,7 @@ dependencies:
60
60
  requirements:
61
61
  - - ">="
62
62
  - !ruby/object:Gem::Version
63
- version: 1.8.0
63
+ version: 2.3.3
64
64
  version:
65
65
  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
66
66
  email:
@@ -73,7 +73,6 @@ extra_rdoc_files:
73
73
  - History.txt
74
74
  - Manifest.txt
75
75
  - PostInstall.txt
76
- - README.rdoc
77
76
  files:
78
77
  - History.txt
79
78
  - Manifest.txt
@@ -84,11 +83,11 @@ files:
84
83
  - app_generators/sinatra_app/sinatra_app_generator.rb
85
84
  - app_generators/sinatra_app/templates/Capfile
86
85
  - app_generators/sinatra_app/templates/Rakefile.erb
87
- - app_generators/sinatra_app/templates/app.rb.erb
88
86
  - app_generators/sinatra_app/templates/config.ru.erb
87
+ - app_generators/sinatra_app/templates/bin/app.erb
89
88
  - app_generators/sinatra_app/templates/config.yml
90
89
  - app_generators/sinatra_app/templates/config/deploy.rb.erb
91
- - app_generators/sinatra_app/templates/lib/module.rb.erb
90
+ - app_generators/sinatra_app/templates/lib/app.rb.erb
92
91
  - app_generators/sinatra_app/templates/test/test_app_bacon.rb.erb
93
92
  - app_generators/sinatra_app/templates/test/test_app_rspec.rb.erb
94
93
  - app_generators/sinatra_app/templates/test/test_app_shoulda.rb.erb
@@ -104,11 +103,13 @@ files:
104
103
  - lib/sinatra-gen.rb
105
104
  - sinatra-gen.gemspec
106
105
  has_rdoc: true
107
- homepage: http://github.com/quirkey/sinatra-gen
106
+ homepage:
107
+ licenses: []
108
+
108
109
  post_install_message:
109
110
  rdoc_options:
110
111
  - --main
111
- - README.rdoc
112
+ - README.txt
112
113
  require_paths:
113
114
  - lib
114
115
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -126,9 +127,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
127
  requirements: []
127
128
 
128
129
  rubyforge_project: quirkey
129
- rubygems_version: 1.3.1
130
+ rubygems_version: 1.3.5
130
131
  signing_key:
131
- specification_version: 2
132
+ specification_version: 3
132
133
  summary: sinatra-gen generates a common file structure and basic app files for a web app utilizing the sinatra framework
133
134
  test_files:
134
135
  - test/test_generator_helper.rb
@@ -1,25 +0,0 @@
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
- <%- unless tiny -%>
9
- require File.join(File.dirname(__FILE__), 'lib', '<%= app_name %>')
10
-
11
- set :public, 'public'
12
- set :views, 'views'
13
- <%- end -%>
14
-
15
- <%- unless actions.empty? -%>
16
- <%- actions.each do |meth, path| -%>
17
- <%= meth %> '<%= path %>' do
18
- end
19
-
20
- <%- end -%>
21
- <%- else -%>
22
- get '/' do
23
- <%= view_framework -%> :index
24
- end
25
- <%- end -%>
@@ -1,3 +0,0 @@
1
- module <%= klass_name %>
2
-
3
- end