Skip to content

Instantly share code, notes, and snippets.

@clupprich
Created December 7, 2013 14:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save clupprich/7842761 to your computer and use it in GitHub Desktop.
Save clupprich/7842761 to your computer and use it in GitHub Desktop.
Rails 4 Application Template
# Rails 4 Application Template
#
# Author: Christoph Lupprich <christoph@luppri.ch>
#
#
# Gems
gem 'devise'
gem 'cancan'
gem 'draper'
gem 'paranoia', git: 'https://github.com/radar/paranoia.git', branch: 'rails4'
gem 'bourbon'
gem 'haml-rails'
gem 'sidekiq'
gem 'sidetiq'
gem 'settingslogic'
gem 'kaminari'
gem 'has_scope'
gem 'friendly_id'
gem 'metamagic'
gem 'high_voltage'
gem 'analytics-ruby'
gem_group :development do
gem 'better_errors'
gem 'binding_of_caller'
gem 'pry'
gem 'pry-doc'
gem 'pry-rails'
gem 'guard'
gem 'guard-rspec'
gem 'guard-livereload', require: false
gem 'rack-livereload'
gem 'rb-inotify', require: false
gem 'quiet_assets'
gem 'puma'
end
gem_group :test do
gem 'factory_girl_rails'
gem 'json_spec'
gem 'timecop'
gem 'simplecov', require: false
gem 'simplecov-rcov', require: false
gem 'shoulda-matchers'
gem 'fuubar'
gem 'capybara'
gem 'rspec-sidekiq'
gem 'vcr'
gem 'webmock'
end
gem_group :development, :test do
gem 'rspec-rails'
gem 'dotenv-rails'
end
gem_group :production do
gem 'puma'
gem 'rails_12factor'
end
#
# Files
file 'app/models/settings.rb', <<-'CODE'
class Settings < Settingslogic
source "#{Rails.root}/config/application.yml"
namespace Rails.env
end
CODE
file 'config/application.yml', <<-'CODE'
defaults: &defaults
development:
<<: *defaults
test:
<<: *defaults
production:
<<: *defaults
CODE
file 'config/puma.rb', <<-'CODE'
CODE
file 'Procfile', <<-'CODE'
web: bundle exec puma -p $PORT -e $RACK_ENV -C config/puma.rb
worker: bundle exec sidekiq
CODE
file '.env', <<-'CODE'
PORT=3000
CODE
file 'zeus.json', <<-'CODE'
{
"command": "ruby -rubygems -r./custom_plan -eZeus.go",
"plan": {
"boot": {
"default_bundle": {
"development_environment": {
"prerake": {"rake": []},
"console": ["c"],
"generate": ["g"]
},
"test_environment": {
"test_helper": {"test": ["rspec"]}
}
}
}
}
}
CODE
file 'Guardfile', <<-'CODE'
guard 'livereload' do
watch(%r{app/views/.+\.(erb|haml|slim)$})
watch(%r{app/helpers/.+\.rb})
watch(%r{public/.+\.(css|js|html)})
watch(%r{config/locales/.+\.yml})
# Rails Assets Pipeline
watch(%r{(app|vendor)(/assets/\w+/(.+\.(css|js|html|png|jpg))).*}) { |m| "/assets/#{m[3]}" }
end
guard :rspec, cmd: 'zeus rspec --color --format Fuubar --fail-fast' do
watch(%r{^spec/.+_spec\.rb$})
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
watch('spec/spec_helper.rb') { "spec" }
# Rails example
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
watch('config/routes.rb') { "spec/routing" }
watch('app/controllers/application_controller.rb') { "spec/controllers" }
# Capybara features specs
watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
# Turnip features and steps
watch(%r{^spec/acceptance/(.+)\.feature$})
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
end
CODE
run "echo 'STDOUT.sync = true' >> config/environments/development.rb"
environment 'config.middleware.use Rack::LiveReload', env: 'development'
#
# Run generators
run "bundle install"
generate('rspec:install')
generate('cancan:ability')
run 'mkdir app/services'
run 'mkdir app/decorators'
run 'mkdir app/views/pages'
#
# Cleanup assets
run "mv app/assets/stylesheets/application.css app/assets/stylesheets/application.css.scss"
run "sed -i '' /require_tree/d app/assets/javascripts/application.js"
run "sed -i '' /require_tree/d app/assets/stylesheets/application.css.scss"
run "echo >> app/assets/stylesheets/application.css.scss"
run "echo '@import \"bourbon\";' >> app/assets/stylesheets/application.css.scss"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment