wd_sinatra 1.0.6 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +1 -4
  3. data/CHANGELOG.md +20 -0
  4. data/Gemfile +0 -2
  5. data/LICENSE +4 -2
  6. data/README.md +28 -19
  7. data/bin/wd_sinatra +7 -25
  8. data/lib/wd_sinatra/app_loader.rb +12 -20
  9. data/lib/wd_sinatra/sinatra_ext.rb +8 -7
  10. data/lib/wd_sinatra/test_helpers.rb +1 -1
  11. data/lib/wd_sinatra/version.rb +2 -4
  12. data/templates/Gemfile +16 -11
  13. data/templates/{Rakefile → Rakefile.tt} +4 -4
  14. data/templates/Thorfile +14 -8
  15. data/templates/api/hello_world.rb +17 -10
  16. data/templates/bin/console +1 -1
  17. data/templates/config.ru.tt +6 -0
  18. data/templates/config/sinatra_config.rb.tt +50 -0
  19. data/templates/lib/{app.rb → app.rb.tt} +4 -1
  20. data/templates/lib/hooks.rb +25 -15
  21. data/templates/test/{test_helpers.rb → test_helpers.rb.tt} +8 -6
  22. data/test/test_helper.rb +0 -4
  23. data/test/ws_list_ext_test.rb +6 -6
  24. data/wd-sinatra.gemspec +11 -7
  25. metadata +72 -104
  26. data/templates/config.ru +0 -5
  27. data/templates/config/middleware.rb +0 -16
  28. data/templates/config/sinatra_config.rb +0 -18
  29. data/templates/lib/body_parser.rb +0 -24
  30. data/templates/lib/tasks/doc.rake +0 -39
  31. data/templates/lib/tasks/doc_generator/bootstrap/.gitignore +0 -4
  32. data/templates/lib/tasks/doc_generator/bootstrap/LICENSE +0 -176
  33. data/templates/lib/tasks/doc_generator/bootstrap/Makefile +0 -47
  34. data/templates/lib/tasks/doc_generator/bootstrap/README.md +0 -105
  35. data/templates/lib/tasks/doc_generator/bootstrap/bootstrap.css +0 -2467
  36. data/templates/lib/tasks/doc_generator/bootstrap/bootstrap.min.css +0 -356
  37. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/css/docs.css +0 -317
  38. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/ico/bootstrap-apple-114x114.png +0 -0
  39. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/ico/bootstrap-apple-57x57.png +0 -0
  40. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/ico/bootstrap-apple-72x72.png +0 -0
  41. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/ico/favicon.ico +0 -0
  42. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/bird.png +0 -0
  43. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/browsers.png +0 -0
  44. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/example-diagram-01.png +0 -0
  45. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/example-diagram-02.png +0 -0
  46. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/example-diagram-03.png +0 -0
  47. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/grid-18px.png +0 -0
  48. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/twitter-logo-no-bird.png +0 -0
  49. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/js/application.js +0 -52
  50. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/js/google-code-prettify/prettify.css +0 -94
  51. data/templates/lib/tasks/doc_generator/bootstrap/docs/assets/js/google-code-prettify/prettify.js +0 -28
  52. data/templates/lib/tasks/doc_generator/bootstrap/docs/index.html +0 -2037
  53. data/templates/lib/tasks/doc_generator/bootstrap/docs/javascript.html +0 -798
  54. data/templates/lib/tasks/doc_generator/bootstrap/examples/container-app.html +0 -119
  55. data/templates/lib/tasks/doc_generator/bootstrap/examples/fluid.html +0 -122
  56. data/templates/lib/tasks/doc_generator/bootstrap/examples/hero.html +0 -79
  57. data/templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-alerts.js +0 -124
  58. data/templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-buttons.js +0 -64
  59. data/templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-dropdown.js +0 -55
  60. data/templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-modal.js +0 -260
  61. data/templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-popover.js +0 -90
  62. data/templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-scrollspy.js +0 -107
  63. data/templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-tabs.js +0 -80
  64. data/templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-twipsy.js +0 -321
  65. data/templates/lib/tasks/doc_generator/bootstrap/js/tests/index.html +0 -40
  66. data/templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-alerts.js +0 -41
  67. data/templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-buttons.js +0 -42
  68. data/templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-dropdown.js +0 -52
  69. data/templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-modal.js +0 -151
  70. data/templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-popover.js +0 -76
  71. data/templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-scrollspy.js +0 -31
  72. data/templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-tabs.js +0 -77
  73. data/templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-twipsy.js +0 -81
  74. data/templates/lib/tasks/doc_generator/bootstrap/js/tests/vendor/qunit.css +0 -232
  75. data/templates/lib/tasks/doc_generator/bootstrap/js/tests/vendor/qunit.js +0 -1510
  76. data/templates/lib/tasks/doc_generator/bootstrap/lib/bootstrap.less +0 -26
  77. data/templates/lib/tasks/doc_generator/bootstrap/lib/forms.less +0 -479
  78. data/templates/lib/tasks/doc_generator/bootstrap/lib/mixins.less +0 -222
  79. data/templates/lib/tasks/doc_generator/bootstrap/lib/patterns.less +0 -1060
  80. data/templates/lib/tasks/doc_generator/bootstrap/lib/reset.less +0 -141
  81. data/templates/lib/tasks/doc_generator/bootstrap/lib/scaffolding.less +0 -139
  82. data/templates/lib/tasks/doc_generator/bootstrap/lib/tables.less +0 -224
  83. data/templates/lib/tasks/doc_generator/bootstrap/lib/type.less +0 -187
  84. data/templates/lib/tasks/doc_generator/bootstrap/lib/variables.less +0 -60
  85. data/templates/lib/tasks/doc_generator/template.erb +0 -156
@@ -1,10 +1,18 @@
1
1
  describe_service "/hello_world" do |service|
2
- service.formats :json
2
+ service.formats :json, :xml
3
3
  service.http_verb :get
4
4
  service.disable_auth # on by default
5
5
 
6
+ # DOCUMENTATION
7
+ service.documentation do |doc|
8
+ doc.overall "Be polite and say hello"
9
+ doc.example "<code>curl -I 'http://localhost:9292/hello_world?name=Matt'</code>"
10
+ end
11
+
6
12
  # INPUT
7
- service.param.string :name, :default => 'World'
13
+ service.params do |p|
14
+ p.string :name, :default => 'World'
15
+ end
8
16
 
9
17
  # OUTPUT
10
18
  service.response do |response|
@@ -14,16 +22,15 @@ describe_service "/hello_world" do |service|
14
22
  end
15
23
  end
16
24
 
17
- # DOCUMENTATION
18
- service.documentation do |doc|
19
- doc.overall "This service provides a simple hello world implementation example."
20
- doc.param :name, "The name of the person to greet."
21
- doc.example "<code>curl -I 'http://localhost:9292/hello_world?name=Matt'</code>"
22
- end
23
-
24
25
  # ACTION/IMPLEMENTATION
25
26
  service.implementation do
26
- {:message => "Hello #{params[:name]}", :at => Time.now}.to_json
27
+ data = {:message => "Hello #{params[:name]}", :at => Time.now}
28
+ case env["wd.format"]
29
+ when :json
30
+ data.to_json
31
+ when :xml
32
+ # data.to_xml # serialize to xml
33
+ end
27
34
  end
28
35
 
29
36
  end
@@ -5,5 +5,5 @@ require 'bundler'
5
5
  Bundler.setup
6
6
  require 'wd_sinatra/app_loader'
7
7
  root = File.expand_path('..', File.dirname(__FILE__))
8
- WDSinatra::AppLoader.console(root)
8
+ WDSinatra::AppLoader.setup(root)
9
9
  IRB.start(__FILE__)
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+ require 'wd_sinatra/app_loader'
3
+ root = File.expand_path(File.dirname(__FILE__))
4
+ WDSinatra::AppLoader.setup(root)
5
+ WDSinatra::AppLoader.server(<%= name_const %>)
6
+ map("/") { run <%= name_const %> }
@@ -0,0 +1,50 @@
1
+ class <%= name_const %> < Sinatra::Base
2
+ set :environment, RACK_ENV
3
+ set :root, WDSinatra::AppLoader.root_path
4
+ set :app_file, __FILE__
5
+ set :public_folder, File.join(WDSinatra::AppLoader.root_path, "public")
6
+ set :method_override, true
7
+
8
+ # enable logging in certain environments
9
+ configure :development, :production do
10
+ enable :logging
11
+ end
12
+
13
+ # Checks on static files before dispatching calls
14
+ enable :static
15
+
16
+ # enable rack session
17
+ enable :session
18
+
19
+ set :raise_errors, false
20
+
21
+ # enable that option to run by calling this file automatically (without using the config.ru file)
22
+ # enable :run
23
+
24
+ # Store the caught exception in the rack env so it can be used
25
+ # by 3rd party apps like airbrake.
26
+ error(::Exception) do |exception|
27
+ @env['rack.exception'] = exception
28
+ end
29
+
30
+ # Use this middleware with AR to avoid threading issues.
31
+ # require 'active_record'
32
+ # use ActiveRecord::ConnectionAdapters::ConnectionManagement
33
+
34
+ use Airbrake::Rack if defined?(Airbrake)
35
+
36
+ use Rack::ContentLength
37
+
38
+ require "rack/parser"
39
+ use Rack::Parser
40
+
41
+ if defined?(NewRelic)
42
+ #if RACK_ENV == 'development'
43
+ #require 'new_relic/rack/developer_mode'
44
+ #use NewRelic::Rack::DeveloperMode
45
+ #end
46
+ if NewRelic::Agent.config[:agent_enabled]
47
+ LOGGER.info "New Relic monitoring enabled App name: '#{NewRelic::Control.instance['app_name']}', Mode: '#{NewRelic::Control.instance.app}'"
48
+ end
49
+ end
50
+ end
@@ -13,7 +13,7 @@ if File.exist?(airbrake_config_file)
13
13
  require 'airbrake'
14
14
  Airbrake.configure do |config|
15
15
  config.api_key = airbrake_config['api_key']
16
- (airbrake_config['params_filters'] - config.params_filters).each do |param|
16
+ (airbrake_config['params_filters'] - config.params_filters).each do |param|
17
17
  config.params_filters << param
18
18
  end
19
19
  config.environment_name = RACK_ENV
@@ -22,3 +22,6 @@ if File.exist?(airbrake_config_file)
22
22
  end
23
23
  end
24
24
  end
25
+
26
+ class <%= name_const %> < Sinatra::Base
27
+ end
@@ -1,13 +1,13 @@
1
- require 'body_parser' # from the lib folder
2
- # Change the JSON parser if you want to use Yajl for instance.
3
- require 'json'
4
- BodyParser.json_parser = JSON
5
-
6
1
  module WDSinatraHooks
7
2
 
8
3
  MOBILE_X_HEADER = 'HTTP_X_MOBILE_TOKEN'
9
4
  INTERNAL_X_HEADER = 'HTTP_X_INTERNAL_API_KEY'
10
- JSON_BODY_VERBS = %w(POST PUT DELETE)
5
+ SUPPORTED_MEDIA_TYPES = {
6
+ "application/json" => :json,
7
+ "application/xml" => :xml,
8
+ # add custom media types here, for example:
9
+ # "application/vnd.example+json" => :json,
10
+ }
11
11
 
12
12
  ####### HOOKS #############################
13
13
  #
@@ -21,18 +21,13 @@ module WDSinatraHooks
21
21
  # @param [Hash] params the incoming params.
22
22
  # processed.
23
23
  # @returns [Hash] the pre processed params.
24
- def params_preprocessor_hook(params)
25
- if JSON_BODY_VERBS.include?(request.request_method)
26
- BodyParser.parse(params, request.body, request.content_type)
27
- else
28
- params
29
- end
30
- end
24
+ # def params_preprocessor_hook(params)
25
+ # end
31
26
 
32
27
 
33
28
  # This hooks gets called when an exception is raised while preprocessing the params,
34
29
  # verifying them or post processing them.
35
- # If this method isn't defined, the default handler is used (a 400 error is returned with the
30
+ # If this method isn't defined, the default handler is used (a 400 error is returned with the
36
31
  # exception message sent back as a json.
37
32
  #
38
33
  # @param [Exception] exception The exception that was rescued.
@@ -53,9 +48,24 @@ module WDSinatraHooks
53
48
 
54
49
  # This hook gets called before dispatching any
55
50
  # requests.
56
- #
51
+ #
57
52
  # Implementation example
58
53
  def pre_dispatch_hook
54
+ # content negotiation
55
+ accept = env["rack-accept.request"]
56
+ if accept
57
+ service_media_types = SUPPORTED_MEDIA_TYPES.select {|k,v| service.formats.include?(v)}
58
+ env["wd.media_type"] = accept.media_type.best_of(service_media_types.keys)
59
+ halt 406 unless env["wd.media_type"]
60
+ env["wd.format"] = SUPPORTED_MEDIA_TYPES[env["wd.media_type"]]
61
+ else
62
+ env["wd.media_type"] = "*/*"
63
+ env["wd.format"] = service.formats.first
64
+ halt 406 unless env["wd.format"] # 406 if no defined service.formats
65
+ end
66
+
67
+ content_type env["wd.format"], charset: "utf-8"
68
+
59
69
  if service.extra[:mobile]
60
70
  mobile_auth_check
61
71
  elsif service.extra[:internal]
@@ -8,21 +8,23 @@ require 'wd_sinatra/test_helpers'
8
8
 
9
9
  ENV['DONT_PRINT_ROUTES'] = 'true'
10
10
  root = File.expand_path('..', File.dirname(__FILE__))
11
- WDSinatra::AppLoader.server(root)
11
+ WDSinatra::AppLoader.setup(root)
12
+ WDSinatra::AppLoader.server(<%= name_const %>)
12
13
  WeaselDiesel.send(:include, JSONResponseVerification)
13
14
 
14
- if RUBY_VERSION =~ /1.8/
15
- require 'minitest/autorun'
16
- end
17
-
18
15
  require 'wd_sinatra/test_unit_helpers'
19
16
  include TestUnitHelpers
20
17
 
21
18
  TestApi.auth_request_x_header = WDSinatraHooks::INTERNAL_X_HEADER[/HTTP_(.*)/, 1] # strip the header marker added by Rack
22
19
  TestApi.mobile_request_x_header = WDSinatraHooks::MOBILE_X_HEADER[/HTTP_(.*)/, 1] # strip the header marker added by Rack
23
20
 
24
- module TestApi
21
+ class Requester
22
+ def app
23
+ <%= name_const %>.new
24
+ end
25
+ end
25
26
 
27
+ module TestApi
26
28
  # Edit this method to reflect your own Auth strategy
27
29
  def self.valid_internal_api_headers(headers)
28
30
  custom_headers = {TestApi.auth_request_x_header => WDSinatraHooks::ALLOWED_API_KEYS[0]}
@@ -3,10 +3,6 @@ require 'rubygems'
3
3
  require 'bundler'
4
4
  Bundler.setup
5
5
  require 'test/unit'
6
- if RUBY_VERSION.to_f < 1.9
7
- require 'minitest/autorun'
8
- end
9
6
 
10
7
  $: << File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
11
8
  require 'wd_sinatra'
12
-
@@ -1,5 +1,5 @@
1
1
  require 'uri'
2
- require File.expand_path(File.join(File.dirname(__FILE__), 'test_helper'))
2
+ require_relative 'test_helper'
3
3
 
4
4
  class WsListExtTest < MiniTest::Unit::TestCase
5
5
 
@@ -27,11 +27,11 @@ class WsListExtTest < MiniTest::Unit::TestCase
27
27
 
28
28
  # A snapshot of a working sorting of url array
29
29
  # The sorting doesn't have to actually be similar to that
30
- # but this allows us to have a baseline to measure against in case
30
+ # but this allows us to have a baseline to measure against in case
31
31
  # of tests.
32
32
  def expected_sorted_urls
33
33
  [
34
- "/foo/bar/bazz",
34
+ "/foo/bar/bazz",
35
35
  "/foo/bart",
36
36
  "/foo/bar/",
37
37
  "/foo/bar/:baz",
@@ -44,9 +44,9 @@ class WsListExtTest < MiniTest::Unit::TestCase
44
44
  def matched_route(url_query, reference_urls)
45
45
  sorted_regexps = reference_urls.map do |url|
46
46
  ignore = ""
47
- pattern = url.gsub(/[^\?\%\\\/\:\*\w]/){ |c|
47
+ pattern = url.gsub(/[^\?\%\\\/\:\*\w]/){ |c|
48
48
  ignore << escaped(c).join if c.match(/[\.@]/)
49
- char_encoded(c)
49
+ char_encoded(c)
50
50
  }
51
51
  pattern.gsub!(/((:\w+)|\*)/) do |match|
52
52
  if match == "*"
@@ -78,7 +78,7 @@ class WsListExtTest < MiniTest::Unit::TestCase
78
78
  assert_equal nil, matched_route("/fooz", base_urls), "shouldn't match /fooz"
79
79
  assert_equal nil, matched_route("/foo/bar/baz/baz", base_urls), "shouldn't match /foo/bar/baz/baz"
80
80
  assert_equal nil, matched_route("/foo/", base_urls), "shouldn't match /foo/"
81
- assert_equal "/foo/([^/?#]+)/bazz", matched_route("/foo/123/bazz", base_urls), "Should match /foo/123/bazz"
81
+ assert_equal "/foo/([^/?#]+)/bazz", matched_route("/foo/123/bazz", base_urls), "Should match /foo/123/bazz"
82
82
  end
83
83
 
84
84
  def test_route_matching_expectations
@@ -1,5 +1,7 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/wd_sinatra/version', __FILE__)
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'wd_sinatra/version'
3
5
 
4
6
  Gem::Specification.new do |gem|
5
7
  gem.authors = ["Matt Aimonetti"]
@@ -13,15 +15,17 @@ Gem::Specification.new do |gem|
13
15
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
16
  gem.name = "wd_sinatra"
15
17
  gem.require_paths = ["lib"]
16
- gem.version = WD::Sinatra::VERSION
18
+ gem.version = WDSinatra::VERSION
19
+ gem.license = 'MIT'
17
20
 
18
21
  gem.add_dependency('sinatra', ">= 1.3.3")
19
22
  gem.add_dependency('rake')
20
- gem.add_dependency('weasel_diesel', ">= 1.2.1")
23
+ gem.add_dependency('weasel_diesel', ">= 1.2.2")
21
24
  gem.add_dependency('rack', ">= 1.4.4")
25
+ gem.add_dependency('rack-parser', ">= 0.2.0")
26
+ gem.add_dependency('rack-accept', ">= 0.4.5")
22
27
  gem.add_dependency('rack-test')
23
28
  gem.add_dependency('thor')
24
- gem.add_dependency('minitest')
29
+ gem.add_dependency('minitest', "~> 4.7.4")
30
+ gem.add_dependency('inflecto')
25
31
  end
26
-
27
-
metadata CHANGED
@@ -1,126 +1,153 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wd_sinatra
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
5
- prerelease:
4
+ version: 2.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Matt Aimonetti
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-19 00:00:00.000000000 Z
11
+ date: 2013-08-30 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: sinatra
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 1.3.3
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 1.3.3
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: weasel_diesel
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
- version: 1.2.1
47
+ version: 1.2.2
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
- version: 1.2.1
54
+ version: 1.2.2
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rack
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: 1.4.4
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: 1.4.4
69
+ - !ruby/object:Gem::Dependency
70
+ name: rack-parser
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.2.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.2.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rack-accept
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.4.5
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.4.5
78
97
  - !ruby/object:Gem::Dependency
79
98
  name: rack-test
80
99
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
100
  requirements:
83
- - - ! '>='
101
+ - - '>='
84
102
  - !ruby/object:Gem::Version
85
103
  version: '0'
86
104
  type: :runtime
87
105
  prerelease: false
88
106
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
107
  requirements:
91
- - - ! '>='
108
+ - - '>='
92
109
  - !ruby/object:Gem::Version
93
110
  version: '0'
94
111
  - !ruby/object:Gem::Dependency
95
112
  name: thor
96
113
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
114
  requirements:
99
- - - ! '>='
115
+ - - '>='
100
116
  - !ruby/object:Gem::Version
101
117
  version: '0'
102
118
  type: :runtime
103
119
  prerelease: false
104
120
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
121
  requirements:
107
- - - ! '>='
122
+ - - '>='
108
123
  - !ruby/object:Gem::Version
109
124
  version: '0'
110
125
  - !ruby/object:Gem::Dependency
111
126
  name: minitest
112
127
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
128
  requirements:
115
- - - ! '>='
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: 4.7.4
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: 4.7.4
139
+ - !ruby/object:Gem::Dependency
140
+ name: inflecto
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
116
144
  - !ruby/object:Gem::Version
117
145
  version: '0'
118
146
  type: :runtime
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
149
  requirements:
123
- - - ! '>='
150
+ - - '>='
124
151
  - !ruby/object:Gem::Version
125
152
  version: '0'
126
153
  description: Weasel-Diesel Sinatra app gem, allowing you to generate/update sinatra
@@ -149,109 +176,50 @@ files:
149
176
  - lib/wd_sinatra/ws_list_ext.rb
150
177
  - templates/Gemfile
151
178
  - templates/Guardfile
152
- - templates/Rakefile
179
+ - templates/Rakefile.tt
153
180
  - templates/Thorfile
154
181
  - templates/api/hello_world.rb
155
182
  - templates/bin/console
156
- - templates/config.ru
183
+ - templates/config.ru.tt
157
184
  - templates/config/airbrake.yml.sample
158
185
  - templates/config/environments/default.rb
159
186
  - templates/config/environments/production.rb
160
187
  - templates/config/environments/test.rb
161
- - templates/config/middleware.rb
162
- - templates/config/sinatra_config.rb
163
- - templates/lib/app.rb
164
- - templates/lib/body_parser.rb
188
+ - templates/config/sinatra_config.rb.tt
189
+ - templates/lib/app.rb.tt
165
190
  - templates/lib/hooks.rb
166
191
  - templates/lib/newrelic_instrumentation.rb
167
- - templates/lib/tasks/doc.rake
168
- - templates/lib/tasks/doc_generator/bootstrap/.gitignore
169
- - templates/lib/tasks/doc_generator/bootstrap/LICENSE
170
- - templates/lib/tasks/doc_generator/bootstrap/Makefile
171
- - templates/lib/tasks/doc_generator/bootstrap/README.md
172
- - templates/lib/tasks/doc_generator/bootstrap/bootstrap.css
173
- - templates/lib/tasks/doc_generator/bootstrap/bootstrap.min.css
174
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/css/docs.css
175
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/ico/bootstrap-apple-114x114.png
176
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/ico/bootstrap-apple-57x57.png
177
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/ico/bootstrap-apple-72x72.png
178
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/ico/favicon.ico
179
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/bird.png
180
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/browsers.png
181
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/example-diagram-01.png
182
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/example-diagram-02.png
183
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/example-diagram-03.png
184
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/grid-18px.png
185
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/img/twitter-logo-no-bird.png
186
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/js/application.js
187
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/js/google-code-prettify/prettify.css
188
- - templates/lib/tasks/doc_generator/bootstrap/docs/assets/js/google-code-prettify/prettify.js
189
- - templates/lib/tasks/doc_generator/bootstrap/docs/index.html
190
- - templates/lib/tasks/doc_generator/bootstrap/docs/javascript.html
191
- - templates/lib/tasks/doc_generator/bootstrap/examples/container-app.html
192
- - templates/lib/tasks/doc_generator/bootstrap/examples/fluid.html
193
- - templates/lib/tasks/doc_generator/bootstrap/examples/hero.html
194
- - templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-alerts.js
195
- - templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-buttons.js
196
- - templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-dropdown.js
197
- - templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-modal.js
198
- - templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-popover.js
199
- - templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-scrollspy.js
200
- - templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-tabs.js
201
- - templates/lib/tasks/doc_generator/bootstrap/js/bootstrap-twipsy.js
202
- - templates/lib/tasks/doc_generator/bootstrap/js/tests/index.html
203
- - templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-alerts.js
204
- - templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-buttons.js
205
- - templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-dropdown.js
206
- - templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-modal.js
207
- - templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-popover.js
208
- - templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-scrollspy.js
209
- - templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-tabs.js
210
- - templates/lib/tasks/doc_generator/bootstrap/js/tests/unit/bootstrap-twipsy.js
211
- - templates/lib/tasks/doc_generator/bootstrap/js/tests/vendor/qunit.css
212
- - templates/lib/tasks/doc_generator/bootstrap/js/tests/vendor/qunit.js
213
- - templates/lib/tasks/doc_generator/bootstrap/lib/bootstrap.less
214
- - templates/lib/tasks/doc_generator/bootstrap/lib/forms.less
215
- - templates/lib/tasks/doc_generator/bootstrap/lib/mixins.less
216
- - templates/lib/tasks/doc_generator/bootstrap/lib/patterns.less
217
- - templates/lib/tasks/doc_generator/bootstrap/lib/reset.less
218
- - templates/lib/tasks/doc_generator/bootstrap/lib/scaffolding.less
219
- - templates/lib/tasks/doc_generator/bootstrap/lib/tables.less
220
- - templates/lib/tasks/doc_generator/bootstrap/lib/type.less
221
- - templates/lib/tasks/doc_generator/bootstrap/lib/variables.less
222
- - templates/lib/tasks/doc_generator/template.erb
223
192
  - templates/public/favicon.ico
224
193
  - templates/test/integration/hello_world_test.rb
225
- - templates/test/test_helpers.rb
194
+ - templates/test/test_helpers.rb.tt
226
195
  - test/test_helper.rb
227
196
  - test/ws_list_ext_test.rb
228
197
  - wd-sinatra.gemspec
229
198
  homepage: https://github.com/mattetti/wd-sinatra
230
- licenses: []
199
+ licenses:
200
+ - MIT
201
+ metadata: {}
231
202
  post_install_message:
232
203
  rdoc_options: []
233
204
  require_paths:
234
205
  - lib
235
206
  required_ruby_version: !ruby/object:Gem::Requirement
236
- none: false
237
207
  requirements:
238
- - - ! '>='
208
+ - - '>='
239
209
  - !ruby/object:Gem::Version
240
210
  version: '0'
241
211
  required_rubygems_version: !ruby/object:Gem::Requirement
242
- none: false
243
212
  requirements:
244
- - - ! '>='
213
+ - - '>='
245
214
  - !ruby/object:Gem::Version
246
215
  version: '0'
247
216
  requirements: []
248
217
  rubyforge_project:
249
- rubygems_version: 1.8.24
218
+ rubygems_version: 2.0.7
250
219
  signing_key:
251
- specification_version: 3
220
+ specification_version: 4
252
221
  summary: Weasel-Diesel Sinatra app gem, allowing you to generate/update sinatra apps
253
222
  using the Weasel Diesel DSL
254
223
  test_files:
255
224
  - test/test_helper.rb
256
225
  - test/ws_list_ext_test.rb
257
- has_rdoc: