Everyday Rails

Use Nifty Generators in Rails 3

By Aaron Sumner, July 30, 2010.

I’ve talked a lot about the Nifty Generators gem, created by Ryan Bates of Railscasts (see my introductions to nifty_layout, nifty_config, and nifty_scaffold). When I began experimenting with Rails 3 I noticed that the gem was not yet Rails 3 compatible according to RailsPlugins.org, but I’m happy to report (along with RailsPlugins.org users eggie5 and dgerton) that it’s working fine—you just need to change a few things about how you use it. Here’s what you need to do to get rolling:

1. Include Nifty Generators in your Gemfile

Unlike apps written in previous versions of Rails, your Rails 3 app needs to know you’re using Nifty Generators. Easy enough: Add the following line to your Gemfile:

  gem 'nifty-generators', '>= 0.4.0'

then install it if necessary, using Bundler:

  $ bundle install

2. Know the command line changes

This is the biggest difference, and it’s actually pretty minor. Replace the underscore in the old way of using the generator with a colon. So the old way of generating a scaffold, like

  $ script/generate nifty_scaffold book title:string author_id:integer description:text

becomes

  $ rails generate nifty:scaffold book title:string author_id:integer description:text

For a list of all four Nifty Generators’ new syntax, just type

  $ rails generate -h
What do you think? Follow along on on Mastodon, Facebook, or Bluesky to let me know what you think and catch my latest posts. Better yet, subscribe to my newsletter for updates from Everyday Rails, book picks, and other thoughts and ideas that didn't quite fit here.
Buy Me A Coffee

Test with confidence!

If you liked my series on practical advice for adding reliable tests to your Rails apps, check out the expanded ebook version. Lots of additional, exclusive content and a complete sample Rails application.

Newsletter

Ruby on Rails news and tips, and other ideas and surprises from Aaron at Everyday Rails. Delivered to your inbox on no particular set schedule.