Specific scaffolds
Ruby
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.gitignore
Gemfile
LICENSE.txt
README.md
Rakefile
buildybuild.gemspec

README.md

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, options={})
  if /^#{url_for(path)}/ =~ request.path
    options[:class] = "#{options[:class]} active"
  end
  link_to text, path, options
end

It's kinda small. But cool!

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request