---
title: Factory Bot Hits 3.0!
teaser:
tags: news,web,ruby,testing,factory_girl,factory_bot
author: Josh Clayton
published_on: 2012-03-23
---

Factory Bot is [now
3.0](http://rubygems.org/gems/factory_bot/versions/3.0.0)! It's been a
wonderful eight months and I'm really excited about what we've added in 2.x.
We've adopted [semantic versioning](http://semver.org/) and it's been a good
way to ensure that we're providing software that's reliable and stable.

## The Big Changes

### No more Ruby 1.8 support

You heard correctly; FactoryBot requires Ruby 1.9+. We want to continue to
move forward and supporting 1.8 was something we felt was holding us back.
Ruby 1.9 introduces awesomeness like `BasicObject`, something we had to
backport to 1.8 with ActiveSupport &#8212; no more!

If you _can't_ upgrade to Ruby 1.9 and Rails 3, you can continue to use
`factory_bot_rails` version 1.x and FactoryBot 2.x; those will continue to
support Ruby 1.8.7+ and Rails 2.3.9+.

### No more Rails 2 support

FactoryBot 3.0 now only supports Rails 3.x. This will allow us to move
forward without having to worry about outdated versions of gems like
ActiveSupport.

### Vintage syntax deprecated

The vintage syntax has been deprecated and will be removed in the next major
release. For those who don't know what the vintage syntax is, it follows any
of these forms:

    Factory(:comment)
    Factory.next(:email)
    Factory.stub(:article)

    Factory.define(:admin_user, :parent => :user) do |admin|
      admin.admin true
    end

The alternates for each of these would be (after [configuring FactoryBot to
play nicely with RSpec, Test::Unit, or
Cucumber](https://thoughtbot.com/blog/post/19162390206/short-explicit-test-setups)):

    create(:comment)
    generate(:email)
    build_stubbed(:article)

    factory :admin, parent: :user do
      admin true
    end

We chose to do this because the new syntax is awesome and more concise. Plus,
repeating `Factory.define` thirty or forty times in a single file is gross.

## Upgrading

To upgrade in a Rails app, just update your Gemfile:

    group :test do
      gem "factory_bot_rails", "~> 3.0"
    end

If you're _not_ running Rails:

    gem "factory_bot", "~> 3.0"

## What's next

Factory Bot 2.x introduced a cleaner syntax, traits, ignored attributes,
creating multiple records at a time, custom constructors, and more. There are
some awesome ideas floating around for 3.x, including separating associations
from foreign keys, cleaning up how custom constructors work, ways to define
both custom callbacks and custom strategies, and more. Keep your eyes peeled
as we move forward!

* * *

**Disclaimer:**

Looking for FactoryGirl? The library was renamed in 2017.
[Project name history can be found here.](https://github.com/thoughtbot/factory_bot/blob/master/NAME.md)
