Skip to content

Instantly share code, notes, and snippets.

@webmonarch
Last active January 2, 2016 17:39
Show Gist options
  • Save webmonarch/8338549 to your computer and use it in GitHub Desktop.
Save webmonarch/8338549 to your computer and use it in GitHub Desktop.
Rails 4.0 application template that sets up: * rspec-rails * bootstrap-sass * some boilerplate layout stuff * meta tags * move javascript include to `</body>` * Create Welcome controller and default `app/views/welcome/index.html.erb`
#
# Experiment with Rails Application Generation Templates
#
# This template sets up:
# * rpsec-rails gem (with capybara)
# * bootstrap-sass gem
# * Integrates bootstrap-sass into application.css and application.js
# * Re-arranges application.html.erb layout
# * adds compatibility meta header
# * moves application.js from <head> to </body>
# * Creates Welcome controller, index action, and route
#
#
# Install rspec-rails
#
gem_group :development, :test do
gem 'rspec-rails', '~> 2.14'
gem 'capybara'
end
run 'bundle install'
run 'bundle exec rails generate rspec:install'
#
# install bootstrap-sass
#
gem 'bootstrap-sass', '~> 3.0.3.0'
FileUtils.move 'app/assets/stylesheets/application.css', 'app/assets/stylesheets/application.css.scss'
inject_into_file 'app/assets/stylesheets/application.css.scss', :after => " */\n" do
'@import "bootstrap";'
end
inject_into_file 'app/assets/javascripts/application.js', :before => '//= require_tree .' do
"//= require bootstrap\n"
end
#
# Mangle app/views/layout/application.html.erb
#
# add meta tags
layout_file = 'app/views/layouts/application.html.erb'
inject_into_file layout_file, :after => "</title>\n" do
<<-HTML
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
HTML
end
# move javascript to body close
text = ' <%= javascript_include_tag "application", "data-turbolinks-track" => true %>'
gsub_file layout_file, text, ''
inject_into_file layout_file, :before => '</body>' do
text.strip + "\n"
end
# setup mysql2
# Setup Welcome controller
generate :controller, 'welcome'
create_file 'app/views/welcome/index.html.erb', <<-ERB
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Project name</a>
</div>
<div class="navbar-collapse collapse">
<form class="navbar-form navbar-right" role="form">
<div class="form-group">
<input type="text" placeholder="Email" class="form-control">
</div>
<div class="form-group">
<input type="password" placeholder="Password" class="form-control">
</div>
<button type="submit" class="btn btn-success">Sign in</button>
</form>
</div><!--/.navbar-collapse -->
</div>
</div>
<!-- Main jumbotron for a primary marketing message or call to action -->
<div class="jumbotron">
<div class="container">
<h1>Hello, world!</h1>
<p>This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
<p><a class="btn btn-primary btn-lg" role="button">Learn more &raquo;</a></p>
</div>
</div>
<div class="container">
<!-- Example row of columns -->
<div class="row">
<div class="col-md-4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
</div>
<div class="col-md-4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
</div>
<div class="col-md-4">
<h2>Heading</h2>
<p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
<p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
</div>
</div>
<hr>
<footer>
<p>&copy; Company 2013</p>
</footer>
</div> <!-- /container -->
ERB
route "root 'welcome#index'"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment