Last active
January 27, 2016 10:22
-
-
Save hauleth/d7dd5c7dd1000501d3ee to your computer and use it in GitHub Desktop.
Hauleth's template
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
AllCops: | |
Exclude: | |
- bin/* | |
- config/**/* | |
- coverage/**/* | |
- db/**/* | |
- doc/**/* | |
- log/**/* | |
- public/**/* | |
- script/**/* | |
- tmp/**/* | |
- vendor/**/* | |
RunRailsCops: true | |
MethodCalledOnDoEndBlock: | |
Enabled: true | |
ClassAndModuleChildren: | |
Enabled: false | |
Documentation: | |
Exclude: | |
- app/api/**/* | |
- app/controllers/**/* | |
- app/helpers/**/* | |
- app/presenters/**/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# vi: ft=ruby | |
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[ | |
SimpleCov::Formatter::HTMLFormatter | |
] | |
SimpleCov.use_merging true | |
SimpleCov.start 'rails' do | |
add_filter '/test/' | |
add_filter '/features/' | |
add_filter '/config/' | |
add_filter '/lib/' | |
add_filter '/vendor/' | |
# Groups | |
add_group 'Controllers', 'app/controllers' | |
add_group 'API', 'app/api' | |
add_group 'Models', 'app/models' | |
add_group 'Decorators', 'app/decorators' | |
add_group 'Helpers', 'app/helpers' | |
add_group 'Mailers', 'app/mailers' | |
add_group 'Uploaders', 'app/uploaders' | |
add_group 'Jobs', 'app/jobs' | |
add_group 'Services', 'app/services' | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
app: | |
build: . | |
volumes: | |
- ".:/app" | |
environment: | |
DATABASE_URL: postgresql://postgres@db/ | |
web: | |
extends: | |
file: docker-compose.yml | |
service: app | |
command: puma -c config/puma.rb -p 5000 | |
ports: | |
- 5000:5000 | |
links: | |
- db | |
db: | |
image: postgres:9.4 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM ruby:2.2.2 | |
RUN apt-get update -qq && apt-get install -y npm && \ | |
ln -s /usr/bin/nodejs /usr/bin/node | |
RUN mkdir /app | |
WORKDIR /app | |
ADD Gemfile /app/Gemfile | |
ADD Gemfile.lock /app/Gemfile.lock | |
RUN bundle install | |
ADD . /app | |
ENTRYPOINT ["bundle", "exec"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Hauleth's Rails app template | |
require 'net/http' | |
# Sass helpers and nicer views | |
gem 'autoprefixer-rails' | |
# Faster HTML escaping | |
gem 'escape_utils' | |
# Better views | |
gem 'curly-templates', '~> 2.3' | |
# Translations | |
gem 'r18n-rails' | |
# Inline email CSS | |
gem 'roadie' | |
gem 'roadie-rails' | |
# Better logging | |
gem 'lograge' | |
# Dokku/Heroku deployment | |
gem 'rails_12factor' | |
# Better server | |
gem 'unicorn' | |
gem_group :doc do | |
gem 'yard', require: false | |
gem 'yard-tomdoc', require: false | |
end | |
gem_group :development do | |
# Check for N+1 queries | |
gem 'bullet' | |
# Find missing indices | |
gem 'lol_dba' | |
# Benchmarks | |
gem 'derailed' | |
gem 'stackprof' | |
# Check popular vulnerabilities | |
gem 'brakeman', require: false | |
gem 'rubocop', require: false | |
# Profile your app | |
gem 'rack-mini-profiler' | |
gem 'flamegraph' | |
# Check Rails internals in Chrome | |
gem 'meta_request' | |
gem 'quiet_assets' | |
# Create model annotations | |
gem 'annotate' | |
# STFU | |
gem 'quiet_assets' | |
end | |
gem_group :development, :test do | |
# Use Spinach for acceptance tests | |
gem 'spinach-rails' | |
# Fabricate models instead of fixtures | |
gem 'fabrication' | |
gem 'ffaker' | |
if RUBY_VERSION =~ /^2\./ | |
# Enable debugging in Ruby 2 | |
gem 'byebug' | |
gem 'pry-byebug' | |
end | |
gem 'pry-rails' | |
end | |
gem_group :test do | |
# Use Double Ruby (RR) as mock mocking library | |
gem 'rr', require: false | |
# Use MiniTest::Spec instead of MiniTest::Unit | |
gem 'minitest-rails' | |
gem 'minitest-reporters', require: false | |
gem 'minitest-extra-matchers', require: false | |
gem 'minitest-capybara' | |
# Coverage reports | |
gem 'simplecov', require: false | |
# JavaScript test runner | |
gem 'konacha' | |
gem 'database_cleaner' | |
end | |
# Configure generators | |
application <<-CONF | |
config.generators do |g| | |
# Use Fabrication gem | |
g.test_framework :minitest, fixture_replacement: :fabrication, spec: true | |
g.fixture_replacement :fabrication, dir: 'test/fabricators' | |
# Do not generate redundant | |
g.helper false | |
g.stylesheets false | |
g.javascripts false | |
end | |
CONF | |
if yes?('Would you like to add Sorcery?') | |
gem 'sorcery' | |
# Automatically add Pundit gem | |
gem 'pundit' | |
after_bundle do | |
model_name = ask('What would you like the user model to be called? [user]') | |
model_name = 'user' if model_name.blank? | |
modules = ask('Any additional modules (space separated, available http_basic_auth, external, remember_me, reset_password, user_activation)?').split(/[\n\t, ]/) | |
# Generate Sorcery model | |
generate 'sorcery:install', '--model', model_name, *modules | |
generate 'pundit:install' | |
end | |
end | |
run 'rm README.rdoc' | |
run 'touch README.md' | |
file '.yardopts', <<-YARD | |
--hide-void-return | |
--no-private | |
--plugin tomdoc | |
--markup markdown | |
--markup-provider redcarpet | |
YARD | |
file '.simplecov', Net::HTTP.get(URI.parse('https://gist.githubusercontent.com/hauleth/d7dd5c7dd1000501d3ee/raw/.simplecov')) | |
file '.rubocop.yml', Net::HTTP.get(URI.parse('https://gist.githubusercontent.com/hauleth/d7dd5c7dd1000501d3ee/raw/.rubocop.yml')) | |
file 'Dockerfile', Net::HTTP.get(URI.parse('https://gist.githubusercontent.com/hauleth/d7dd5c7dd1000501d3ee/raw/Dockerfile')) | |
file 'docker-compose.yml', Net::HTTP.get(URI.parse('https://gist.githubusercontent.com/hauleth/d7dd5c7dd1000501d3ee/raw/docker-compose.yml')) | |
file 'config/puma.rb', Net::HTTP.get(URI.parse('https://gist.githubusercontent.com/hauleth/d7dd5c7dd1000501d3ee/raw/puma.rb')) | |
file 'test/test_helper.rb', Net::HTTP.get(URI.parse('https://gist.githubusercontent.com/hauleth/d7dd5c7dd1000501d3ee/raw/test_helper.rb')) | |
initializer 'escape_utils.rb', <<-DOC | |
begin | |
require 'escape_utils/html/rack' # to patch Rack::Utils | |
require 'escape_utils/html/erb' # to patch ERB::Util | |
require 'escape_utils/html/cgi' # to patch CGI | |
rescue LoadError | |
Rails.logger.info 'Escape_utils is not in the gemfile' | |
end | |
DOC | |
after_bundle do | |
system 'rubocop -RaD .' | |
# Initialize Git repository | |
git :init | |
git add: '.' | |
git commit: '-nm "Initial commit"' | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Coverage reports | |
require 'simplecov' | |
ENV['RAILS_ENV'] ||= 'test' | |
require File.expand_path('../../config/environment', __FILE__) | |
require 'rails/test_help' | |
require 'minitest/spec' | |
# Nicer output | |
unless ENV['CI'] | |
require 'minitest/reporters' | |
Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new, | |
ENV, | |
Minitest.backtrace_filter) | |
end | |
# RR mocking library | |
require 'rr' | |
# Extra matchers | |
require 'minitest/extra/matchers' | |
DatabaseCleaner.strategy = :transaction | |
Dir['test/support/*'].each { |file| load file } | |
class MiniTest::Spec | |
include Minitest::Extra::Matchers::Subject | |
include Minitest::Extra::Matchers::Received | |
include Minitest::Extra::Matchers::Pending | |
include Minitest::Extra::Matchers::DOM | |
before :each do | |
DatabaseCleaner.start | |
end | |
after :each do | |
DatabaseCleaner.clean | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
workers Integer(ENV['WEB_CONCURRENCY'] || 2) | |
threads_count = Integer(ENV['MAX_THREADS'] || 5) | |
threads threads_count, threads_count | |
preload_app! | |
rackup DefaultRackup | |
port ENV['PORT'] || 3000 | |
environment ENV['RACK_ENV'] || 'development' | |
on_worker_boot do | |
# Worker specific setup for Rails 4.1+ | |
# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot | |
ActiveRecord::Base.establish_connection | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment