openhood-sinatra_app_gen 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ require "rubygems"
2
+ require "rake"
3
+
4
+ begin
5
+ require "jeweler"
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "sinatra_app_gen"
8
+ gem.summary = "Creates a new Sinatra / Sequel / rspec / cucumber app."
9
+ gem.description = "Our default app template"
10
+ gem.email = "team@openhood.com"
11
+ gem.homepage = "http://github.com/openhood/sinatra_app_gen"
12
+ gem.authors = ["Jonathan Tron", "Joseph Halter"]
13
+ gem.add_dependency "rspec", "~> 1.2.6"
14
+ gem.add_dependency "cucumber", "~> 0.3.97"
15
+ gem.add_dependency "sequel", ">= 3.2.0"
16
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
+ end
18
+ rescue LoadError
19
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
20
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :patch: 1
3
+ :major: 0
4
+ :minor: 0
data/bin/sinatra_app ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "rubygems"
4
+ require "rubigen"
5
+ require "digest/sha1"
6
+
7
+ if %w(-v --version).include? ARGV.first
8
+ require File.dirname(__FILE__) + "/../lib/newgem"
9
+ puts "#{File.basename($0)} #{Newgem::VERSION}"
10
+ exit(0)
11
+ end
12
+
13
+ require "rubigen/scripts/generate"
14
+
15
+ require "pp"
16
+ RubiGen::Base.use_application_sources! :rubygems
17
+ RubiGen::Base.prepend_sources(*[
18
+ RubiGen::PathSource.new(:app, File.join(File.dirname(__FILE__), "..", "lib/generators"))
19
+ ])
20
+
21
+ RubiGen::Scripts::Generate.new.run(ARGV, :generator => "sinatra_app", :backtrace => false)
@@ -0,0 +1,63 @@
1
+ class SinatraAppGenerator < RubiGen::Base
2
+ DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
3
+ Config::CONFIG['ruby_install_name'])
4
+
5
+ attr_reader :name
6
+
7
+ def initialize(runtime_args, runtime_options = {})
8
+ super
9
+ usage if args.empty?
10
+ @destination_root = File.expand_path(args.shift)
11
+ @name = base_name
12
+ end
13
+
14
+ def template(m, filename)
15
+ m.template "#{filename}.erb", filename
16
+ end
17
+
18
+ def manifest
19
+ record do |m|
20
+ # Ensure appropriate folder(s) exists
21
+ m.directory ''
22
+ BASEDIRS.each { |path| m.directory path }
23
+
24
+ # root
25
+ template m, "app.rb"
26
+ template m, "config.ru"
27
+ template m, "geminstaller.yml"
28
+ template m, "Rakefile"
29
+
30
+ # cucumber
31
+ m.directory "features/support"
32
+ m.directory "features/step_definitions"
33
+ template m, "features/support/env.rb"
34
+ template m, "features/support/paths.rb"
35
+ template m, "features/step_definitions/webrat_steps.rb"
36
+
37
+ # rspec
38
+ m.directory "spec"
39
+ template m, "spec/spec_helper.rb"
40
+
41
+ # lib
42
+ m.directory "lib"
43
+ template m, "lib/rack_fix.rb"
44
+ end
45
+ end
46
+
47
+ protected
48
+ def banner
49
+ <<-EOS
50
+ Creates a new Sinatra / Sequel / rspec / cucumber app.
51
+
52
+ USAGE: #{spec.name} module_name
53
+
54
+ EOS
55
+ end
56
+
57
+ # Installation skeleton. Intermediate directories are automatically
58
+ # created so don't sweat their absence here.
59
+ BASEDIRS = %w(
60
+ lib
61
+ spec
62
+ )
63
+ end
@@ -0,0 +1,6 @@
1
+ require "sinatra_rake_tasks"
2
+ OpenHood::Rake::SpecTask.new
3
+ OpenHood::Rake::CucumberTask.new
4
+ OpenHood::Rake::SequelTask.new
5
+ OpenHood::Rake::CITask.new
6
+ OpenHood::Rake::ConsoleTask.new
@@ -0,0 +1,75 @@
1
+ require "rubygems"
2
+ require "openssl" # let this here or Sequel causes Thin to crash later on...
3
+ require "yaml"
4
+ require "yajl"
5
+ require "logger"
6
+ require "haml"
7
+ require "sequel"
8
+ require "sequel/extensions/blank"
9
+ require "sinatra/base"
10
+ require "sinatra/async"
11
+ require "sinatra/respond_to"
12
+ require "rack-flash"
13
+ require "string_cleaner"
14
+ require "lib/rack_fix" # until rack escape UTF-8 as expected
15
+
16
+ module <%= name.camelize %>
17
+ class App < Sinatra::Base
18
+
19
+ def self.base_path
20
+ File.dirname(__FILE__)
21
+ end
22
+
23
+ # load environment config
24
+ def self.config
25
+ @@config ||= begin
26
+ filename = File.join(File.dirname(__FILE__), "config", "#{environment}.yml")
27
+ File.exists?(filename) ? YAML.load_file(filename) : {:db => {:uri => "sqlite:/"}}
28
+ end
29
+ end
30
+
31
+ configure do
32
+ set :static, true
33
+ set :public, File.join(base_path, "public")
34
+ set :views, File.join(base_path, "views")
35
+ enable :logging
36
+ enable :sessions
37
+
38
+ # setup logger and connect to db
39
+ FileUtils.mkdir_p File.join(base_path, "log")
40
+ logger = Logger.new(File.join(base_path, "log", "#{environment}.log"))
41
+ logger.level = production? ? Logger::ERROR : Logger::DEBUG
42
+ Sequel.connect(config[:db][:uri], :loggers => [logger])
43
+
44
+ # load models
45
+ Dir.glob(File.join(base_path, "models", "*.rb")).each do |m|
46
+ require m
47
+ end
48
+
49
+ # load helpers
50
+ Dir.glob(File.join(base_path, "helpers", "*.rb")).each do |h|
51
+ require h
52
+ end
53
+ helpers do
54
+ alias_method :h, :escape_html
55
+ def config
56
+ <%= name.camelize %>::App.config
57
+ end
58
+ end
59
+
60
+ use Rack::Session::Cookie
61
+ use Rack::Flash
62
+ end
63
+
64
+ # load fake controllers
65
+ Dir.glob(File.join(base_path, "controllers", "*.rb")).each do |c|
66
+ require c
67
+ end
68
+
69
+ end
70
+ end
71
+
72
+ # define default port if launched directly via "ruby app.rb"
73
+ if $0 == __FILE__
74
+ <%= name.camelize %>::App.run! :host => "localhost", :port => 4567
75
+ end
@@ -0,0 +1,11 @@
1
+ require "rubygems"
2
+ require "app"
3
+
4
+ # log for passenger
5
+ FileUtils.mkdir_p "log" unless File.exists?("log")
6
+ log = File.new("log/sinatra.log", "a+")
7
+ $stdout.reopen(log)
8
+ $stderr.reopen(log)
9
+
10
+ # run the server
11
+ run <%= name.camelize %>::App
@@ -0,0 +1,156 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
2
+
3
+ Given /^I am on (.+)$/ do |page_name|
4
+ visit path_to(page_name)
5
+ end
6
+
7
+ When /^I visit "([^\"]+)"$/ do |page_name|
8
+ visit path_to(page_name)
9
+ end
10
+
11
+ When /^I go to (.+)$/ do |page_name|
12
+ visit path_to(page_name)
13
+ end
14
+
15
+ When /^I press "([^\"]*)"$/ do |button|
16
+ click_button(button)
17
+ end
18
+
19
+ When /^I follow "([^\"]*)"$/ do |link|
20
+ click_link(link)
21
+ end
22
+
23
+ When /^I submit form "([^\"]*)"$/ do |form|
24
+ submit_form(form)
25
+ end
26
+
27
+ When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value|
28
+ fill_in(field, :with => value)
29
+ end
30
+
31
+ When /^I select "([^\"]*)" from "([^\"]*)"$/ do |value, field|
32
+ select(value, :from => field)
33
+ end
34
+
35
+ # Use this step in conjunction with Rail's datetime_select helper. For example:
36
+ # When I select "December 25, 2008 10:00" as the date and time
37
+ When /^I select "([^\"]*)" as the date and time$/ do |time|
38
+ select_datetime(time)
39
+ end
40
+
41
+ # Use this step when using multiple datetime_select helpers on a page or
42
+ # you want to specify which datetime to select. Given the following view:
43
+ # <%%= f.label :preferred %><br />
44
+ # <%%= f.datetime_select :preferred %>
45
+ # <%%= f.label :alternative %><br />
46
+ # <%%= f.datetime_select :alternative %>
47
+ # The following steps would fill out the form:
48
+ # When I select "November 23, 2004 11:20" as the "Preferred" data and time
49
+ # And I select "November 25, 2004 10:30" as the "Alternative" data and time
50
+ When /^I select "([^\"]*)" as the "([^\"]*)" date and time$/ do |datetime, datetime_label|
51
+ select_datetime(datetime, :from => datetime_label)
52
+ end
53
+
54
+ # Use this step in conjuction with Rail's time_select helper. For example:
55
+ # When I select "2:20PM" as the time
56
+ # Note: Rail's default time helper provides 24-hour time-- not 12 hour time. Webrat
57
+ # will convert the 2:20PM to 14:20 and then select it.
58
+ When /^I select "([^\"]*)" as the time$/ do |time|
59
+ select_time(time)
60
+ end
61
+
62
+ # Use this step when using multiple time_select helpers on a page or you want to
63
+ # specify the name of the time on the form. For example:
64
+ # When I select "7:30AM" as the "Gym" time
65
+ When /^I select "([^\"]*)" as the "([^\"]*)" time$/ do |time, time_label|
66
+ select_time(time, :from => time_label)
67
+ end
68
+
69
+ # Use this step in conjuction with Rail's date_select helper. For example:
70
+ # When I select "February 20, 1981" as the date
71
+ When /^I select "([^\"]*)" as the date$/ do |date|
72
+ select_date(date)
73
+ end
74
+
75
+ # Use this step when using multiple date_select helpers on one page or
76
+ # you want to specify the name of the date on the form. For example:
77
+ # When I select "April 26, 1982" as the "Date of Birth" date
78
+ When /^I select "([^\"]*)" as the "([^\"]*)" date$/ do |date, date_label|
79
+ select_date(date, :from => date_label)
80
+ end
81
+
82
+ When /^I check "([^\"]*)"$/ do |field|
83
+ check(field)
84
+ end
85
+
86
+ When /^I uncheck "([^\"]*)"$/ do |field|
87
+ uncheck(field)
88
+ end
89
+
90
+ When /^I choose "([^\"]*)"$/ do |field|
91
+ choose(field)
92
+ end
93
+
94
+ When /^I attach the file at "([^\"]*)" to "([^\"]*)"$/ do |filename, field|
95
+ path = File.join(Rails.root, "features", "fixtures", filename)
96
+ attach_file(field, path)
97
+ end
98
+
99
+ Then /^I should see "([^\"]*)"$/ do |text|
100
+ response.body.should =~ /#{Regexp.escape(text)}/m
101
+ end
102
+
103
+ Then /^I should not see "([^\"]*)"$/ do |text|
104
+ response.body.should_not =~ /#{Regexp.escape(text)}/m
105
+ end
106
+
107
+ Then /^the "([^\"]*)" checkbox should be checked$/ do |label|
108
+ field_labeled(label).should be_checked
109
+ end
110
+
111
+ Then /^the "([^\"]*)" checkbox should not be checked$/ do |label|
112
+ field_labeled(label).should_not be_checked
113
+ end
114
+
115
+ Then /^the "([^\"]*)" item from "([^\"]*)" should be selected$/ do |item, label|
116
+ field_locate(label).should have_tag("option[selected]", item)
117
+ end
118
+
119
+ Then /^the "([^\"]*)" field should contain "([^\"]*)"$/ do |field, value|
120
+ field_labeled(field).value.should =~ /#{value}/
121
+ end
122
+
123
+ Then /^the "([^\"]*)" field should not contain "([^\"]*)"$/ do |field, value|
124
+ field_labeled(field).value.should_not =~ /#{value}/
125
+ end
126
+
127
+ Then /^I should see a link to (.+)$/ do |page|
128
+ response.should have_tag("a[href=?]", path_to(page))
129
+ end
130
+
131
+ Then /^I should see a form with (delete|post|put|get) method to (.+)$/ do |method, page|
132
+ if ["delete", "put", "post"].include?(method)
133
+ form_tag = "form[method=post][action=?]"
134
+ else
135
+ form_tag = "form[method=get][action=?]"
136
+ end
137
+
138
+ response.body.should have_tag(form_tag, path_to(page)) do
139
+ if ["delete", "put"].include?(method)
140
+ with_tag("input[type=hidden][name=_method][value=?]", method)
141
+ else
142
+ without_tag("input[type=hidden][name=_method][value=?]", "delete")
143
+ without_tag("input[type=hidden][name=_method][value=?]", "put")
144
+ end
145
+ end
146
+ end
147
+
148
+ Then /^I should see a select with :$/ do |select_table|
149
+ select_table.hashes.each do |hash|
150
+ response.should have_tag("option", hash["display"])
151
+ end
152
+ end
153
+
154
+ Then /^I should be on (.+)$/ do |page_name|
155
+ URI.parse(current_url).path.should == path_to(page_name)
156
+ end
@@ -0,0 +1,56 @@
1
+ ENV["RACK_ENV"] = "test"
2
+
3
+ gem "rspec", "~> 1.2.0"
4
+ gem "rack-test", ">= 0.4.0"
5
+ gem "webrat", ">= 0.5.0"
6
+
7
+ # Load app
8
+ app_file = File.join(File.dirname(__FILE__), *%w[.. .. app.rb])
9
+ require app_file
10
+
11
+ require "spec/expectations"
12
+ require "rack/test"
13
+ require "webrat"
14
+ require "sequel/extensions/migration"
15
+
16
+ # Webrat setup
17
+ Webrat.configure do |config|
18
+ config.mode = :rack
19
+ end
20
+
21
+ # Set the Sinatra environment
22
+ <%= name.camelize %>::App.configure do |c|
23
+ c.set :environment, :test
24
+ c.disable :run
25
+ c.enable :raise_errors
26
+ c.disable :logging
27
+ end
28
+
29
+ class <%= name.camelize %>World
30
+ include Rack::Test::Methods
31
+ include Webrat::Methods
32
+ include Webrat::Matchers
33
+
34
+ Webrat::Methods.delegate_to_session :response
35
+
36
+ def app
37
+ <%= name.camelize %>::App
38
+ end
39
+ end
40
+
41
+ # Cucumber world setup
42
+ World { <%= name.camelize %>World.new }
43
+
44
+ Before do
45
+ Sequel::Model.db.tables.each do |table_name|
46
+ Sequel::Model.db.drop_table table_name
47
+ end
48
+ dirname = File.join(File.dirname(__FILE__), "..", "..", "migrations")
49
+ Sequel::Migrator.apply(Sequel::Model.db, dirname) if File.directory?(dirname)
50
+ end
51
+
52
+ After do
53
+ Sequel::Model.db.tables.each do |table_name|
54
+ Sequel::Model.db["TRUNCATE #{table_name}"]
55
+ end
56
+ end
@@ -0,0 +1,16 @@
1
+ module NavigationHelpers
2
+ def path_to(page_name)
3
+ case page_name
4
+ when /the home page/i
5
+ "/"
6
+ else
7
+ if page_name.include? "/"
8
+ page_name # page_name is already a path
9
+ else
10
+ raise "Can't find mapping from \"#{page_name}\" to a path."
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ World(NavigationHelpers)
@@ -0,0 +1,26 @@
1
+ defaults:
2
+ install_options: --no-ri --no-rdoc
3
+ gems:
4
+ - name: thin
5
+ - name: sinatra
6
+ version: ">= 0.9.4"
7
+ - name: haml
8
+ version: ">= 2.2.2"
9
+ - name: yajl-ruby
10
+ - name: raggi-async_sinatra
11
+ - name: kamk-pg
12
+ - name: sequel
13
+ - name: cucumber
14
+ verison: ">= 0.3.98"
15
+ - name: rack-test
16
+ version: ">= 0.4.1"
17
+ - name: webrat
18
+ version: ">= 0.5.0"
19
+ - name: rspec
20
+ - name: openhood-rspec_sequel_matchers
21
+ - name: nakajima-rack-flash
22
+ - name: test-unit
23
+ version: "~> 1.2.3"
24
+ - name: JosephHalter-string_cleaner
25
+ - name: openhood-sinatra_rake_tasks
26
+ - name: cehoffman-sinatra-respond_to
@@ -0,0 +1,17 @@
1
+ # Override escape to use bytesize for multibyte char compatibility
2
+ # Use the unicode modifier when matching a UTF-8 String on Ruby >= 1.9
3
+ module Rack
4
+ module Utils
5
+ def escape(s)
6
+ regexp = case
7
+ when s.respond_to?(:encoding) && s.encoding === Encoding.find('UTF-8')
8
+ /([^ a-zA-Z0-9_.-]+)/u
9
+ else
10
+ /([^ a-zA-Z0-9_.-]+)/n
11
+ end
12
+ s.to_s.gsub(regexp) {
13
+ '%'+$1.unpack('H2'*bytesize($1)).join('%').upcase
14
+ }.tr(' ', '+')
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,35 @@
1
+ ENV["RACK_ENV"] = "test"
2
+
3
+ # Load the Sinatra app
4
+ require File.join(File.dirname(__FILE__), "..", "app")
5
+
6
+ # Load the testing libraries
7
+ require "spec"
8
+ require "sequel/extensions/migration"
9
+ require "rspec_sequel_matchers"
10
+
11
+ # Set the Sinatra environment
12
+ <%= name.camelize %>::App.configure do |c|
13
+ c.set :environment, :test
14
+ c.disable :run
15
+ c.enable :raise_errors
16
+ c.disable :logging
17
+ end
18
+
19
+ Spec::Runner.configure do |config|
20
+ config.include(RspecSequel::Matchers)
21
+
22
+ config.before(:suite) do
23
+ Sequel::Model.db.tables.each do |table_name|
24
+ Sequel::Model.db.drop_table table_name
25
+ end
26
+ dirname = File.join(File.dirname(__FILE__), "..", "migrations")
27
+ Sequel::Migrator.apply(Sequel::Model.db, dirname) if File.directory?(dirname)
28
+ end
29
+
30
+ config.after(:each) do
31
+ Sequel::Model.db.tables.each do |table_name|
32
+ Sequel::Model.db["TRUNCATE #{table_name}"]
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,59 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{sinatra_app_gen}
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Jonathan Tron", "Joseph Halter"]
12
+ s.date = %q{2009-08-27}
13
+ s.default_executable = %q{sinatra_app}
14
+ s.description = %q{Our default app template}
15
+ s.email = %q{team@openhood.com}
16
+ s.executables = ["sinatra_app"]
17
+ s.files = [
18
+ ".gitignore",
19
+ "Rakefile",
20
+ "VERSION",
21
+ "VERSION.yml",
22
+ "bin/sinatra_app",
23
+ "lib/generators/sinatra_app/sinatra_app_generator.rb",
24
+ "lib/generators/sinatra_app/templates/Rakefile.erb",
25
+ "lib/generators/sinatra_app/templates/app.rb.erb",
26
+ "lib/generators/sinatra_app/templates/config.ru.erb",
27
+ "lib/generators/sinatra_app/templates/features/step_definitions/webrat_steps.rb.erb",
28
+ "lib/generators/sinatra_app/templates/features/support/env.rb.erb",
29
+ "lib/generators/sinatra_app/templates/features/support/paths.rb.erb",
30
+ "lib/generators/sinatra_app/templates/geminstaller.yml.erb",
31
+ "lib/generators/sinatra_app/templates/lib/rack_fix.rb.erb",
32
+ "lib/generators/sinatra_app/templates/spec/spec_helper.rb.erb",
33
+ "sinatra_app_gen.gemspec"
34
+ ]
35
+ s.homepage = %q{http://github.com/openhood/sinatra_app_gen}
36
+ s.rdoc_options = ["--charset=UTF-8"]
37
+ s.require_paths = ["lib"]
38
+ s.rubygems_version = %q{1.3.4}
39
+ s.summary = %q{Creates a new Sinatra / Sequel / rspec / cucumber app.}
40
+
41
+ if s.respond_to? :specification_version then
42
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
43
+ s.specification_version = 3
44
+
45
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
46
+ s.add_runtime_dependency(%q<rspec>, ["~> 1.2.6"])
47
+ s.add_runtime_dependency(%q<cucumber>, ["~> 0.3.97"])
48
+ s.add_runtime_dependency(%q<sequel>, [">= 3.2.0"])
49
+ else
50
+ s.add_dependency(%q<rspec>, ["~> 1.2.6"])
51
+ s.add_dependency(%q<cucumber>, ["~> 0.3.97"])
52
+ s.add_dependency(%q<sequel>, [">= 3.2.0"])
53
+ end
54
+ else
55
+ s.add_dependency(%q<rspec>, ["~> 1.2.6"])
56
+ s.add_dependency(%q<cucumber>, ["~> 0.3.97"])
57
+ s.add_dependency(%q<sequel>, [">= 3.2.0"])
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: openhood-sinatra_app_gen
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jonathan Tron
8
+ - Joseph Halter
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-08-27 00:00:00 -07:00
14
+ default_executable: sinatra_app
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rspec
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 1.2.6
25
+ version:
26
+ - !ruby/object:Gem::Dependency
27
+ name: cucumber
28
+ type: :runtime
29
+ version_requirement:
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 0.3.97
35
+ version:
36
+ - !ruby/object:Gem::Dependency
37
+ name: sequel
38
+ type: :runtime
39
+ version_requirement:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 3.2.0
45
+ version:
46
+ description: Our default app template
47
+ email: team@openhood.com
48
+ executables:
49
+ - sinatra_app
50
+ extensions: []
51
+
52
+ extra_rdoc_files: []
53
+
54
+ files:
55
+ - .gitignore
56
+ - Rakefile
57
+ - VERSION
58
+ - VERSION.yml
59
+ - bin/sinatra_app
60
+ - lib/generators/sinatra_app/sinatra_app_generator.rb
61
+ - lib/generators/sinatra_app/templates/Rakefile.erb
62
+ - lib/generators/sinatra_app/templates/app.rb.erb
63
+ - lib/generators/sinatra_app/templates/config.ru.erb
64
+ - lib/generators/sinatra_app/templates/features/step_definitions/webrat_steps.rb.erb
65
+ - lib/generators/sinatra_app/templates/features/support/env.rb.erb
66
+ - lib/generators/sinatra_app/templates/features/support/paths.rb.erb
67
+ - lib/generators/sinatra_app/templates/geminstaller.yml.erb
68
+ - lib/generators/sinatra_app/templates/lib/rack_fix.rb.erb
69
+ - lib/generators/sinatra_app/templates/spec/spec_helper.rb.erb
70
+ - sinatra_app_gen.gemspec
71
+ has_rdoc: false
72
+ homepage: http://github.com/openhood/sinatra_app_gen
73
+ licenses:
74
+ post_install_message:
75
+ rdoc_options:
76
+ - --charset=UTF-8
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: "0"
84
+ version:
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ version:
91
+ requirements: []
92
+
93
+ rubyforge_project:
94
+ rubygems_version: 1.3.5
95
+ signing_key:
96
+ specification_version: 3
97
+ summary: Creates a new Sinatra / Sequel / rspec / cucumber app.
98
+ test_files: []
99
+