voyage 1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/.ruby-version +1 -0
- data/.travis.yml +11 -0
- data/CONTRIBUTING.md +54 -0
- data/Gemfile +3 -0
- data/LICENSE +21 -0
- data/NEWS.md +510 -0
- data/README.md +233 -0
- data/RELEASING.md +19 -0
- data/Rakefile +8 -0
- data/USAGE +13 -0
- data/bin/rake +16 -0
- data/bin/rspec +16 -0
- data/bin/setup +13 -0
- data/bin/suspenders +23 -0
- data/bin/voyage +20 -0
- data/lib/suspenders.rb +6 -0
- data/lib/suspenders/actions.rb +33 -0
- data/lib/suspenders/adapters/heroku.rb +127 -0
- data/lib/suspenders/app_builder.rb +486 -0
- data/lib/suspenders/generators/app_generator.rb +287 -0
- data/lib/suspenders/generators/static_generator.rb +9 -0
- data/lib/suspenders/version.rb +8 -0
- data/lib/voyage.rb +9 -0
- data/lib/voyage/app_builder.rb +469 -0
- data/lib/voyage/generators/app_generator.rb +118 -0
- data/lib/voyage/templates/Gemfile.erb +118 -0
- data/lib/voyage/templates/README.md.erb +28 -0
- data/lib/voyage/templates/about.html.erb +1 -0
- data/lib/voyage/templates/application.js +19 -0
- data/lib/voyage/templates/config_locales_en.yml.erb +25 -0
- data/lib/voyage/templates/controller_helpers.rb +14 -0
- data/lib/voyage/templates/custom_cancan_matchers.rb +54 -0
- data/lib/voyage/templates/rails_helper.rb.erb +99 -0
- data/lib/voyage/templates/seeder.rb.erb +46 -0
- data/lib/voyage/templates/seeds.rb.erb +50 -0
- data/lib/voyage/templates/simplecov.rb +31 -0
- data/lib/voyage/templates/users_index.html.slim.erb +25 -0
- data/lib/voyage/templates/welcome.html.erb +11 -0
- data/lib/voyage/version.rb +8 -0
- data/spec/adapters/heroku_spec.rb +57 -0
- data/spec/fakes/bin/heroku +5 -0
- data/spec/fakes/bin/hub +5 -0
- data/spec/features/cli_help_spec.rb +36 -0
- data/spec/features/github_spec.rb +16 -0
- data/spec/features/heroku_spec.rb +75 -0
- data/spec/features/new_project_spec.rb +270 -0
- data/spec/spec_helper.rb +20 -0
- data/spec/support/fake_github.rb +21 -0
- data/spec/support/fake_heroku.rb +53 -0
- data/spec/support/suspenders.rb +83 -0
- data/suspenders.gemspec +34 -0
- data/templates/Gemfile.erb +64 -0
- data/templates/Procfile +2 -0
- data/templates/README.md.erb +28 -0
- data/templates/_analytics.html.erb +7 -0
- data/templates/_css_overrides.html.erb +7 -0
- data/templates/_flashes.html.erb +7 -0
- data/templates/_javascript.html.erb +12 -0
- data/templates/action_mailer.rb +5 -0
- data/templates/app.json.erb +42 -0
- data/templates/application.scss +9 -0
- data/templates/bin_deploy +12 -0
- data/templates/bin_setup +21 -0
- data/templates/bin_setup_review_app.erb +19 -0
- data/templates/browserslist +3 -0
- data/templates/bundler_audit.rake +12 -0
- data/templates/capybara_webkit.rb +5 -0
- data/templates/circle.yml.erb +6 -0
- data/templates/config_locales_en.yml.erb +19 -0
- data/templates/database_cleaner_rspec.rb +21 -0
- data/templates/dev.rake +12 -0
- data/templates/dotfiles/.ctags +2 -0
- data/templates/dotfiles/.env +13 -0
- data/templates/errors.rb +34 -0
- data/templates/factories.rb +2 -0
- data/templates/factory_girl_rspec.rb +3 -0
- data/templates/flashes_helper.rb +5 -0
- data/templates/hound.yml +14 -0
- data/templates/i18n.rb +3 -0
- data/templates/json_encoding.rb +1 -0
- data/templates/postgresql_database.yml.erb +21 -0
- data/templates/puma.rb +28 -0
- data/templates/rack_mini_profiler.rb +5 -0
- data/templates/rails_helper.rb +22 -0
- data/templates/secrets.yml +14 -0
- data/templates/shoulda_matchers_config_rspec.rb +6 -0
- data/templates/smtp.rb +13 -0
- data/templates/spec_helper.rb +29 -0
- data/templates/suspenders_gitignore +13 -0
- data/templates/suspenders_layout.html.erb.erb +22 -0
- metadata +207 -0
@@ -0,0 +1,118 @@
|
|
1
|
+
module Suspenders
|
2
|
+
class AppGenerator < Rails::Generators::AppGenerator
|
3
|
+
class_option :skip_turbolinks, type: :boolean, default: false,
|
4
|
+
desc: "Skip turbolinks gem"
|
5
|
+
|
6
|
+
class_option :skip_bundle, type: :boolean, aliases: "-B", default: true,
|
7
|
+
desc: "Don't run bundle install"
|
8
|
+
|
9
|
+
def self.start
|
10
|
+
preflight_check
|
11
|
+
accept_defaults
|
12
|
+
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.preflight_check
|
17
|
+
puts '"bundle install" will be run for the current ruby version and gemset. Press enter to continue...'
|
18
|
+
prompt = STDIN.gets.chomp
|
19
|
+
|
20
|
+
unless prompt.empty?
|
21
|
+
puts "Skipping install. Please create a ruby gemset first!"
|
22
|
+
exit 1
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.accept_defaults
|
27
|
+
Suspenders::AppBuilder.new.accept_defaults
|
28
|
+
end
|
29
|
+
|
30
|
+
def finish_template
|
31
|
+
invoke :suspenders_customization
|
32
|
+
invoke :use_slim
|
33
|
+
invoke :install_devise
|
34
|
+
invoke :customize_application_js
|
35
|
+
invoke :require_files_in_lib
|
36
|
+
invoke :generate_ruby_version_and_gemset
|
37
|
+
invoke :generate_data_migrations
|
38
|
+
invoke :add_high_voltage_static_pages
|
39
|
+
invoke :generate_refills
|
40
|
+
invoke :generate_test_environment
|
41
|
+
invoke :update_test_environment
|
42
|
+
|
43
|
+
|
44
|
+
# Do these last
|
45
|
+
invoke :rake_db_setup
|
46
|
+
invoke :configure_rvm_prepend_bin_to_path
|
47
|
+
invoke :actually_setup_spring
|
48
|
+
invoke :bon_voyage
|
49
|
+
super
|
50
|
+
end
|
51
|
+
|
52
|
+
def use_slim
|
53
|
+
build :use_slim
|
54
|
+
end
|
55
|
+
|
56
|
+
def install_devise
|
57
|
+
build :install_devise
|
58
|
+
end
|
59
|
+
|
60
|
+
def customize_application_js
|
61
|
+
build :customize_application_js
|
62
|
+
end
|
63
|
+
|
64
|
+
def require_files_in_lib
|
65
|
+
build :require_files_in_lib
|
66
|
+
end
|
67
|
+
|
68
|
+
def generate_ruby_version_and_gemset
|
69
|
+
build :generate_ruby_version_and_gemset
|
70
|
+
end
|
71
|
+
|
72
|
+
def generate_data_migrations
|
73
|
+
build :generate_data_migrations
|
74
|
+
end
|
75
|
+
|
76
|
+
def add_high_voltage_static_pages
|
77
|
+
build :add_high_voltage_static_pages
|
78
|
+
end
|
79
|
+
|
80
|
+
def generate_refills
|
81
|
+
build :generate_refills
|
82
|
+
end
|
83
|
+
|
84
|
+
def generate_test_environment
|
85
|
+
build :generate_test_environment
|
86
|
+
end
|
87
|
+
|
88
|
+
def update_test_environment
|
89
|
+
build :update_test_environment
|
90
|
+
end
|
91
|
+
|
92
|
+
def rake_db_setup
|
93
|
+
build :rake_db_setup
|
94
|
+
end
|
95
|
+
|
96
|
+
def configure_rvm_prepend_bin_to_path
|
97
|
+
build :configure_rvm_prepend_bin_to_path
|
98
|
+
end
|
99
|
+
|
100
|
+
def setup_spring
|
101
|
+
# do nothing so we can run generators after suspenders_customization runs
|
102
|
+
end
|
103
|
+
|
104
|
+
def actually_setup_spring
|
105
|
+
say "Springifying binstubs"
|
106
|
+
build :setup_spring
|
107
|
+
end
|
108
|
+
|
109
|
+
def outro
|
110
|
+
# need this to be nothing so it doesn't output any text when
|
111
|
+
# :suspenders_customization runs and it invokes this method
|
112
|
+
end
|
113
|
+
|
114
|
+
def bon_voyage
|
115
|
+
say 'Congratulations! You just pulled our suspenders, Headway style!'
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
# rubocop:disable Metrics/LineLength
|
2
|
+
source "https://rubygems.org"
|
3
|
+
|
4
|
+
ruby "<%= Voyage::RUBY_VERSION %>"
|
5
|
+
#ruby-gemset=<%= @app_name %>
|
6
|
+
|
7
|
+
gem "autoprefixer-rails"
|
8
|
+
gem "bourbon", "~> 4.2.0"
|
9
|
+
gem "coffee-rails", "~> 4.1.0"
|
10
|
+
gem "delayed_job_active_record"
|
11
|
+
gem "flutie"
|
12
|
+
gem "high_voltage"
|
13
|
+
gem "jquery-rails"
|
14
|
+
gem "neat", "~> 1.7.0"
|
15
|
+
gem "normalize-rails", "~> 3.0.0"
|
16
|
+
gem "pg"
|
17
|
+
gem "rack-canonical-host"
|
18
|
+
gem "rails", "<%= Voyage::RAILS_VERSION %>"
|
19
|
+
gem "recipient_interceptor"
|
20
|
+
gem "sass-rails", "~> 5.0"
|
21
|
+
gem "simple_form"
|
22
|
+
gem "title"
|
23
|
+
gem "uglifier"
|
24
|
+
|
25
|
+
# Customizations
|
26
|
+
gem 'responders' # respond to json/html/js more easily in controllers
|
27
|
+
gem 'slim-rails' # templating
|
28
|
+
gem 'font-awesome-rails'
|
29
|
+
gem 'dynamic_form' # for custom messages without the database column
|
30
|
+
gem 'nested_form_fields' # Dynamically add and remove nested has_many association fields in a Ruby on Rails form
|
31
|
+
gem 'devise'
|
32
|
+
|
33
|
+
gem 'turbolinks'
|
34
|
+
gem 'jquery-turbolinks'
|
35
|
+
gem 'jquery-ui-rails'
|
36
|
+
gem 'nprogress-rails' # Show request progress when a link is clicked
|
37
|
+
gem 'gon' # pass variables betwween rails and javascript. Several examples in the application_controller.rb
|
38
|
+
|
39
|
+
gem 'cancancan' # authorization library
|
40
|
+
gem 'canard', git: 'https://github.com/james2m/canard.git' # ties into cancancan, adds roles for the user
|
41
|
+
|
42
|
+
gem 'friendly_id' # slugs in the url auto-generated
|
43
|
+
gem 'paper_trail'
|
44
|
+
gem 'settingslogic' # yaml settings (project wide, non-editable), this is implemented with the model Settings.rb
|
45
|
+
|
46
|
+
# Want these here for debugging on production
|
47
|
+
gem 'pry-rails' # better REPL than irb
|
48
|
+
gem 'pry-awesome_print'
|
49
|
+
gem 'pry-byebug'
|
50
|
+
gem 'pry-remote'
|
51
|
+
|
52
|
+
gem 'librato-rails' # general monitoring of things
|
53
|
+
gem 'nondestructive_migrations'
|
54
|
+
gem 'carrierwave'
|
55
|
+
gem 'mini_magick'
|
56
|
+
gem 'fog'
|
57
|
+
gem 'whenever', require: false # provides a clear syntax for writing and deploying cron jobs
|
58
|
+
gem 'whenever-web'
|
59
|
+
|
60
|
+
group :development do
|
61
|
+
gem "quiet_assets"
|
62
|
+
gem "refills"
|
63
|
+
gem "spring"
|
64
|
+
gem "spring-commands-rspec"
|
65
|
+
gem "web-console"
|
66
|
+
|
67
|
+
# Customizations
|
68
|
+
gem 'annotate' # annotate models automatically when rake db:migrate is called
|
69
|
+
gem 'rails-erd' # auto gen ERD Diagram of models in the app on rake db:migrate
|
70
|
+
gem 'zenflow', github: 'zencoder/zenflow'
|
71
|
+
gem 'better_errors' # A better error page for rails when a local 500 (or similar) is thrown
|
72
|
+
gem 'binding_of_caller' # REPL in better_errors to debug in the browser at the point at which it failed
|
73
|
+
gem 'meta_request' # for chrome rails console plugin found here: https://chrome.google.com/webstore/detail/railspanel/gjpfobpafnhjhbajcjgccbbdofdckggg?hl=en-US
|
74
|
+
gem 'bitters', '~> 1.2'
|
75
|
+
gem 'redcarpet' # used to render the readme inside a static welcome page from the high_voltage gem
|
76
|
+
end
|
77
|
+
|
78
|
+
group :development, :test do
|
79
|
+
gem "awesome_print"
|
80
|
+
gem "bullet"
|
81
|
+
gem "bundler-audit", require: false
|
82
|
+
gem "dotenv-rails"
|
83
|
+
gem "factory_girl_rails"
|
84
|
+
gem "rspec-rails", "~> 3.4.0"
|
85
|
+
|
86
|
+
# Customizations
|
87
|
+
gem 'faker' # provides auto generated names for factories, can be customized
|
88
|
+
|
89
|
+
gem 'rubocop', '0.36.0', require: false # lock to keep in sync with Hound
|
90
|
+
gem 'rubocop-rspec', require: false
|
91
|
+
|
92
|
+
gem 'letter_opener' # auto-open emails when they're sent
|
93
|
+
end
|
94
|
+
|
95
|
+
group :development, :staging do
|
96
|
+
gem "rack-mini-profiler", require: false
|
97
|
+
end
|
98
|
+
|
99
|
+
group :test do
|
100
|
+
gem "database_cleaner"
|
101
|
+
gem "formulaic"
|
102
|
+
gem "launchy"
|
103
|
+
gem "shoulda-matchers"
|
104
|
+
gem "simplecov", require: false
|
105
|
+
gem "timecop"
|
106
|
+
gem "webmock"
|
107
|
+
|
108
|
+
# Customizations
|
109
|
+
gem 'cadre' # highlights code coverage in vim
|
110
|
+
|
111
|
+
gem 'capybara'
|
112
|
+
gem 'poltergeist'
|
113
|
+
gem 'selenium-webdriver' # brew install chromedriver
|
114
|
+
end
|
115
|
+
|
116
|
+
group :staging, :production do
|
117
|
+
gem "rack-timeout"
|
118
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# <%= app_name.humanize %>
|
2
|
+
|
3
|
+
## Getting Started
|
4
|
+
|
5
|
+
After you have cloned this repo, run this setup script to set up your machine
|
6
|
+
with the necessary dependencies to run and test this app:
|
7
|
+
|
8
|
+
% ./bin/setup
|
9
|
+
|
10
|
+
It assumes you have a machine equipped with Ruby, Postgres, etc. If not, set up
|
11
|
+
your machine with [this script].
|
12
|
+
|
13
|
+
[this script]: https://github.com/thoughtbot/laptop
|
14
|
+
|
15
|
+
After setting up, you can run the application using [Heroku Local]:
|
16
|
+
|
17
|
+
% heroku local
|
18
|
+
|
19
|
+
[Heroku Local]: https://devcenter.heroku.com/articles/heroku-local
|
20
|
+
|
21
|
+
## Guidelines
|
22
|
+
|
23
|
+
Use the following guides for getting things done, programming well, and
|
24
|
+
programming in style.
|
25
|
+
|
26
|
+
* [Protocol](http://github.com/thoughtbot/guides/blob/master/protocol)
|
27
|
+
* [Best Practices](http://github.com/thoughtbot/guides/blob/master/best-practices)
|
28
|
+
* [Style](http://github.com/thoughtbot/guides/blob/master/style)
|
@@ -0,0 +1 @@
|
|
1
|
+
<h1>Customize me, please!</h1>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require jquery
|
14
|
+
//= require jquery.turbolinks
|
15
|
+
//= require jquery_ujs
|
16
|
+
//
|
17
|
+
// ... your other scripts here ...
|
18
|
+
//
|
19
|
+
//= require turbolinks
|
@@ -0,0 +1,25 @@
|
|
1
|
+
en:
|
2
|
+
date:
|
3
|
+
formats:
|
4
|
+
default:
|
5
|
+
'%m/%d/%Y'
|
6
|
+
short:
|
7
|
+
'%m/%d/%y'
|
8
|
+
with_weekday:
|
9
|
+
'%a %m/%d/%y'
|
10
|
+
|
11
|
+
time:
|
12
|
+
formats:
|
13
|
+
default:
|
14
|
+
'%a, %b %-d, %Y at %r'
|
15
|
+
date:
|
16
|
+
'%b %-d, %Y'
|
17
|
+
short:
|
18
|
+
'%B %d'
|
19
|
+
time_with_period:
|
20
|
+
'%-l:%M %p'
|
21
|
+
date_and_time_with_period:
|
22
|
+
'%m/%d/%Y - %-l:%M %p'
|
23
|
+
|
24
|
+
titles:
|
25
|
+
application: <%= app_name.humanize %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module ControllerHelpers
|
2
|
+
def sign_in(user = double('user'))
|
3
|
+
if user.nil?
|
4
|
+
allow(request.env['warden'])
|
5
|
+
.to receive(:authenticate!)
|
6
|
+
.and_throw(:warden, { scope: :user })
|
7
|
+
|
8
|
+
allow(controller).to receive(:current_user).and_return(nil)
|
9
|
+
else
|
10
|
+
allow(request.env['warden']).to receive(:authenticate!).and_return(user)
|
11
|
+
allow(controller).to receive(:current_user).and_return(user)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
rspec_module = defined?(RSpec::Core) ? 'RSpec' : 'Spec' # RSpec 1 compatability
|
2
|
+
|
3
|
+
if rspec_module == 'RSpec'
|
4
|
+
require 'rspec/core'
|
5
|
+
require 'rspec/expectations'
|
6
|
+
else
|
7
|
+
ActiveSupport::Deprecation
|
8
|
+
.warn('RSpec < 3 will not be supported in the CanCanCan >= 2.0.0')
|
9
|
+
end
|
10
|
+
|
11
|
+
# Allow passing args like
|
12
|
+
#
|
13
|
+
# be_able_to :read, thing
|
14
|
+
#
|
15
|
+
# or
|
16
|
+
#
|
17
|
+
# be_able_to [:read, :update], thing
|
18
|
+
#
|
19
|
+
Kernel.const_get(rspec_module)::Matchers.define :be_able_to do |*args|
|
20
|
+
match do |ability|
|
21
|
+
actions = Array.wrap(args[0])
|
22
|
+
actions.all? { |action| ability.can?(action, *args[1..-1]) }
|
23
|
+
end
|
24
|
+
|
25
|
+
# Check that RSpec is < 2.99
|
26
|
+
if !respond_to?(:failure_message) && respond_to?(:failure_message_for_should)
|
27
|
+
alias :failure_message :failure_message_for_should
|
28
|
+
alias :failure_message_when_negated :failure_message_for_should_not
|
29
|
+
end
|
30
|
+
|
31
|
+
failure_message do
|
32
|
+
resource = args[1]
|
33
|
+
if resource.instance_of?(Class)
|
34
|
+
"expected to be able to #{args.map(&:to_s).join(' ')}"
|
35
|
+
else
|
36
|
+
"expected to be able to #{args.map(&:inspect).join(' ')}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
failure_message_when_negated do
|
41
|
+
resource = args[1]
|
42
|
+
if resource.instance_of?(Class)
|
43
|
+
"expected not to be able to #{args.map(&:to_s).join(' ')}"
|
44
|
+
else
|
45
|
+
"expected not to be able to #{args.map(&:inspect).join(' ')}"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
description do
|
50
|
+
action = args[0].to_s
|
51
|
+
resource = args[1].class.name
|
52
|
+
"be able to #{action} #{resource}"
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.command_name 'Rspec'
|
3
|
+
|
4
|
+
ENV["RAILS_ENV"] = "test"
|
5
|
+
|
6
|
+
require File.expand_path("../../config/environment", __FILE__)
|
7
|
+
abort("DATABASE_URL environment variable is set") if ENV["DATABASE_URL"]
|
8
|
+
|
9
|
+
require 'spec_helper'
|
10
|
+
require "rspec/rails"
|
11
|
+
require 'factory_girl'
|
12
|
+
require 'capybara/rspec'
|
13
|
+
require 'capybara/poltergeist'
|
14
|
+
require 'shoulda/matchers'
|
15
|
+
require 'database_cleaner'
|
16
|
+
require 'cadre/rspec3'
|
17
|
+
# require 'sidekiq/testing'
|
18
|
+
# require 'paperclip/matchers'
|
19
|
+
|
20
|
+
# Checks for pending migrations before tests are run.
|
21
|
+
# If you are not using ActiveRecord, you can remove this line.
|
22
|
+
ActiveRecord::Migration.maintain_test_schema!
|
23
|
+
|
24
|
+
# Requires supporting ruby files with custom matchers and macros, etc,
|
25
|
+
# in spec/support/ and its subdirectories.
|
26
|
+
Dir[Rails.root.join("spec/support/**/*.rb")].sort.each { |file| require file }
|
27
|
+
|
28
|
+
module Features
|
29
|
+
# Extend this module in spec/support/features/*.rb
|
30
|
+
include Formulaic::Dsl
|
31
|
+
end
|
32
|
+
|
33
|
+
RSpec.configure do |config|
|
34
|
+
config.include Features, type: :feature # not sure what this does: https://github.com/thoughtbot/suspenders/issues/142
|
35
|
+
config.infer_base_class_for_anonymous_controllers = false # not sure what this does: https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs/anonymous-controller
|
36
|
+
|
37
|
+
config.use_transactional_fixtures = false
|
38
|
+
|
39
|
+
config.include Devise::TestHelpers, type: :controller
|
40
|
+
config.include ControllerHelpers, type: :controller
|
41
|
+
# config.include Paperclip::Shoulda::Matchers
|
42
|
+
|
43
|
+
Capybara.javascript_driver = :poltergeist
|
44
|
+
Capybara.asset_host = 'http://localhost:3000'
|
45
|
+
|
46
|
+
# Can be used by passing driver: :selenium_chrome to a test
|
47
|
+
Capybara.register_driver :selenium_chrome do |app|
|
48
|
+
Capybara::Selenium::Driver.new(app, browser: :chrome)
|
49
|
+
end
|
50
|
+
|
51
|
+
config.after(:each) do
|
52
|
+
Capybara.current_driver = Capybara.default_driver
|
53
|
+
end
|
54
|
+
|
55
|
+
config.before(:each) do |spec|
|
56
|
+
Capybara.current_driver = :selenium_chrome if spec.metadata[:browser]
|
57
|
+
|
58
|
+
# Sidekiq::Testing.fake!
|
59
|
+
# # This runs jobs immediately in the same thread
|
60
|
+
# Sidekiq::Testing.inline! if spec.metadata[:inline]
|
61
|
+
end
|
62
|
+
|
63
|
+
config.before(:suite) do
|
64
|
+
# Load seed data to bootstrap the app with things the real app will have at
|
65
|
+
# launch like States, roles, etc.
|
66
|
+
require_relative '../lib/seeder'
|
67
|
+
require 'rake'
|
68
|
+
<%= "#{app_name.camelize}::Application.load_tasks" %>
|
69
|
+
Rake::Task['db:seed'].invoke
|
70
|
+
end
|
71
|
+
|
72
|
+
config.after(:each) do
|
73
|
+
if Rails.env.test? || Rails.env.cucumber?
|
74
|
+
FileUtils.rm_rf(Dir["#{Rails.root}/spec/support/uploads"])
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# Cadre (code coverage)
|
79
|
+
config.add_formatter(Cadre::RSpec3::NotifyOnCompleteFormatter)
|
80
|
+
config.add_formatter(Cadre::RSpec3::QuickfixFormatter)
|
81
|
+
end
|
82
|
+
|
83
|
+
# RSpec::Sidekiq.configure do |config|
|
84
|
+
# # Clears all job queues before each example
|
85
|
+
# config.clear_all_enqueued_jobs = true # default => true
|
86
|
+
|
87
|
+
# # Whether to use terminal colours when outputting messages
|
88
|
+
# config.enable_terminal_colours = true # default => true
|
89
|
+
|
90
|
+
# # Warn when jobs are not enqueued to Redis but to a job array
|
91
|
+
# config.warn_when_jobs_not_processed_by_sidekiq = true # default => true
|
92
|
+
# end
|
93
|
+
|
94
|
+
Shoulda::Matchers.configure do |config|
|
95
|
+
config.integrate do |with|
|
96
|
+
with.test_framework :rspec
|
97
|
+
with.library :rails
|
98
|
+
end
|
99
|
+
end
|