Installation
Install the mvp gem:
gem install minimum_viable_product
Then setup your project:
mvp new PROJECT
Setup
.env
Set your .env
file up with your own variables
ROLLBAR_CLIENT_ACCESS_TOKEN=
ROLLBAR_SERVER_ACCESS_TOKEN=
SEGMENT_WRITE_KEY=
SLACK_WEBHOOK_URL=
SLACK_POST_USERNAME=
FACEBOOK_TRACKING_ID=
AMPLITUDE_API_KEY=
HOST_DOMAIN=localhost
HOST_PORT=3000
HOST_PROTOCOL=http
GOOGLE_ANALYTICS_ID=
HOTJAR_ID=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_S3_BUCKET=
SPOOF_IP=true
Heroku
To setup deployment for heroku, first create the project:
heroku create PROJECT
You're probably going to want Database backups. This will let you use rake db:import
heroku pg:backups capture
You're also going to need to setup the buildpacks
heroku buildpacks:set heroku/ruby
heroku buildpacks:add --index 1 heroku/nodejs
Make sure to turn off npm cacheing (since we're loading MVP from a repo)
heroku config:set NODE_MODULES_CACHE=false
Add a scheduled task to update your sitemaps:
heroku addons:create scheduler:standard
heroku addons:open scheduler
Add the following task: rake sitemap:worker
. Your choice on the frequency but I usually use daily
SEO
Meta Properties
All meta fields are controlled via the page
object. Set attributes on this in order to get meta properties populated. This is best done at the controller level.
Available Properties
Property | Description | Inheritance |
---|---|---|
page.title |
||
page.description |
||
page.author |
||
page.og_url |
||
page.og_type |
||
page.og_title |
page.title |
|
page.og_description |
page.description |
|
page.og_image |
||
page.twitter_card |
Sitemaps
Setup
Edit config/sitemap.rb
with your own custom routes.
Updating
Run sitemap:refresh
in production to update Bing/Google with changes to the sitemap.
Put this in a cron
task or in Heroku Scheduler.
Helpers
Geolocation
By default, Geolocation of the session will automatically happen.
You can access the session's geolocation in request.location
.
To test geolocation locally, set SPOOF_IP=true
in your .env
.
For more info see Geocoder.
Bootstrap
row_groups_of
Makes a series of row/col div
elements based in group count.
<% row_groups_of(3, [1,2,3,4,5,6,7,8,9]) do |i| %>
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="text-center"><%= i %></h2>
</div>
</div>
<% end %>