hoboken 0.0.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +7 -0
  3. data/.github/workflows/ruby.yml +28 -0
  4. data/.rubocop.yml +33 -0
  5. data/.ruby-version +1 -0
  6. data/Gemfile +2 -0
  7. data/IDEAS.md +57 -0
  8. data/LICENSE.txt +1 -1
  9. data/README.md +21 -10
  10. data/Rakefile +14 -6
  11. data/bin/hoboken +2 -1
  12. data/hoboken.gemspec +53 -16
  13. data/lib/hoboken.rb +110 -23
  14. data/lib/hoboken/actions.rb +10 -6
  15. data/lib/hoboken/add_ons/github_action.rb +14 -0
  16. data/lib/hoboken/add_ons/heroku.rb +8 -23
  17. data/lib/hoboken/add_ons/internationalization.rb +10 -6
  18. data/lib/hoboken/add_ons/metrics.rb +39 -14
  19. data/lib/hoboken/add_ons/omniauth.rb +114 -47
  20. data/lib/hoboken/add_ons/rubocop.rb +40 -0
  21. data/lib/hoboken/add_ons/sequel.rb +76 -47
  22. data/lib/hoboken/add_ons/sprockets.rb +67 -65
  23. data/lib/hoboken/add_ons/travis.rb +6 -2
  24. data/lib/hoboken/add_ons/twbs.rb +80 -0
  25. data/lib/hoboken/generate.rb +112 -38
  26. data/lib/hoboken/templates/Gemfile.erb.tt +33 -10
  27. data/lib/hoboken/templates/README.md.tt +105 -35
  28. data/lib/hoboken/templates/Rakefile.tt +10 -22
  29. data/lib/hoboken/templates/classic.rb.tt +35 -8
  30. data/lib/hoboken/templates/config.ru.tt +5 -3
  31. data/lib/hoboken/templates/console.sh +5 -0
  32. data/lib/hoboken/templates/db.rb.tt +24 -0
  33. data/lib/hoboken/templates/github_action.tt +28 -0
  34. data/lib/hoboken/templates/gitignore +8 -1
  35. data/lib/hoboken/templates/metrics.rake.tt +10 -9
  36. data/lib/hoboken/templates/modular.rb.tt +40 -11
  37. data/lib/hoboken/templates/puma.rb.tt +21 -0
  38. data/lib/hoboken/templates/rspec.rake.tt +5 -0
  39. data/lib/hoboken/templates/rubocop.yml.tt +31 -0
  40. data/lib/hoboken/templates/sequel.rake +6 -4
  41. data/lib/hoboken/templates/server.sh +12 -0
  42. data/lib/hoboken/templates/setup.sh +7 -0
  43. data/lib/hoboken/templates/spec/app_spec.rb.tt +15 -0
  44. data/lib/hoboken/templates/spec/rack_matchers.rb.tt +56 -0
  45. data/lib/hoboken/templates/spec/spec_helper.rb.tt +41 -0
  46. data/lib/hoboken/templates/sprockets.rake +13 -7
  47. data/lib/hoboken/templates/sprockets_chain.rb +7 -3
  48. data/lib/hoboken/templates/sprockets_helper.rb +14 -10
  49. data/lib/hoboken/templates/support/rack_helpers.rb.tt +55 -0
  50. data/lib/hoboken/templates/support/rack_test_assertions.rb.tt +111 -0
  51. data/lib/hoboken/templates/test/test_helper.rb.tt +38 -27
  52. data/lib/hoboken/templates/test/unit/app_test.rb.tt +11 -3
  53. data/lib/hoboken/templates/test_unit.rake.tt +18 -0
  54. data/lib/hoboken/templates/views/index.erb.tt +10 -3
  55. data/lib/hoboken/templates/views/layout.erb.tt +4 -1
  56. data/lib/hoboken/version.rb +3 -1
  57. data/test/fixtures/Gemfile +3 -3
  58. data/test/fixtures/Gemfile.pristine +3 -2
  59. data/test/integration/add_on_test.rb +399 -136
  60. data/test/integration/generate_test.rb +170 -38
  61. data/test/test_helper.rb +54 -23
  62. data/test/unit/hoboken_actions_test.rb +70 -61
  63. metadata +441 -16
  64. data/.travis.yml +0 -5
  65. data/lib/hoboken/templates/test/support/rack_test_assertions.rb.tt +0 -92
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5d2df9dfc9ecc21aa34c95ac8f7f3b91bd3149fd
4
- data.tar.gz: fc960ac11680b88e5b037fb846bd39896a568227
2
+ SHA256:
3
+ metadata.gz: d42754fed3189d3de171e54745f49f492b0ff0581aafa53493f0d7f15efbb8b0
4
+ data.tar.gz: 1cd847b097a929db83a36932d959b2b8d0d94273b408231f06f47c6ae6c6e13d
5
5
  SHA512:
6
- metadata.gz: e53a838ca0fa1a12c87413deaee61100f4bf100bdda43a6f8fc7450b87b5bbdc81ae79cc7c44b8592d0d27c340674ecfbc34ab338223c78b5cc2962f00c3993a
7
- data.tar.gz: 33401a4e2df9ae38bfc7618dddd4512a4eab11c9e460adcc87b0014528b8f8e83013f19b947f172f6758cd7ef1bbad29e971011d91d26a4c4c6499d061a1e319
6
+ metadata.gz: 501df84e547ff6ace6e5b987f8f8723f349767647b9fdb532a949b6c8fe65b72502b349309948f7a8a92d09c9091c89b5f05745d288d363893c6fe5647930f4a
7
+ data.tar.gz: 168647168f6a62fdc1410d63994de32706710eff8017a91bedd31ce961ac6d2379d9494671d0d6154d1ff7a113140ec21b477eb809215bbed9b90e4b84366177
@@ -0,0 +1,7 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ open-pull-requests-limit: 10
@@ -0,0 +1,28 @@
1
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
2
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
3
+
4
+ name: Ruby
5
+
6
+ on:
7
+ push:
8
+ pull_request:
9
+ schedule:
10
+ - cron: "0 4 * * *"
11
+
12
+ jobs:
13
+ test:
14
+
15
+ runs-on: ubuntu-latest
16
+ strategy:
17
+ matrix:
18
+ ruby-version: ['2.6', '2.7', '3.0']
19
+
20
+ steps:
21
+ - uses: actions/checkout@v2
22
+ - name: Set up Ruby
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: ${{ matrix.ruby-version }}
26
+ bundler-cache: true
27
+ - name: Run tests
28
+ run: bundle exec rake ci
data/.rubocop.yml ADDED
@@ -0,0 +1,33 @@
1
+ require:
2
+ - rubocop-rake
3
+ - rubocop-rspec # for generated projects
4
+
5
+ AllCops:
6
+ Exclude:
7
+ - 'test/tmp/*/sample/Gemfile'
8
+ - 'test/fixtures/**/*'
9
+ - 'vendor/bundle/**/*'
10
+ NewCops: enable
11
+ TargetRubyVersion: 2.6
12
+
13
+ Metrics/BlockLength:
14
+ IgnoredMethods:
15
+ - run_hoboken
16
+
17
+ Layout/SpaceAroundEqualsInParameterDefault:
18
+ EnforcedStyle: no_space
19
+
20
+ Metrics/ClassLength:
21
+ Max: 150
22
+
23
+ Metrics/MethodLength:
24
+ Max: 15
25
+
26
+ Layout/LineLength:
27
+ Max: 90
28
+
29
+ Style/BlockDelimiters:
30
+ EnforcedStyle: braces_for_chaining
31
+
32
+ Style/YodaCondition:
33
+ EnforcedStyle: require_for_equality_operators_only
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.7.3
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in hoboken.gemspec
data/IDEAS.md ADDED
@@ -0,0 +1,57 @@
1
+ # Project Ideas
2
+
3
+ ## New Directory Structure
4
+
5
+ General idea is similar to Hexagonal or Ports and Adapters architecture. Web
6
+ and DB concerns depend on the application core, not the other way around.
7
+
8
+ /web -- depends on --> /db
9
+ /web -- depends on --> /lib
10
+ /db -- depends on --> /lib
11
+ /lib -- depends on --> nothing from from /web or /db
12
+
13
+ ```
14
+ Gemfile
15
+ Gemfile.lock
16
+ README.md
17
+ Rakefile
18
+ config.ru
19
+ app.rb
20
+ db.rb
21
+ /config
22
+ db.rb
23
+ environment.rb
24
+ puma.rb
25
+ /db
26
+ /mappers
27
+ some_mapper.rb
28
+ /migrate
29
+ migration_001.rb
30
+ sequel_mapper.rb
31
+ /lib
32
+ <project_name>.rb
33
+ /<project_name>
34
+ ... files
35
+ /helpers
36
+ some_helper.rb
37
+ /public
38
+ /css
39
+ styles.css
40
+ /img
41
+ favicon.png
42
+ hoboken.png
43
+ sinatra.png
44
+ /js
45
+ app.js
46
+ /views
47
+ index.erb
48
+ layout.erb
49
+ /test
50
+ test_helper.rb
51
+ /<project_name>
52
+ /db
53
+ some_mapper_test.rb
54
+ /support
55
+ rack_test_assertions.rb
56
+ app_test.rb
57
+ ```
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013-2014 Bob Nadler
1
+ Copyright (c) 2013-2021 Bob Nadler
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,14 +1,14 @@
1
1
  # Hoboken
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/hoboken.png)](http://badge.fury.io/rb/hoboken)
4
- [![Dependency Status](https://gemnasium.com/bnadlerjr/hoboken.png)](https://gemnasium.com/bnadlerjr/hoboken)
5
- [![Build Status](https://travis-ci.org/bnadlerjr/hoboken.png)](https://travis-ci.org/bnadlerjr/hoboken)
4
+ ![Build Status](https://github.com/bnadlerjr/hoboken/actions/workflows/ruby.yml/badge.svg)
5
+ [![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=bnadlerjr/hoboken)](https://dependabot.com)
6
6
 
7
- Generate Sinatra project templates.
7
+ Sinatra project generator and templates.
8
8
 
9
9
  ## Installation
10
10
 
11
- $ gem install hoboken --pre
11
+ $ gem install hoboken
12
12
 
13
13
  ## Usage
14
14
 
@@ -27,12 +27,14 @@ To see a list of options for the generate command:
27
27
  hoboken generate [APP_NAME]
28
28
 
29
29
  Options:
30
- [--ruby-version=RUBY_VERSION] # Ruby version for Gemfile
31
- # Default: 2.0.0
32
- [--tiny] # Generate views inline; do not create /public folder
33
- [--type=TYPE] # Architecture type (classic or modular)
34
- # Default: classic
35
- [--git] # Create a Git repository and make initial commit
30
+ [--ruby-version=RUBY_VERSION] # Ruby version for Gemfile
31
+ [--tiny], [--no-tiny] # Generate views inline; do not create /public folder
32
+ [--type=TYPE] # Architecture type (classic or modular)
33
+ # Default: classic
34
+ [--git], [--no-git] # Create a Git repository and make initial commit
35
+ [--api-only], [--no-api-only] # API only, no views, public folder, etc.
36
+ [--test-framework=TEST_FRAMEWORK] # Testing framework; can be either test-unit or rspec
37
+ # Default: test-unit
36
38
 
37
39
  Generate a new Sinatra app
38
40
 
@@ -40,13 +42,20 @@ To see a list of options for the generate command:
40
42
 
41
43
  Additional generators are available for existing projects generated using Hoboken:
42
44
 
45
+ $ hoboken add:github_action # Github action that runs CI task
43
46
  $ hoboken add:heroku # Heroku deployment support
44
47
  $ hoboken add:i18n # Internationalization support using sinatra-r18n
45
48
  $ hoboken add:metrics # Add metrics (flog, flay, simplecov)
46
49
  $ hoboken add:omniauth # OmniAuth authentication (allows you to select a provider)
50
+ $ hoboken add:rubocop # Basic Rubocop configuration and Rake task.
47
51
  $ hoboken add:sequel # Database access via Sequel gem
48
52
  $ hoboken add:sprockets # Rack-based asset packaging system
49
53
  $ hoboken add:travis # Basic Travis-CI YAML config
54
+ $ hoboken add:twbs # Twitter Bootstrap (requires Sprockets add-on)
55
+
56
+ ### Documentation
57
+
58
+ Visit the project [website](http://bobnadler.com/hoboken).
50
59
 
51
60
  ## Contributing
52
61
 
@@ -55,3 +64,5 @@ Additional generators are available for existing projects generated using Hoboke
55
64
  3. Commit your changes (`git commit -am 'Add some feature'`)
56
65
  4. Push to the branch (`git push origin my-new-feature`)
57
66
  5. Create new Pull Request
67
+
68
+ If your contribution requires a change to the documentation, please also make a pull request to the [documentation project](https://github.com/bnadlerjr/hoboken-docs).
data/Rakefile CHANGED
@@ -1,10 +1,18 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ # frozen_string_literal: true
3
2
 
4
- task :default => "test:all"
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
5
+ require 'rubocop/rake_task'
6
+
7
+ RuboCop::RakeTask.new
8
+
9
+ task default: 'test:all'
10
+
11
+ desc 'Run CI checks'
12
+ task ci: ['test:all', 'rubocop']
5
13
 
6
14
  namespace :test do
7
- types = %w(unit integration)
15
+ types = %w[unit integration]
8
16
 
9
17
  types.each do |type|
10
18
  Rake::TestTask.new(type.to_sym) do |t|
@@ -13,6 +21,6 @@ namespace :test do
13
21
  end
14
22
  end
15
23
 
16
- desc "Run all tests"
17
- task :all => types.map { |s| "test:#{s}" }
24
+ desc 'Run all tests'
25
+ task all: types.map { |s| "test:#{s}" }
18
26
  end
data/bin/hoboken CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require File.join(File.dirname(__FILE__), "../lib/hoboken")
4
+ require File.join(File.dirname(__FILE__), '../lib/hoboken')
4
5
  Hoboken::CLI.start(ARGV)
data/hoboken.gemspec CHANGED
@@ -1,25 +1,62 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'hoboken/version'
1
+ # frozen_string_literal: true
2
+
3
+ require 'English'
4
+ require_relative 'lib/hoboken/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "hoboken"
7
+ spec.name = 'hoboken'
8
8
  spec.version = Hoboken::VERSION
9
- spec.authors = ["Bob Nadler"]
10
- spec.email = ["bnadlerjr@gmail.com"]
11
- spec.description = %q{Sinatra project generator.}
12
- spec.summary = %q{Sinatra project generator.}
13
- spec.homepage = "https://github.com/bnadlerjr/hoboken"
14
- spec.license = "MIT"
9
+ spec.authors = ['Bob Nadler']
10
+ spec.email = ['bnadlerjr@gmail.com']
11
+ spec.description = 'Sinatra project generator.'
12
+ spec.summary = 'Sinatra project generator.'
13
+ spec.homepage = 'https://github.com/bnadlerjr/hoboken'
14
+ spec.license = 'MIT'
15
+
16
+ spec.required_ruby_version = '>= 2.6'
15
17
 
16
- spec.files = `git ls-files`.split($/)
18
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
17
19
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
21
+ spec.require_paths = ['lib']
22
+
23
+ spec.add_development_dependency 'bundler', '~> 2.2'
24
+ spec.add_development_dependency 'pry-byebug', '~> 3.9'
25
+ spec.add_development_dependency 'rake', '~> 13.0'
26
+ spec.add_development_dependency 'rubocop', '~> 1.12'
27
+ spec.add_development_dependency 'rubocop-rake', '~> 0.5'
28
+ spec.add_development_dependency 'test-unit', '~> 3.4'
29
+ spec.add_development_dependency 'warning', '~> 1.2'
20
30
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake", "~> 10.3.1"
31
+ # These dependencies are installed by the generated projects. Including them
32
+ # here so that:
33
+ #
34
+ # a) We can get Dependabot notifications for them
35
+ # b) We can run tests for generated projects
36
+ spec.add_development_dependency 'better_errors', '~> 2.9'
37
+ spec.add_development_dependency 'binding_of_caller', '~> 1.0'
38
+ spec.add_development_dependency 'bootstrap', '~> 5.0.0.beta3'
39
+ spec.add_development_dependency 'contest', '~> 0.1'
40
+ spec.add_development_dependency 'dotenv', '~> 2.7'
41
+ spec.add_development_dependency 'erubi', '~> 1.10'
42
+ spec.add_development_dependency 'omniauth-twitter', '~> 1.4'
43
+ spec.add_development_dependency 'puma', '~> 5.2'
44
+ spec.add_development_dependency 'rack_csrf', '~> 2.6'
45
+ spec.add_development_dependency 'racksh', '~> 1.0'
46
+ spec.add_development_dependency 'rack-test', '~> 1.1'
47
+ spec.add_development_dependency 'rb-fsevent', '~> 0.10'
48
+ spec.add_development_dependency 'rerun', '~> 0.13'
49
+ spec.add_development_dependency 'rspec', '~> 3.10'
50
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.2'
51
+ spec.add_development_dependency 'sassc', '~> 2.4'
52
+ spec.add_development_dependency 'sequel', '~> 5.43'
53
+ spec.add_development_dependency 'sinatra', '~> 2.1'
54
+ spec.add_development_dependency 'sinatra-contrib', '~> 2.1'
55
+ spec.add_development_dependency 'sinatra-flash', '~> 0.3'
56
+ spec.add_development_dependency 'sprockets', '~> 4.0'
57
+ spec.add_development_dependency 'sqlite3', '~> 1.4'
58
+ spec.add_development_dependency 'uglifier', '~> 4.2'
59
+ spec.add_development_dependency 'yui-compressor', '~> 0.12'
23
60
 
24
- spec.add_dependency "thor", "~> 0.19.1"
61
+ spec.add_dependency 'thor', '~> 1.1'
25
62
  end
data/lib/hoboken.rb CHANGED
@@ -1,11 +1,19 @@
1
- require "thor"
2
- require "thor/util"
3
- require "fileutils"
4
- require_relative "hoboken/version"
5
- require_relative "hoboken/generate"
6
- require_relative "hoboken/actions"
1
+ # frozen_string_literal: true
7
2
 
3
+ require 'date'
4
+ require 'thor'
5
+ require 'thor/util'
6
+ require 'fileutils'
7
+ require_relative 'hoboken/version'
8
+ require_relative 'hoboken/generate'
9
+ require_relative 'hoboken/actions'
10
+
11
+ # Generate Sinatra project templates.
12
+ #
8
13
  module Hoboken
14
+ # Custom `Thor::Group` that mixes in `Hoboken::Actions` so that they're
15
+ # available everywhere.
16
+ #
9
17
  class Group < Thor::Group
10
18
  include Thor::Actions
11
19
  include Hoboken::Actions
@@ -13,31 +21,110 @@ module Hoboken
13
21
  def self.source_root
14
22
  File.dirname(__FILE__)
15
23
  end
24
+
25
+ def classic?
26
+ File.read('app.rb').include?("require 'sinatra'")
27
+ end
28
+
29
+ def rspec?
30
+ Dir.exist?('spec')
31
+ end
16
32
  end
17
33
 
18
- require_relative "hoboken/add_ons/metrics"
19
- require_relative "hoboken/add_ons/internationalization"
20
- require_relative "hoboken/add_ons/heroku"
21
- require_relative "hoboken/add_ons/omniauth"
22
- require_relative "hoboken/add_ons/sequel"
23
- require_relative "hoboken/add_ons/sprockets"
24
- require_relative "hoboken/add_ons/travis"
34
+ require_relative 'hoboken/add_ons/github_action'
35
+ require_relative 'hoboken/add_ons/heroku'
36
+ require_relative 'hoboken/add_ons/internationalization'
37
+ require_relative 'hoboken/add_ons/metrics'
38
+ require_relative 'hoboken/add_ons/omniauth'
39
+ require_relative 'hoboken/add_ons/rubocop'
40
+ require_relative 'hoboken/add_ons/sequel'
41
+ require_relative 'hoboken/add_ons/sprockets'
42
+ require_relative 'hoboken/add_ons/travis'
43
+ require_relative 'hoboken/add_ons/twbs'
25
44
 
45
+ # Hoboken's command-line interface.
46
+ #
26
47
  class CLI < Thor
27
- desc "version", "Print version and quit"
48
+ desc 'version', 'Print version and quit'
28
49
  def version
29
50
  puts "Hoboken v#{Hoboken::VERSION}"
30
51
  end
31
52
 
32
- register(Generate, "generate", "generate [APP_NAME]", "Generate a new Sinatra app")
33
- tasks["generate"].options = Hoboken::Generate.class_options
53
+ register(Generate, 'generate', 'generate [APP_NAME]', 'Generate a new Sinatra app')
54
+ tasks['generate'].options = Hoboken::Generate.class_options
55
+
56
+ register(
57
+ AddOns::Heroku,
58
+ 'add:heroku',
59
+ 'add:heroku',
60
+ 'Heroku deployment support'
61
+ )
62
+
63
+ register(
64
+ AddOns::GithubAction,
65
+ 'add:github_action',
66
+ 'add:github_action',
67
+ 'Github action that runs CI task'
68
+ )
69
+
70
+ register(
71
+ AddOns::Internationalization,
72
+ 'add:i18n',
73
+ 'add:i18n',
74
+ 'Internationalization support using sinatra-r18n'
75
+ )
34
76
 
35
- register(AddOns::Metrics, "add:metrics", "add:metrics", "Add metrics (flog, flay, simplecov)")
36
- register(AddOns::Internationalization, "add:i18n", "add:i18n", "Internationalization support using sinatra-r18n")
37
- register(AddOns::Heroku, "add:heroku", "add:heroku", "Heroku deployment support")
38
- register(AddOns::OmniAuth, "add:omniauth", "add:omniauth", "OmniAuth authentication (allows you to select a provider)")
39
- register(AddOns::Sprockets, "add:sprockets", "add:sprockets", "Rack-based asset packaging system")
40
- register(AddOns::Sequel, "add:sequel", "add:sequel", "Database access via Sequel gem")
41
- register(AddOns::Travis, "add:travis", "add:travis", "Basic Travis-CI YAML config")
77
+ register(
78
+ AddOns::Metrics,
79
+ 'add:metrics',
80
+ 'add:metrics',
81
+ 'Add metrics (flog, flay, simplecov)'
82
+ )
83
+
84
+ register(
85
+ AddOns::OmniAuth,
86
+ 'add:omniauth',
87
+ 'add:omniauth',
88
+ 'OmniAuth authentication (allows you to select a provider)'
89
+ )
90
+
91
+ register(
92
+ AddOns::Rubocop,
93
+ 'add:rubocop',
94
+ 'add:rubocop',
95
+ 'Basic Rubocop configuration and Rake task.'
96
+ )
97
+
98
+ register(
99
+ AddOns::Sequel,
100
+ 'add:sequel',
101
+ 'add:sequel',
102
+ 'Database access via Sequel gem'
103
+ )
104
+
105
+ register(
106
+ AddOns::Sprockets,
107
+ 'add:sprockets',
108
+ 'add:sprockets',
109
+ 'Rack-based asset packaging system'
110
+ )
111
+
112
+ register(
113
+ AddOns::Travis,
114
+ 'add:travis',
115
+ 'add:travis',
116
+ 'Basic Travis-CI YAML config'
117
+ )
118
+
119
+ register(
120
+ AddOns::TwitterBootstrap,
121
+ 'add:twbs',
122
+ 'add:twbs',
123
+ 'Twitter Bootstrap (requires Sprockets add-on)'
124
+ )
125
+
126
+ def self.exit_on_failure?
127
+ true
128
+ end
42
129
  end
43
130
  end