gimbal 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f20b47afba9889c590f487311b85ab8029f611e
4
- data.tar.gz: a89b86058fa860211647b081ad164046222e0fd5
3
+ metadata.gz: 758b0dd4097f6945f03810776ce2367fe74bcf10
4
+ data.tar.gz: f7b92490af5fcd69d231603ebcd9650c7bfb446e
5
5
  SHA512:
6
- metadata.gz: 75c919055d3e26f1d684b2da1bb7d11e802efd4bcfe2ba7ab5b2d983a4d7f7f7220afbaa53e8e5c9bdf6640706c115b2a7f5f3e322f27e77a03b04bdf9fe9f44
7
- data.tar.gz: 6ef583aadc642f2efaa8feb6d4bb597fb6b8f48ae701234e2defb6c821b8d35038e518d693839bd6926f05497ca46626ec219cb347a489bdbed610d212dbfafa
6
+ metadata.gz: c94c583490b75534deddf1b0c3c2e661263e6209664844b97a927e2fe80d0f9288dfabb8b5336dc3007e442a4cceef85ee946d8e0e34df6930b52e94130dc14c
7
+ data.tar.gz: 09c0244b34d78aea2edbebbc51f533723a5e7a643b33ff4af1e13dabcf58af1c14c1f9e27e9a49552aa4ad3753ab8667ab5c4e7a5960cccf80af7c96da5a9ce3
data/.hound.yml ADDED
@@ -0,0 +1,2 @@
1
+ ruby:
2
+ config_file: .ruby-style.yml
data/.ruby-style.yml ADDED
@@ -0,0 +1,243 @@
1
+ AllCops:
2
+ Exclude:
3
+ - "vendor/**/*"
4
+ - "db/schema.rb"
5
+ UseCache: false
6
+ Style/CollectionMethods:
7
+ Description: Preferred collection methods.
8
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#map-find-select-reduce-size
9
+ Enabled: true
10
+ PreferredMethods:
11
+ collect: map
12
+ collect!: map!
13
+ find: detect
14
+ find_all: select
15
+ reduce: inject
16
+ Style/DotPosition:
17
+ Description: Checks the position of the dot in multi-line method calls.
18
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains
19
+ Enabled: true
20
+ EnforcedStyle: trailing
21
+ SupportedStyles:
22
+ - leading
23
+ - trailing
24
+ Style/FileName:
25
+ Description: Use snake_case for source file names.
26
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-files
27
+ Enabled: false
28
+ Exclude: []
29
+ Style/GuardClause:
30
+ Description: Check for conditionals that can be replaced with guard clauses
31
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals
32
+ Enabled: false
33
+ MinBodyLength: 1
34
+ Style/IfUnlessModifier:
35
+ Description: Favor modifier if/unless usage when you have a single-line body.
36
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier
37
+ Enabled: false
38
+ MaxLineLength: 80
39
+ Style/OptionHash:
40
+ Description: Don't use option hashes when you can use keyword arguments.
41
+ Enabled: false
42
+ Style/PercentLiteralDelimiters:
43
+ Description: Use `%`-literal delimiters consistently
44
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-literal-braces
45
+ Enabled: false
46
+ PreferredDelimiters:
47
+ "%": "()"
48
+ "%i": "()"
49
+ "%q": "()"
50
+ "%Q": "()"
51
+ "%r": "{}"
52
+ "%s": "()"
53
+ "%w": "()"
54
+ "%W": "()"
55
+ "%x": "()"
56
+ Style/PredicateName:
57
+ Description: Check the names of predicate methods.
58
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark
59
+ Enabled: true
60
+ NamePrefix:
61
+ - is_
62
+ - has_
63
+ - have_
64
+ NamePrefixBlacklist:
65
+ - is_
66
+ Exclude:
67
+ - spec/**/*
68
+ Style/RaiseArgs:
69
+ Description: Checks the arguments passed to raise/fail.
70
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#exception-class-messages
71
+ Enabled: false
72
+ EnforcedStyle: exploded
73
+ SupportedStyles:
74
+ - compact
75
+ - exploded
76
+ Style/SignalException:
77
+ Description: Checks for proper usage of fail and raise.
78
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#fail-method
79
+ Enabled: false
80
+ EnforcedStyle: semantic
81
+ SupportedStyles:
82
+ - only_raise
83
+ - only_fail
84
+ - semantic
85
+ Style/SingleLineBlockParams:
86
+ Description: Enforces the names of some block params.
87
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#reduce-blocks
88
+ Enabled: false
89
+ Methods:
90
+ - reduce:
91
+ - a
92
+ - e
93
+ - inject:
94
+ - a
95
+ - e
96
+ Style/SingleLineMethods:
97
+ Description: Avoid single-line methods.
98
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-single-line-methods
99
+ Enabled: false
100
+ AllowIfMethodIsEmpty: true
101
+ Style/StringLiterals:
102
+ Description: Checks if uses of quotes match the configured preference.
103
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-string-literals
104
+ Enabled: true
105
+ EnforcedStyle: single_quotes
106
+ SupportedStyles:
107
+ - single_quotes
108
+ - double_quotes
109
+ Style/StringLiteralsInInterpolation:
110
+ Description: Checks if uses of quotes inside expressions in interpolated strings
111
+ match the configured preference.
112
+ Enabled: true
113
+ EnforcedStyle: single_quotes
114
+ SupportedStyles:
115
+ - single_quotes
116
+ - double_quotes
117
+ Style/TrailingCommaInArguments:
118
+ Description: 'Checks for trailing comma in argument lists.'
119
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
120
+ Enabled: false
121
+ EnforcedStyleForMultiline: no_comma
122
+ SupportedStyles:
123
+ - comma
124
+ - consistent_comma
125
+ - no_comma
126
+ Style/TrailingCommaInLiteral:
127
+ Description: 'Checks for trailing comma in array and hash literals.'
128
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
129
+ Enabled: false
130
+ EnforcedStyleForMultiline: no_comma
131
+ SupportedStyles:
132
+ - comma
133
+ - consistent_comma
134
+ - no_comma
135
+ Metrics/AbcSize:
136
+ Description: A calculated magnitude based on number of assignments, branches, and
137
+ conditions.
138
+ Enabled: false
139
+ Max: 15
140
+ Metrics/ClassLength:
141
+ Description: Avoid classes longer than 100 lines of code.
142
+ Enabled: false
143
+ CountComments: false
144
+ Max: 100
145
+ Metrics/ModuleLength:
146
+ CountComments: false
147
+ Max: 100
148
+ Description: Avoid modules longer than 100 lines of code.
149
+ Enabled: false
150
+ Metrics/CyclomaticComplexity:
151
+ Description: A complexity metric that is strongly correlated to the number of test
152
+ cases needed to validate a method.
153
+ Enabled: false
154
+ Max: 6
155
+ Metrics/MethodLength:
156
+ Description: Avoid methods longer than 10 lines of code.
157
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#short-methods
158
+ Enabled: false
159
+ CountComments: false
160
+ Max: 10
161
+ Metrics/ParameterLists:
162
+ Description: Avoid parameter lists longer than three or four parameters.
163
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#too-many-params
164
+ Enabled: false
165
+ Max: 5
166
+ CountKeywordArgs: true
167
+ Metrics/PerceivedComplexity:
168
+ Description: A complexity metric geared towards measuring complexity for a human
169
+ reader.
170
+ Enabled: false
171
+ Max: 7
172
+ Lint/AssignmentInCondition:
173
+ Description: Don't use assignment in conditions.
174
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition
175
+ Enabled: false
176
+ AllowSafeAssignment: true
177
+ Style/InlineComment:
178
+ Description: Avoid inline comments.
179
+ Enabled: false
180
+ Style/AccessorMethodName:
181
+ Description: Check the naming of accessor methods for get_/set_.
182
+ Enabled: false
183
+ Style/Alias:
184
+ Description: Use alias_method instead of alias.
185
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#alias-method
186
+ Enabled: false
187
+ Style/Documentation:
188
+ Description: Document classes and non-namespace modules.
189
+ Enabled: false
190
+ Style/DoubleNegation:
191
+ Description: Checks for uses of double negation (!!).
192
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-bang-bang
193
+ Enabled: false
194
+ Style/EachWithObject:
195
+ Description: Prefer `each_with_object` over `inject` or `reduce`.
196
+ Enabled: false
197
+ Style/EmptyLiteral:
198
+ Description: Prefer literals to Array.new/Hash.new/String.new.
199
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#literal-array-hash
200
+ Enabled: false
201
+ Style/ModuleFunction:
202
+ Description: Checks for usage of `extend self` in modules.
203
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#module-function
204
+ Enabled: false
205
+ Style/OneLineConditional:
206
+ Description: Favor the ternary operator(?:) over if/then/else/end constructs.
207
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#ternary-operator
208
+ Enabled: false
209
+ Style/PerlBackrefs:
210
+ Description: Avoid Perl-style regex back references.
211
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers
212
+ Enabled: false
213
+ Style/Send:
214
+ Description: Prefer `Object#__send__` or `Object#public_send` to `send`, as `send`
215
+ may overlap with existing methods.
216
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#prefer-public-send
217
+ Enabled: false
218
+ Style/SpecialGlobalVars:
219
+ Description: Avoid Perl-style global variables.
220
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms
221
+ Enabled: false
222
+ Style/VariableInterpolation:
223
+ Description: Don't interpolate global, instance and class variables directly in
224
+ strings.
225
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#curlies-interpolate
226
+ Enabled: false
227
+ Style/WhenThen:
228
+ Description: Use when x then ... for one-line cases.
229
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#one-line-cases
230
+ Enabled: false
231
+ Lint/EachWithObjectArgument:
232
+ Description: Check for immutable argument given to each_with_object.
233
+ Enabled: true
234
+ Lint/HandleExceptions:
235
+ Description: Don't suppress exception.
236
+ StyleGuide: https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions
237
+ Enabled: false
238
+ Lint/LiteralInCondition:
239
+ Description: Checks of literals used in conditions.
240
+ Enabled: false
241
+ Lint/LiteralInInterpolation:
242
+ Description: Checks for literals used in interpolation.
243
+ Enabled: false
data/CHANGELOG.md ADDED
@@ -0,0 +1,38 @@
1
+ master
2
+
3
+ * Add devise gem and configure for User model
4
+ * Upgrade RSpec to 3.4
5
+
6
+ 0.0.6 (9th May 2016)
7
+
8
+ * Add test coverage for help output
9
+
10
+ 0.0.5 (9th May 2016)
11
+
12
+ * Make help output specific to Gimbal rather than Rails
13
+ * Enable analytics with Segment
14
+ * Use HAML templates
15
+
16
+ 0.0.4 (9th May 2016)
17
+
18
+ * Fix travis ruby version
19
+ * Make Rails version requirements less pessimistic
20
+ * Use RACK_ENV instead of RAILS_ENV
21
+ * Increase ruby version to 2.2.4
22
+ * Fix GitHub spec
23
+ * Ignore JetBrains workspaces
24
+
25
+ 0.0.3 (1st December 2015)
26
+
27
+ * Add letter_opener gem
28
+ * Add action mailer test helper
29
+ * Copy various templates and gems from Suspenders
30
+
31
+ 0.0.2 (1st December 2015)
32
+
33
+ * Setup basic application generator
34
+
35
+ 0.0.1 (1st December 2015)
36
+
37
+ * Initial build to secure gem name
38
+
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
- # gimbal [![Build Status](https://travis-ci.org/pacso/gimbal.svg?branch=master)](https://travis-ci.org/pacso/gimbal)
1
+ # gimbal [![Build Status](https://travis-ci.org/pacso/gimbal.svg?branch=master)](https://travis-ci.org/pacso/gimbal) [![Gem Version](https://badge.fury.io/rb/gimbal.svg)](https://badge.fury.io/rb/gimbal) [![Dependency Status](https://gemnasium.com/badges/github.com/pacso/gimbal.svg)](https://gemnasium.com/github.com/pacso/gimbal)
2
+
2
3
 
3
4
  Gimbal is the base Rails application I use when starting new projects. It was mostly copied from thoughtbot's Suspenders project, but modified for my needs.
4
5
 
data/gimbal.gemspec CHANGED
@@ -29,5 +29,5 @@ to streamline the beginning of my Rails projects.
29
29
  s.add_dependency 'bundler', '~> 1.3'
30
30
  s.add_dependency 'rails', Gimbal::RAILS_VERSION
31
31
 
32
- s.add_development_dependency 'rspec', '~> 3.2'
32
+ s.add_development_dependency 'rspec', '~> 3.4'
33
33
  end
@@ -41,6 +41,7 @@ module Gimbal
41
41
 
42
42
  def add_bullet_gem_configuration
43
43
  config = <<-RUBY
44
+
44
45
  config.after_initialize do
45
46
  Bullet.enable = true
46
47
  Bullet.bullet_logger = true
@@ -72,6 +73,7 @@ module Gimbal
72
73
  generate.javascript_engine false
73
74
  generate.request_specs false
74
75
  generate.routing_specs false
76
+ generate.skip_routes true
75
77
  generate.stylesheets false
76
78
  generate.test_framework :rspec
77
79
  generate.view_specs false
@@ -82,6 +84,10 @@ module Gimbal
82
84
  inject_into_class 'config/application.rb', 'Application', config
83
85
  end
84
86
 
87
+ def enable_devise_gem
88
+ uncomment_lines('Gemfile', 'gem "devise"')
89
+ end
90
+
85
91
  def configure_i18n_for_missing_translations
86
92
  raise_on_missing_translations_in("development")
87
93
  raise_on_missing_translations_in("test")
@@ -120,7 +126,7 @@ module Gimbal
120
126
  end
121
127
 
122
128
  def generate_rspec
123
- generate 'rspec:install'
129
+ bundle_command 'exec rails generate rspec:install'
124
130
  end
125
131
 
126
132
  def configure_puma
@@ -153,6 +159,41 @@ module Gimbal
153
159
  copy_file "spec_helper.rb", "spec/spec_helper.rb"
154
160
  end
155
161
 
162
+ def install_devise
163
+ bundle_command 'exec rails generate devise:install'
164
+ end
165
+
166
+ def generate_devise_model
167
+ bundle_command 'exec rails generate devise User'
168
+ bundle_command 'exec rails generate devise:views'
169
+ end
170
+
171
+ def configure_devise
172
+ inject_into_file 'app/models/user.rb',
173
+ "\n :confirmable, :lockable, :timeoutable,",
174
+ after: 'devise :database_authenticatable, :registerable,'
175
+
176
+ devise_migration = Dir['db/migrate/*devise_create*.rb'].first
177
+
178
+ uncomment_lines(devise_migration, 't.string :confirmation_token')
179
+ uncomment_lines(devise_migration, 't.datetime :confirmed_at')
180
+ uncomment_lines(devise_migration, 't.datetime :confirmation_sent_at')
181
+ uncomment_lines(devise_migration, 't.string :unconfirmed_email')
182
+
183
+ uncomment_lines(devise_migration, 't.integer :failed_attempts')
184
+ uncomment_lines(devise_migration, 't.string :unlock_token')
185
+ uncomment_lines(devise_migration, 't.datetime :locked_at')
186
+
187
+ uncomment_lines(devise_migration, 'add_index :users, :confirmation_token')
188
+ uncomment_lines(devise_migration, 'add_index :users, :unlock_token')
189
+
190
+ inject_into_file(
191
+ "config/environments/development.rb",
192
+ "config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }\n",
193
+ after: "config.action_mailer.delivery_method = :letter_opener\n",
194
+ )
195
+ end
196
+
156
197
  def create_partials_directory
157
198
  empty_directory 'app/views/application'
158
199
  end
@@ -181,6 +222,20 @@ module Gimbal
181
222
  bundle_command 'exec rake db:create db:migrate'
182
223
  end
183
224
 
225
+ def migrate_database
226
+ bundle_command 'exec rake db:migrate'
227
+ end
228
+
229
+ def generate_homepage
230
+ bundle_command 'exec rails generate controller pages homepage'
231
+
232
+ inject_into_file(
233
+ 'config/routes.rb',
234
+ "\n root to: 'pages#homepage'",
235
+ after: 'devise_for :users'
236
+ )
237
+ end
238
+
184
239
  def configure_time_formats
185
240
  remove_file "config/locales/en.yml"
186
241
  template "config_locales_en.yml.erb", "config/locales/en.yml"
@@ -3,33 +3,65 @@ require 'rails/generators/rails/app/app_generator'
3
3
 
4
4
  module Gimbal
5
5
  class AppGenerator < Rails::Generators::AppGenerator
6
- class_option :database, type: :string, aliases: "-d", default: "mysql",
7
- desc: "Configure for selected database (options: #{DATABASES.join("/")})"
8
-
9
- class_option :github, type: :string, aliases: "-G", default: nil,
10
- desc: "Create Github repository and add remote origin pointed to repo"
11
-
12
- class_option :skip_test_unit, type: :boolean, aliases: "-T", default: true,
13
- desc: "Skip Test::Unit files"
14
-
15
- class_option :skip_turbolinks, type: :boolean, default: true,
16
- desc: "Skip turbolinks gem"
17
-
18
- class_option :skip_bundle, type: :boolean, aliases: "-B", default: true,
6
+ class_option :database,
7
+ type: :string,
8
+ aliases: '-d',
9
+ default: 'mysql',
10
+ desc: "Configure for selected database
11
+ (options: #{DATABASES.join('/')})"
12
+
13
+ class_option :github,
14
+ type: :string,
15
+ aliases: '-G',
16
+ default: nil,
17
+ desc: 'Create Github repository and
18
+ add remote origin pointed to repo'
19
+
20
+ class_option :skip_test_unit,
21
+ type: :boolean,
22
+ aliases: '-T',
23
+ default: true,
24
+ desc: 'Skip Test::Unit files'
25
+
26
+ class_option :skip_turbolinks,
27
+ type: :boolean,
28
+ default: true,
29
+ desc: 'Skip turbolinks gem'
30
+
31
+ class_option :skip_bundle,
32
+ type: :boolean,
33
+ aliases: '-B',
34
+ default: true,
19
35
  desc: "Don't run bundle install"
20
36
 
21
- class_option :version, type: :boolean, aliases: "-v", group: :gimbal,
22
- desc: "Show Gimbal version number and quit"
23
-
24
- class_option :help, type: :boolean, aliases: '-h', group: :gimbal,
37
+ class_option :skip_devise,
38
+ type: :boolean,
39
+ default: false,
40
+ desc: 'Skip devise gem and setup'
41
+
42
+ class_option :version,
43
+ type: :boolean,
44
+ aliases: '-v',
45
+ group: :gimbal,
46
+ desc: 'Show Gimbal version number and quit'
47
+
48
+ class_option :help,
49
+ type: :boolean,
50
+ aliases: '-h',
51
+ group: :gimbal,
25
52
  desc: 'Show this help message and quit'
26
53
 
27
54
  def finish_template
28
55
  say 'Finishing template'
56
+ invoke :stop_spring
29
57
  invoke :gimbal_customisation
30
58
  super
31
59
  end
32
60
 
61
+ def stop_spring
62
+ run('spring stop')
63
+ end
64
+
33
65
  def gimbal_customisation
34
66
  say 'Gimbal Customisation'
35
67
  invoke :customise_gemfile
@@ -40,10 +72,13 @@ module Gimbal
40
72
  invoke :configure_app
41
73
  invoke :setup_git
42
74
  invoke :setup_database
75
+ invoke :setup_devise
43
76
  invoke :create_github_repo
44
77
  invoke :setup_analytics
45
78
  invoke :setup_bundler_audit
46
79
  invoke :setup_spring
80
+ invoke :migrate_database
81
+ invoke :generate_basic_homepage
47
82
  end
48
83
 
49
84
  def customise_gemfile
@@ -51,9 +86,15 @@ module Gimbal
51
86
  build :replace_gemfile
52
87
  build :set_ruby_to_version_being_used
53
88
 
89
+ build :enable_devise_gem unless options[:skip_devise]
90
+
54
91
  bundle_command 'install'
55
92
  end
56
93
 
94
+ def generate_basic_homepage
95
+ build :generate_homepage
96
+ end
97
+
57
98
  def setup_database
58
99
  say 'Setting up database'
59
100
 
@@ -62,6 +103,20 @@ module Gimbal
62
103
  build :create_database
63
104
  end
64
105
 
106
+ def migrate_database
107
+ build :migrate_database
108
+ end
109
+
110
+ def setup_devise
111
+ unless options[:skip_devise]
112
+ say 'Setting up Devise'
113
+
114
+ build :install_devise
115
+ build :generate_devise_model
116
+ build :configure_devise
117
+ end
118
+ end
119
+
65
120
  def setup_development_environment
66
121
  say 'Setting up the development environment'
67
122
  build :raise_on_delivery_errors
@@ -1,5 +1,5 @@
1
1
  module Gimbal
2
2
  RAILS_VERSION = '~> 4.2'
3
3
  RUBY_VERSION = IO.read("#{File.dirname(__FILE__)}/../../.ruby-version").strip
4
- VERSION = '0.0.6'
4
+ VERSION = '0.1.0'
5
5
  end
@@ -1,136 +1,158 @@
1
1
  require 'spec_helper'
2
2
 
3
- RSpec.describe 'Create a new project with default config' do
4
- before(:all) do
5
- drop_dummy_database
6
- remove_project_directory
7
- run_gimbal
3
+ RSpec.describe 'Create a new project' do
4
+ context 'skipping devise' do
5
+ before(:all) do
6
+ drop_dummy_database
7
+ remove_project_directory
8
+ run_gimbal('--skip-devise')
9
+ end
10
+
11
+ it 'leaves the devise gem disabled' do
12
+ gemfile = IO.read("#{project_path}/Gemfile")
13
+ expect(gemfile).to match(/^\# gem "devise"$/)
14
+ end
8
15
  end
9
16
 
10
- it 'ensures project specs pass' do
11
- Dir.chdir(project_path) do
12
- Bundler.with_clean_env do
13
- expect(`rake`).to match(/0 failures/)
17
+ context 'with default config' do
18
+ before(:all) do
19
+ drop_dummy_database
20
+ remove_project_directory
21
+ run_gimbal
22
+ end
23
+
24
+ it 'ensures project specs pass' do
25
+ Dir.chdir(project_path) do
26
+ Bundler.with_clean_env do
27
+ expect(`rake`).to match(/0 failures/)
28
+ end
14
29
  end
15
30
  end
16
- end
17
31
 
18
- it 'configs missing assets to raise in test' do
19
- test_config = IO.read("#{project_path}/config/environments/test.rb")
32
+ it 'configs missing assets to raise in test' do
33
+ test_config = IO.read("#{project_path}/config/environments/test.rb")
20
34
 
21
- expect(test_config).to match(
22
- /^ +config.assets.raise_runtime_errors = true$/,
23
- )
24
- end
35
+ expect(test_config).to match(
36
+ /^ +config.assets.raise_runtime_errors = true$/
37
+ )
38
+ end
25
39
 
26
- it 'configs raise_on_delivery errors in development' do
27
- dev_config = IO.read("#{project_path}/config/environments/development.rb")
40
+ it 'configs raise_on_delivery errors in development' do
41
+ dev_config = IO.read("#{project_path}/config/environments/development.rb")
28
42
 
29
- expect(dev_config).to match(
30
- /^ +config.action_mailer.raise_delivery_errors = true$/,
31
- )
32
- end
43
+ expect(dev_config).to match(
44
+ /^ +config.action_mailer.raise_delivery_errors = true$/,
45
+ )
46
+ end
33
47
 
34
- it 'configs development to send mail using letter_opener' do
35
- dev_config = IO.read("#{project_path}/config/environments/development.rb")
48
+ it 'configs development to send mail using letter_opener' do
49
+ dev_config = IO.read("#{project_path}/config/environments/development.rb")
36
50
 
37
- expect(dev_config).to match(
38
- /^ +config.action_mailer.delivery_method = :letter_opener/,
39
- )
40
- end
51
+ expect(dev_config).to match(
52
+ /^ +config.action_mailer.delivery_method = :letter_opener/,
53
+ )
54
+ end
41
55
 
42
- it 'configs development to raise on missing translations' do
43
- dev_config = IO.read("#{project_path}/config/environments/development.rb")
56
+ it 'configs development to raise on missing translations' do
57
+ dev_config = IO.read("#{project_path}/config/environments/development.rb")
44
58
 
45
- expect(dev_config).to match(
46
- /^ +config.action_view.raise_on_missing_translations = true/,
47
- )
48
- end
59
+ expect(dev_config).to match(
60
+ /^ +config.action_view.raise_on_missing_translations = true/
61
+ )
62
+ end
49
63
 
50
- it 'configs test to raise on missing translations' do
51
- dev_config = IO.read("#{project_path}/config/environments/test.rb")
64
+ it 'configs test to raise on missing translations' do
65
+ dev_config = IO.read("#{project_path}/config/environments/test.rb")
52
66
 
53
- expect(dev_config).to match(
54
- /^ +config.action_view.raise_on_missing_translations = true/,
55
- )
56
- end
67
+ expect(dev_config).to match(
68
+ /^ +config.action_view.raise_on_missing_translations = true/
69
+ )
70
+ end
57
71
 
58
- it 'configs bullet gem in development' do
59
- dev_config = IO.read("#{project_path}/config/environments/development.rb")
72
+ it 'configs bullet gem in development' do
73
+ dev_config = IO.read("#{project_path}/config/environments/development.rb")
60
74
 
61
- expect(dev_config).to match /^ +Bullet.enable = true$/
62
- expect(dev_config).to match /^ +Bullet.bullet_logger = true$/
63
- expect(dev_config).to match /^ +Bullet.rails_logger = true$/
64
- end
75
+ expect(dev_config).to match(/^ +Bullet.enable = true$/)
76
+ expect(dev_config).to match(/^ +Bullet.bullet_logger = true$/)
77
+ expect(dev_config).to match(/^ +Bullet.rails_logger = true$/)
78
+ end
65
79
 
66
- it 'raises on unpermitted parameters in all environments' do
67
- result = IO.read("#{project_path}/config/application.rb")
80
+ it 'enables the devise gem' do
81
+ gemfile = IO.read("#{project_path}/Gemfile")
82
+ expect(gemfile).to match(/^gem "devise"$/)
83
+ end
68
84
 
69
- expect(result).to match(
70
- /^ +config.action_controller.action_on_unpermitted_parameters = :raise$/
71
- )
72
- end
85
+ it 'raises on unpermitted parameters in all environments' do
86
+ result = IO.read("#{project_path}/config/application.rb")
73
87
 
74
- it 'configures generators' do
75
- result = IO.read("#{project_path}/config/application.rb")
88
+ expect(result).to match(
89
+ /^ +config.action_controller.action_on_unpermitted_parameters = :raise$/
90
+ )
91
+ end
76
92
 
77
- expect(result).to match(/^ +generate.helper false$/)
78
- expect(result).to match(/^ +generate.javascript_engine false$/)
79
- expect(result).to match(/^ +generate.request_specs false$/)
80
- expect(result).to match(/^ +generate.routing_specs false$/)
81
- expect(result).to match(/^ +generate.stylesheets false$/)
82
- expect(result).to match(/^ +generate.test_framework :rspec/)
83
- expect(result).to match(/^ +generate.view_specs false/)
84
- end
93
+ it 'configures generators' do
94
+ result = IO.read("#{project_path}/config/application.rb")
85
95
 
86
- it 'removes the default erb layout' do
87
- expect(File).not_to exist("#{project_path}/app/views/layouts/application.html.erb")
88
- end
96
+ expect(result).to match(/^ +generate.helper false$/)
97
+ expect(result).to match(/^ +generate.javascript_engine false$/)
98
+ expect(result).to match(/^ +generate.request_specs false$/)
99
+ expect(result).to match(/^ +generate.routing_specs false$/)
100
+ expect(result).to match(/^ +generate.stylesheets false$/)
101
+ expect(result).to match(/^ +generate.test_framework :rspec/)
102
+ expect(result).to match(/^ +generate.view_specs false/)
103
+ end
89
104
 
90
- it 'configures language in html element' do
91
- layout_path = '/app/views/layouts/application.html.haml'
92
- layout_file = IO.read("#{project_path}#{layout_path}")
93
- expect(layout_file).to match(/%html\{lang: 'en'\}/)
94
- end
105
+ it 'removes the default erb layout' do
106
+ expect(File).not_to exist(
107
+ "#{project_path}/app/views/layouts/application.html.erb"
108
+ )
109
+ end
95
110
 
96
- it 'evaluates en.yml.erb' do
97
- locales_en_file = IO.read("#{project_path}/config/locales/en.yml")
98
- app_name = GimbalTestHelpers::APP_NAME
111
+ it 'configures language in html element' do
112
+ layout_path = '/app/views/layouts/application.html.haml'
113
+ layout_file = IO.read("#{project_path}#{layout_path}")
114
+ expect(layout_file).to match(/%html\{lang: 'en'\}/)
115
+ end
99
116
 
100
- expect(locales_en_file).to match(/application: #{app_name.humanize}/)
101
- end
117
+ it 'evaluates en.yml.erb' do
118
+ locales_en_file = IO.read("#{project_path}/config/locales/en.yml")
119
+ app_name = GimbalTestHelpers::APP_NAME
102
120
 
103
- it 'adds support file for action mailer' do
104
- expect(File).to exist("#{project_path}/spec/support/action_mailer.rb")
105
- end
121
+ expect(locales_en_file).to match(/application: #{app_name.humanize}/)
122
+ end
106
123
 
107
- it 'adds support file for factory girl' do
108
- expect(File).to exist("#{project_path}/spec/support/factory_girl.rb")
109
- end
124
+ it 'adds support file for action mailer' do
125
+ expect(File).to exist("#{project_path}/spec/support/action_mailer.rb")
126
+ end
110
127
 
111
- it 'adds support file for database cleaner' do
112
- expect(File).to exist("#{project_path}/spec/support/database_cleaner.rb")
113
- end
128
+ it 'adds support file for factory girl' do
129
+ expect(File).to exist("#{project_path}/spec/support/factory_girl.rb")
130
+ end
114
131
 
115
- it 'adds support file for database cleaner' do
116
- expect(File).to exist("#{project_path}/spec/support/shoulda_matchers.rb")
117
- end
132
+ it 'adds support file for database cleaner' do
133
+ expect(File).to exist("#{project_path}/spec/support/database_cleaner.rb")
134
+ end
118
135
 
119
- it 'adds support file for i18n' do
120
- expect(File).to exist("#{project_path}/spec/support/i18n.rb")
121
- end
136
+ it 'adds support file for database cleaner' do
137
+ expect(File).to exist("#{project_path}/spec/support/shoulda_matchers.rb")
138
+ end
122
139
 
123
- it 'adds specs for missing or unused translations' do
124
- expect(File).to exist("#{project_path}/spec/i18n_spec.rb")
125
- end
140
+ it 'adds support file for i18n' do
141
+ expect(File).to exist("#{project_path}/spec/support/i18n.rb")
142
+ end
126
143
 
127
- it 'configs i18n-tasks' do
128
- expect(File).to exist("#{project_path}/config/i18n-tasks.yml")
129
- end
144
+ it 'adds specs for missing or unused translations' do
145
+ expect(File).to exist("#{project_path}/spec/i18n_spec.rb")
146
+ end
130
147
 
131
- it 'creates .ruby-version from Gimbal .ruby-version' do
132
- ruby_version_file = IO.read("#{project_path}/.ruby-version")
148
+ it 'configs i18n-tasks' do
149
+ expect(File).to exist("#{project_path}/config/i18n-tasks.yml")
150
+ end
133
151
 
134
- expect(ruby_version_file).to eq "#{RUBY_VERSION}\n"
152
+ it 'creates .ruby-version from Gimbal .ruby-version' do
153
+ ruby_version_file = IO.read("#{project_path}/.ruby-version")
154
+
155
+ expect(ruby_version_file).to eq "#{RUBY_VERSION}\n"
156
+ end
135
157
  end
136
158
  end
@@ -6,6 +6,7 @@ ruby "<%= Gimbal::RUBY_VERSION %>"
6
6
  gem "autoprefixer-rails"
7
7
  gem "coffee-rails", "~> 4.1.0"
8
8
  # gem "delayed_job_active_record"
9
+ # gem "devise"
9
10
  gem "flutie"
10
11
  gem "haml-rails", "~> 0.9"
11
12
  # gem "high_voltage"
@@ -38,7 +39,7 @@ group :development, :test do
38
39
  gem "factory_girl_rails"
39
40
  gem "i18n-tasks"
40
41
  gem "pry-rails"
41
- gem "rspec-rails", "~> 3.3.0"
42
+ gem "rspec-rails", "~> 3.4"
42
43
  end
43
44
 
44
45
  group :test do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gimbal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Pascoe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-09 00:00:00.000000000 Z
11
+ date: 2016-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.2'
47
+ version: '3.4'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.2'
54
+ version: '3.4'
55
55
  description: |
56
56
  Based on Suspenders from thoughtbot, Gimbal is a base Rails project I use
57
57
  to streamline the beginning of my Rails projects.
@@ -64,8 +64,11 @@ extra_rdoc_files:
64
64
  - LICENSE
65
65
  files:
66
66
  - ".gitignore"
67
+ - ".hound.yml"
68
+ - ".ruby-style.yml"
67
69
  - ".ruby-version"
68
70
  - ".travis.yml"
71
+ - CHANGELOG.md
69
72
  - Gemfile
70
73
  - LICENSE
71
74
  - README.md