Last active
December 31, 2015 09:29
-
-
Save vakiliy/09f90168c324eb9e1104 to your computer and use it in GitHub Desktop.
Rails default 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
# 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