Skip to content

Instantly share code, notes, and snippets.

@SomeKay
Forked from DamirSvrtan/app_template.rb
Last active August 29, 2015 14:07
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 SomeKay/b523851257b21a558318 to your computer and use it in GitHub Desktop.
Save SomeKay/b523851257b21a558318 to your computer and use it in GitHub Desktop.
Added slim layout file and removed erb layout file
### Rails app generator template. Run it:
### rails new _app_name_ -m https://gist.githubusercontent.com/DamirSvrtan/28a28e50d639b9445bbc/raw/app_template.rb
bin_setup_file = <<-FILE
#!/bin/sh
bundle install
bundle exec rake db:setup
FILE
File.open('bin/setup', 'w'){|file| file.write(bin_setup_file)}
remove_file "README.rdoc"
create_file "README.md", "Development: run ./bin/setup"
run 'mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss'
database_type = ask("Do you want to use postgres or mysql?", limited_to: ["pg", "mysql"])
adapter = if database_type == 'pg'
gem 'pg'
'postgresql'
else
gem 'mysql2'
'mysql2'
end
database_file = <<-FILE
default: &default
adapter: <%= adapter %>
pool: 5
timeout: 5000
host: localhost
username: root
development:
<<: *default
database: <%= @app_name %>_development
password:
test:
<<: *default
database: <%= @app_name %>_test
production:
<<: *default
database: <%= @app_name %>_production
FILE
File.open('config/database.yml', 'w') do |file|
file.write(ERB.new(database_file).result(binding))
end
# Remove unwanted gems. spring will be added later in the development group of gems
%w(spring coffee-rails sqlite3).each do |unwanted_gem|
gsub_file("Gemfile", /gem '#{unwanted_gem}'.*\n/, '')
end
# Replace erb layout file with slim layout file
layout_file = <<-FILE
doctype html
html
head
title Site title
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
= javascript_include_tag 'application', 'data-turbolinks-track' => true
= csrf_meta_tags
body
= yield
FILE
File.delete('app/views/layouts/application.html.erb')
File.open('app/views/layouts/application.html.slim', 'w') do |file|
file.write(ERB.new(layout_file).result(binding))
end
# remove commented lines
gsub_file("Gemfile", /#.*\n/, '')
# remove double newlines
gsub_file("Gemfile", /^\n\n/, '')
simple_form_installation = "simple_form:install"
if yes?('Use bootstrap?')
gem 'bootstrap-sass'
simple_form_installation << " --bootstrap"
end
gem 'simple_form'
gem 'slim-rails'
gem 'draper'
gem_group :development do
gem 'spring'
gem 'better_errors'
gem 'binding_of_caller'
gem 'quiet_assets'
gem 'pry-rails'
gem 'bullet'
gem 'traceroute'
gem 'letter_opener'
end
run "bundle install"
generate simple_form_installation
git :init
%w(.sass-cache powder public/system dump.rdb logfile .DS_Store).each do |gitignored|
append_file ".gitignore", gitignored
end
git add: ".", commit: "-m 'Initial commit'"
@DamirSvrtan
Copy link

Hey, thnx for the fork, i needed this. One comment:

File.open('app/views/layouts/application.html.slim', 'w') do |file|
  file.write(ERB.new(layout_file).result(binding))
end 

Since you're not embedding any variables in the layout file, you don't need the ERB evaluation, you could just use:

File.open('app/views/layouts/application.html.slim', 'w') do |file|
  file.write(layout_file)
end 

But perhaps it would be good to have the site title set as the app name, so you could keep the ruby embedding when writing to the file, and just modify the layout_file:

layout_file = <<-FILE
doctype html
html
  head
    title <%= @app_name %>

    = stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true
    = javascript_include_tag 'application', 'data-turbolinks-track' => true
    = csrf_meta_tags

  body
    = yield
FILE

@SomeKay
Copy link
Author

SomeKay commented Sep 30, 2014

I agree completely. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment