Skip to content

Instantly share code, notes, and snippets.

@vakiliy
Last active December 31, 2015 09:29
Show Gist options
  • Save vakiliy/09f90168c324eb9e1104 to your computer and use it in GitHub Desktop.
Save vakiliy/09f90168c324eb9e1104 to your computer and use it in GitHub Desktop.
Rails default template
# Rails default template
# usage: rails new <app_name> -m template.rb -T -B
# command list: http://rdoc.info/github/wycats/thor/master/Thor/Actions.html
# gems
gem_group :test do
gem 'database_cleaner'
gem 'rspec-rails'
gem 'factory_girl_rails'
gem 'capybara'
end
gem_group :development, :test do
gem 'rb-readline', '~> 0.4.2'
gem 'guard'
gem 'guard-rspec'
end
# gem "bullet", :group => "development" # use for profile (N+1 queries)
gem 'russian'
selector = ask('Database type: (s)qlite3|(m)ysql|(p)ostgres', :red)
database = :sqlite3
case selector[0]
when 'p' then
comment_lines('Gemfile', /gem\s+'sqlite3'/)
gem 'pg'
database = :postgresql
when 'm' then
comment_lines('Gemfile', /gem\s+'sqlite3'/)
gem 'mysql'
database = :mysql
end
say "Used SQL adapter: #{database.to_s.upcase}\n"
comment_lines('Gemfile', /gem\s+'turbolinks'/)
uncomment_lines('Gemfile', /gem\s+'bcrypt-ruby'/)
uncomment_lines('Gemfile', /gem\s+'therubyracer'/)
selector = ask('Template engine type: (e)rb|(h)aml|(s)slim', :red)
template_engine = :erb
case selector[0]
when 'h' then
gem 'haml'
gem 'haml-rails'
template_engine = :haml
when 's' then
gem 'slim'
gem 'slim-rails'
template_engine = :slim
end
say "Used Template engine: #{template_engine.to_s.upcase}\n"
# .gitignore
append_to_file('.gitignore', <<-DATA)
DATA
# config ruby manager
current_ruby = "ruby-#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
currenr_gems = ENV['GEM_PATH'].split(':').first.split('@').last
ruby_version = ask("Use ruby version (#{current_ruby}): ", :green)
ruby_gemsets = ask("Use gemset (#{currenr_gems}): ", :green)
ruby_version = current_ruby if ruby_version.blank?
ruby_gemsets = currenr_gems if ruby_gemsets.blank?
create_file('.ruby-version', ruby_version)
create_file('.ruby-gemset', ruby_gemsets)
# Configure application
insert_into_file 'config/application.rb', :after => '# config.i18n.default_locale = :de' do
<<CONFIG
\n
# Default config
config.time_zone = 'Ekaterinburg'
config.i18n.enforce_available_locales = false
config.i18n.default_locale = :ru
config.generators do |g|
g.orm :active_record
g.test_framework :rspec,
:view_specs => true,
:helper_specs => false,
:controller_specs => true,
:routing_specs => true
g.fixture_replacement :factory_girl
g.template_engine :#{template_engine}
g.stylesheets false
end
# Mailer configuration
config.action_mailer.default_url_options = {host: '//localhost'}
config.action_mailer.delivery_method = :file
# config.action_mailer.file_settings = {filename: Rails.root.join('tmp/mail')}
# config.action_mailer.perform_deliveries = false
# config.action_mailer.smtp_settings = {
# address: 'smtp.google.com',
# port: 587,
# domain: 'user_domain',
# user_name: 'user_name@user_domain',
# password: 'password',
# authentication: 'plain',
# enable_starttls_auto: 'password'
# }
# config.action_mailer.logger = :nil
CONFIG
end
# Run rspec generator
# run 'bundle install'
say 'Install rspec...'
run 'rails g rspec:install'
say 'Install guard...'
run 'bundle exec guard init'
# Post configure
gsub_file('Guardfile', 'guard :rspec', "guard :rspec, cmd: 'zeus rspec', keep_failed: true, all_after_pass: true do")
comment_lines 'spec/spec_helper.rb', 'config.fixture_path'
insert_into_file 'spec/spec_helper.rb', :after => "require 'rspec/autorun'" do
"\nrequire 'database_cleaner'"
end
insert_into_file 'spec/spec_helper.rb', :after => 'config.order = "random"' do
<<CONFIG
\n
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
CONFIG
end
# App files
gsub_file('app/assets/javascripts/application.js', '//= require turbolinks', '')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment