Buildybuild
Buildybuild is generator that allows you to quickly generate things like:
- static pages with either markup or a provided cms.
- an awesome active link helper
Installation
Add this line to your application's Gemfile:
$ gem 'buildybuild'
And then execute:
$ bundle
Or install it yourself as:
$ gem install buildybuild
Note: There are runtime dependencies in Buildybuild so you'll have to add the following if buildybuild is not in your Gemfile:
gem 'decent_exposure'
gem 'haml-rails'
gem 'formal'
gem 'rdiscount'
Usage
For static pages (the CMS)
$ rails generate buildybuild:cms
# you can pass a name for the generated resource. Default is "page" i.e.:
$ rails generate buildybuild:cms static_page
This will create the following files:
- app/models/page.rb
- db/migrate/[timestamp]_create_pages.rb
- app/controllers/pages_controller.rb
- app/views/pages/new.html.haml
- app/views/pages/edit.html.haml
- app/views/pages/show.html.haml
- app/views/pages/_form.html.haml
and appends the following to the bottom of your routes file:
resources :pages, only: [:new, :create]
#keep these at the bottom of your file. They should be the last routes.
get "/:slug", to: "pages#show", as: :slug
get "/:slug/edit", to: "pages#edit", as: :edit_slug
put "/:slug", to: "pages#update", as: :slug
post "/:slug", to: "pages#destroy", as: :slug
Next
run the migration
$ rake db:migrate
And you're set. Now you can go to http://localhost:3000/pages/new
and see
your new Content Management System in action!
Or you can create static pages and stick them in app/views/pages/
. Then
you will automatically have access to the page in your routes.
Observe:
Create a static page called app/views/pages/about_us.html.haml
Then automatically have access to http://localhost:3000/about-us
.
Notice the difference between the underscore "_" in the file name and the dash "-" in the url.
For the active link helper
This is so you can replace your link_to
helper with active_link_to
which will add a class of "active" to the link when you're on that page. i.e:
= active_link_to "/about-us", "About"
returns the following when the current page is ```/about-us"
<a class="active" href="/about-us">About</a>
Run
$ rails g buildybuild:active_link
This appends the following to the bottom of your ApplicationHelper:
def active_link_to(text, path, ={})
if /^#{url_for(path)}/ =~ request.path
[:class] = "#{[:class]} active"
end
link_to text, path,
end
It's kinda small. But cool!
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request