govinda-fichtner / db-populate Goto Github PK
View Code? Open in Web Editor NEWThis project forked from joshknowles/db-populate
Manage seed data for Rails projects
License: MIT License
This project forked from joshknowles/db-populate
Manage seed data for Rails projects
License: MIT License
db_populate =========== db_populate is an answer to the question "how do I get seed data into a Rails application?" Seed data is normally the contents of lookup tables that are essential to the normal functioning of your application: lists of roles, administrative accounts, choices for dropdown boxes, and so on. The inspiration (and some of the code) for this plugin come from a blog entry by Luke Francl (http://railspikes.com/2008/2/1/loading-seed-data) that looked at some of the available alternatives for loading seed data. Some more of the code came from Josh Knowles' db_populate plugin (http://code.google.com/p/db-populate/). But I didn't like having to assemble bits, and had some ideas to extend it, and...well, you know how it goes. Using db_populate ================= The basic idea behind db_populate is simple: to put seed data in your application's tables, it executes ruby code. The code needs to be in a specific place, and there's a helper to make it easier to create and update consistent seed data. Then there are a couple of rake tasks. That's it. Setting up for db_populate ========================== To get started with db_populate, create the folder db/populate in your Rails application. Any code you put in this folder will be run by db_populate. Optionally, you can create subfolders for your Rails environments, just as you can with config files. db_populate executes all of the top-level populate files first, followed by any environment-specific populate files, sorting each list by name. Files in the 'shared' subfolder will be run for all environments, sorted with the other files for that environment. Files in the 'after' subfolder will be run after any environment. So, for example, with 6 files in the production environment, db_populate would order this way: db/populate/01_roles.rb db/populate/02_services.rb db/populate/production/01_users.rb db/populate/shared/02_options.db db/populate/production/03_accounts.rb db/populate/after/01_cleanup.rb Within each file, you can place whatever ruby code you like. To help create consistent records, db_populate adds create_or_update to ActiveRecord::Base. This method looks up a record by ID; if the record exists, it is updated, and if it doesn't, it is created. Using this technique means that you can edit and re-run your db_populate tasks without damaging data that have already been loaded once. For example, assuming your roles table has already been populated, a db_populate file to create an administrative user might look like this: user = User.create_or_update(:id => 1, :login => "admin", :email => "[email protected]", :name => "Site Administrator", :password => "admin", :password_confirmation => "admin") role = Role.find_by_rolename('administrator') Permission.create_or_update(:id => 1, :role_id => role.id, :user_id => user.id) If you change your mind about the name for the site administrator, you can just edit the data and re-run the task. By default, create_or_update validates the data (using your model's validations) to ensure that the data in the database is good. You can turn off validations and attr_accessible checks by passing :perform_validations => false as one of the options to create_or_update: user = User.create_or_update(:id => 1, :login => "admin", :email => "BOGUS", :name => "Site Administrator", :password => "admin", :password_confirmation => "admin", :perform_validations => false) db_populate rake tasks ====================== db_populate includes three rake tasks: rake db:populate loads all of the data for the current environment rake db:migrate_and_populate is the same as calling rake db:migrate followed by rake db:populate rake db:reset_and_populate is the same as calling rake db:reset followed by rake db:populate gem usage ========= If you install db_populate as a gem, you need to add this line to your project Rakefile to make the db_populate tasks available: require 'db_populate' History ======= 2010-08-27 Added /shared and /after conventions 2009-11-26 Allow create_or_update to skip validations (suggestion by Josh Sharpe) 2009-11-26 Fix gem version (bug reported by Vitaly Ignatov) 2009-09-15 Add db:reset_and_populate task 2009-05-17 Fix typo in README 2009-03-21 Patch from Ahmed El-Daly to allow PKs with names other than id 2008-10-11 Initial release
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.