Every software product I've ever built always has this same problem. Sales, marketing / product need a repeatable demo account populated with best case scenario data that doesn't take manual reset and doesn't have any side effects. I was listening to this episode of the Re-work podcast from Basecamp and it was good to know that I'm not totally crazy in this being a pain point.
I would love to know, don't limit answers to Rails! I'm sure we can be inspired based on whatever framework people are in.
I use Rails fixtures and pre-load those fixtures in a bin/setup script. If you take your time to pre-populate all this fixture data it works really well. You've got that data for testing (Which is usually a win) and then it's easy to set up staging or localhost to just reset back to this state with a simple command.
However — especially with ActionText and ActiveStorage it gets clunky and you end up with these huge fixture files. I have found some solutions to limit the pain here, you can pull down production data and then write it to fixtures, then update it.
I've recently learned you can do this quasi-inheritance thing in your fixture files to DRY them up. And of course, you can write ERB in fixtures. (Things like Faker can help this) but even with all this, there's got to be a better way.
- How do you deal with "Demo" account data?
- How does your marketing and sales team are well supported on this? What if they need to make changes or updates?
- How do you keep this whole thing from not being such a pain in the ass?
- How do you keep this in sync with new feature rollouts?