Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Branch: master
Pull request Compare This branch is even with openlogic:master.
Failed to load latest commit information.
data Initial commit.
lib Update version, history and readme for the exclude list feature
spec Added exclude_list so that words or regexs can be skipped
.document Initial commit to random-word.
.gitignore Ignore automatically generated files
.rspec clear and ignore .rspec
Gemfile Updating Copyright
LICENSE.txt Updating Copyright
Rakefile Updated gem descriptions
VERSION Update version, history and readme for the exclude list feature



A random word generator intended for use in test data factories. This library uses a large list (the wordnet corpus) of english words and provides an enumerator interface to that corpus that will return the words in a random order without repeats.


You can get a random word any where you need one. Just request the next of which ever word flavor you prefer.  #=> "pugnacious" #=> "audience"

Factory Girl

This library was first developed to use in factories. It can be used with Factory Girl like this.

Factory.define(:user) do |u|  "#{} User" {|u| "#{ +/, '.')}"

Factory(:user) #=> ...


For Machinist a #sw (short for serial word) method is provided. It works exactly like #sn but it returns a string instead of a number.

User.blueprint do 
  name  { "#{sw.capitalize} User" }
  email { "#{sw}" }


Words may be excluded by pattern, or exact match. To do this just add an object that responds to #=== to the exclude list.

RandomWord.exclude_list << /fo+/
RandomWord.exclude_list << 'bar'

This will prevent the return of the exact string "bar" and any word which matches the regex /fo+/.

Contributing to random-word

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
  • Fork the project
  • Start a feature/bugfix branch
  • Commit and push until you are happy with your contribution
  • Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
  • Update history
  • Update version (remember to use semantic versioning)
  • Commit and push
  • Send me a pull request. Bonus points for topic branches.


Copyright (c) 2011 OpenLogic, Inc. See LICENSE.txt for further details.

Something went wrong with that request. Please try again.