Hi everyone, For one of our projects we have a need to deploy and maintain a demo. As a result I''ve attempted to setup a set of rake tasks for the job. My goal is have one rake task called "deploy_demo" which purges the database, migrates to the current schema, and loads the db from a set of fixture files in a specified location. I''ve written two new tasks the perform portions of this task: db:purge - purges the db set in RAILS_ENV. load_my_fixtures - loads the db using fixtures from a directory specified by the SRC env var Then I setup deploy_demo as a task that basically calls db:purge, db:migrate, and then load_my_fixtures. The source is below: -- Start -- desc "This is a task to deploy a demo. It is setup to work in the context of a local machine. It wipes the DB, migrates up to the current version of the schema, and loads fixtures from RAILS_ROOT/db/fixtures/demo" task :deploy_demo => ["db:purge","db:migrate"] do # we need to invoke the one in the body so we can set SRC in the environment ENV[''SRC''] = "db/fixtures/demo" Rake::Task[:load_my_fixtures].invoke end -- End -- So, I can run each of the component tasks (db:purge, db:migrate: load_my_fixtures) from the command line and they work fine. When I run deploy_demo the db:fixtures task completes without an error but doesn''t actually modify the database. Does anyone know why db:migrate would not modify the db when called as a dependency but would from the command line? I''ve included output from both methods of calling these tasks with --trace on. -- Output from calling each sub-task from command line -- c:\dve\ideeli_trunk\lib\tasks>rake db:purge --trace rake db:purge --trace (in c:/dve/ideeli_trunk) ** Invoke db:purge (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute db:purge Loaded suite c:/ruby/bin/rake.bat Started Finished in 0.0 seconds. 0 tests, 0 assertions, 0 failures, 0 errors c:\dve\ideeli_trunk\lib\tasks>rake db:migrate --trace rake db:migrate --trace (in c:/dve/ideeli_trunk) ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment -- create_table("rails_crons") -> 0.1010s -- add_column(:rails_crons, :concurrent, :boolean) -> 0.2100s ** Execute db:migrate == Init: migrating ===========================================================-- create_table("colors", {:force=>true}) -> 0.0800s -- add_index("colors", ["product_id", "name"], {:name=>"product_name", :unique=>true}) -> 0.2300s -- create_table("groups", {:force=>true}) -> 0.0700s -- add_index("groups", ["parent_id"], {:name=>"groups_parent_id_index"}) -> 0.2010s -- create_table("groups_roles", {:force=>true, :id=>false}) -> 0.1000s -- add_index("groups_roles", ["group_id", "role_id"], {:name=>"groups_roles_all_index", :unique=>true}) -> 0.2200s -- add_index("groups_roles", ["role_id"], {:name=>"role_id"}) -> 0.2200s -- create_table("groups_users", {:force=>true, :id=>false}) -> 0.1010s -- add_index("groups_users", ["group_id", "user_id"], {:name=>"groups_users_all_index", :unique=>true}) -> 0.2100s -- add_index("groups_users", ["user_id"], {:name=>"user_id"}) -> 0.2100s -- create_table("images", {:force=>true}) -> 0.0900s -- add_index("images", ["product_id"], {:name=>"fk_images_product"}) -> 0.2210s -- add_index("images", ["color_id"], {:name=>"fk_images_color"}) -> 0.2400s -- create_table("products", {:force=>true}) -> 0.1000s -- create_table("roles", {:force=>true}) -> 0.0900s -- add_index("roles", ["parent_id"], {:name=>"roles_parent_id_index"}) -> 0.2210s -- create_table("roles_static_permissions", {:force=>true, :id=>false}) -> 0.1000s -- add_index("roles_static_permissions", ["static_permission_id", "role_id"], {:name=>"roles_static_permissions_all_index", :unique=>true}) -> 0.2200s -- add_index("roles_static_permissions", ["role_id"], {:name=>"role_id"}) -> 0.2400s -- create_table("roles_users", {:force=>true, :id=>false}) -> 0.0800s -- add_index("roles_users", ["user_id", "role_id"], {:name=>"roles_users_all_index", :unique=>true}) -> 0.1810s -- add_index("roles_users", ["role_id"], {:name=>"role_id"}) -> 0.1800s -- create_table("skus", {:force=>true}) -> 0.0700s -- add_index("skus", ["product_id", "size"], {:name=>"product_color", :unique=>true}) -> 0.1800s -- create_table("static_permissions", {:force=>true}) -> 0.0800s -- add_index("static_permissions", ["title"], {:name=>"static_permissions_title_index", :unique=>true}) -> 0.2810s -- create_table("user_registrations", {:force=>true}) -> 0.2000s -- add_index("user_registrations", ["user_id"], {:name=>"user_registrations_user_id_index", :unique=>true}) -> 0.2400s -- add_index("user_registrations", ["expires_at"], {:name=>"user_registrations_expires_at_index"}) -> 0.1810s -- create_table("users", {:force=>true}) -> 0.0900s -- add_index("users", ["login"], {:name=>"users_login_index", :unique=>true}) -> 0.2100s -- add_index("users", ["password"], {:name=>"users_password_index"}) -> 0.1900s == Init: migrated (5.3370s) ================================================== == UpdateDateTimeToDate: migrating ===========================================-- add_column(:products, :shipment_received_on, :date, {:null=>true}) -> 0.2000s -- remove_column(:products, :shipment_received_at) -> 0.1900s == UpdateDateTimeToDate: migrated (0.3900s) ================================== == FixSkusIndex: migrating ===================================================-- remove_index(:skus, {:name=>"product_color"}) -> 0.2200s -- add_index(:skus, [:product_id, :color_id, :size], {:name=>"product_color_size", :unique=>true}) -> 0.2110s == FixSkusIndex: migrated (0.4310s) ========================================== == CreateImages: migrating ===================================================-- remove_column(:images, :product_id) -> 0.2100s -- remove_column(:images, :filename) -> 0.2100s -- add_column(:images, "image", :string, {:default=>"", :limit=>255, :null=>false}) -> 0.2210s -- add_column(:images, "position", :integer) -> 0.2200s == CreateImages: migrated (0.8610s) ========================================== == CreateOffers: migrating ===================================================-- create_table(:offers) -> 0.1000s == CreateOffers: migrated (0.1000s) ========================================== == CreateLineItems: migrating ================================================-- create_table("line_items", {:force=>true}) -> 0.0800s == CreateLineItems: migrated (0.0800s) ======================================= == AddProfileToUsers: migrating ==============================================-- add_column(:users, "billing_title", :string, {:default=>"", :limit=>6, :null=>false}) -> 0.2110s -- add_column(:users, "billing_first_name", :string, {:default=>"", :limit=>100, :null=>false}) -> 0.2100s -- add_column(:users, "billing_last_name", :string, {:default=>"", :limit=>100, :null=>false}) -> 0.2000s -- add_column(:users, "billing_address1", :string, {:default=>"", :limit=>150, :null=>false}) -> 0.3410s -- add_column(:users, "billing_address2", :string, {:default=>"", :limit=>150, :null=>false}) -> 0.1700s -- add_column(:users, "billing_city", :string, {:default=>"", :limit=>150, :null=>false}) -> 0.2100s -- add_column(:users, "billing_state", :string, {:default=>"", :limit=>150, :null=>false}) -> 0.2110s -- add_column(:users, "billing_zip", :string, {:default=>"", :limit=>150, :null=>false}) -> 0.2100s -- add_column(:users, "shipping_title", :string, {:default=>"", :limit=>6, :null=>false}) -> 0.4310s -- add_column(:users, "shipping_first_name", :string, {:default=>"", :limit=>100, :null=>false}) -> 0.3400s -- add_column(:users, "shipping_last_name", :string, {:default=>"", :limit=>100, :null=>false}) -> 0.2400s -- add_column(:users, "shipping_address1", :string, {:default=>"", :limit=>150, :null=>false}) -> 0.2310s -- add_column(:users, "shipping_address2", :string, {:default=>"", :limit=>150, :null=>false}) -> 0.2200s -- add_column(:users, "shipping_city", :string, {:default=>"", :limit=>150, :null=>false}) -> 0.2100s -- add_column(:users, "shipping_state", :string, {:default=>"", :limit=>150, :null=>false}) -> 0.2110s -- add_column(:users, "shipping_zip", :string, {:default=>"", :limit=>150, :null=>false}) -> 0.2700s -- add_column(:users, "shipping_telephone", :string, {:default=>"", :limit=>150, :null=>false}) -> 0.2000s -- add_column(:users, "shipping_different", :string, {:default=>"", :limit=>1, :null=>false}) -> 0.2110s -- add_column(:users, "mobile", :string, {:default=>"", :limit=>100, :null=>false}) -> 0.2300s -- add_column(:users, "email_notifications", :string, {:default=>"", :limit=>1, :null=>false}) -> 0.2400s -- add_column(:users, "sms_notifications", :string, {:default=>"", :limit=>1, :null=>false}) -> 0.2310s -- add_column(:users, "income", :string, {:default=>"", :limit=>50, :null=>false}) -> 0.1800s -- add_column(:users, "education", :string, {:default=>"", :limit=>50, :null=>false}) -> 0.2100s -- add_column(:users, "birthday_on", :date, {:null=>true}) -> 0.2110s == AddProfileToUsers: migrated (5.6290s) ===================================== == CreateOrders: migrating ===================================================-- create_table("orders", {:force=>true}) -> 0.1400s == CreateOrders: migrated (0.1400s) ========================================== == AddShippingPriceToLineItems: migrating ====================================-- add_column(:line_items, "unit_shipping_fee", :integer, {:default=>0, :limit=>10, :null=>false}) -> 0.1900s == AddShippingPriceToLineItems: migrated (0.1900s) =========================== == CreateComments: migrating =================================================-- create_table(:comments) -> 0.0900s == CreateComments: migrated (0.0900s) ======================================== == NoProductSkuRelationship: migrating =======================================-- remove_column(:skus, "product_id") -> 0.2110s == NoProductSkuRelationship: migrated (0.2110s) ============================== == CreatePosts: migrating ====================================================-- create_table(:posts) -> 0.0900s == CreatePosts: migrated (0.0900s) =========================================== == CreateEcards: migrating ===================================================-- create_table(:ecards) -> 0.0700s == CreateEcards: migrated (0.0700s) ========================================== == AddColumnsToProduct: migrating ============================================-- add_column(:products, "spec", :text, {:default=>"", :null=>false}) -> 0.2200s -- add_column(:products, "strapline", :string, {:default=>"", :limit=>100, :null=>false}) -> 0.2110s == AddColumnsToProduct: migrated (0.4310s) =================================== == AddToEcards: migrating ====================================================-- drop_table(:ecards) -> 0.0400s -- create_table(:ecards) -> 0.0700s == AddToEcards: migrated (0.1100s) =========================================== == AddReferrerToUsers: migrating =============================================-- add_column(:users, "referrer_type", :string) -> 0.2200s -- add_column(:users, "user_id", :integer) -> 0.2710s == AddReferrerToUsers: migrated (0.4910s) ==================================== == MobileToThreeCell: migrating ==============================================-- remove_column(:users, "mobile") -> 0.2100s -- add_column(:users, "cell1", :string, {:default=>"", :limit=>3, :null=>false}) -> 0.2100s -- add_column(:users, "cell2", :string, {:default=>"", :limit=>3, :null=>false}) -> 0.2210s -- add_column(:users, "cell3", :string, {:default=>"", :limit=>4, :null=>false}) -> 0.2200s == MobileToThreeCell: migrated (0.8610s) ===================================== == AddShowComingSoonToUsers: migrating =======================================-- add_column(:offers, "show_in_coming_soon", :string, {:default=>"", :limit=>1, :null=>false}) -> 0.2000s == AddShowComingSoonToUsers: migrated (0.2000s) ============================== == AddDreamToUser: migrating =================================================-- add_column(:users, "dream_item", :string, {:default=>"", :limit=>150, :null=>false}) -> 0.1910s == AddDreamToUser: migrated (0.1910s) ======================================== == CreateFaqs: migrating =====================================================-- create_table(:faqs) -> 0.0800s == CreateFaqs: migrated (0.0800s) ============================================ == CreateCategories: migrating ===============================================-- create_table(:categories) -> 0.0700s == CreateCategories: migrated (0.0700s) ====================================== == CreateBlogComments: migrating =============================================-- create_table(:blog_comments) -> 0.0900s == CreateBlogComments: migrated (0.0900s) ==================================== == CreateSweepstakes: migrating ==============================================-- add_column(:offers, "type", :text, {:default=>""}) -> 0.2810s -- add_column(:offers, "max_entries", :integer, {:default=>"0"}) -> 0.1800s -- add_column(:offers, "entries_made", :integer, {:default=>"0"}) -> 0.1900s -- add_column(:offers, "drawing_at", :datetime) -> 0.1900s == CreateSweepstakes: migrated (0.8410s) ===================================== == CreateEntrants: migrating =================================================-- create_table(:entrants) -> 0.1210s == CreateEntrants: migrated (0.1210s) ======================================== == SetDefaultAmtAvailable: migrating =========================================-- change_column(:skus, "amt_available", :integer, {:default=>0, :null=>false}) -> 0.2500s == SetDefaultAmtAvailable: migrated (0.2500s) ================================ == AddOffertoEntrant: migrating ==============================================-- add_column(:entrants, "offer_id", :integer, {:default=>"0"}) -> 0.1900s -- add_column(:entrants, "draw_position", :integer, {:default=>"0"}) -> 0.2210s == AddOffertoEntrant: migrated (0.4110s) ===================================== == AddDrawnFlagToSweepstake: migrating =======================================-- add_column(:offers, "is_drawn", :string, {:default=>"0"}) -> 0.2300s == AddDrawnFlagToSweepstake: migrated (0.2300s) ============================== == ChangeEntrantOfferIdFieldToSweepstakeId: migrating ========================-- rename_column(:entrants, "offer_id", "sweepstake_id") -> 0.4810s == ChangeEntrantOfferIdFieldToSweepstakeId: migrated (0.4810s) =============== == AddPictureToUser: migrating ===============================================-- add_column(:users, "image", :string, {:default=>"", :limit=>255, :null=>false}) -> 0.2100s == AddPictureToUser: migrated (0.2100s) ====================================== == AddShowPictureFlagToUsers: migrating ======================================-- add_column(:users, "show_image", :string, {:default=>"0", :limit=>1, :null=>false}) -> 0.4610s == AddShowPictureFlagToUsers: migrated (0.4610s) ============================= == AddAmtSoldToSkus: migrating ===============================================-- add_column(:skus, "amt_sold", :integer, {:default=>"0", :null=>false}) -> 0.2710s -- rename_column(:skus, "amt_available", "amt_forsale") -> 0.2200s == AddAmtSoldToSkus: migrated (0.4910s) ====================================== == AddOfferIdToLineItem: migrating ===========================================-- add_column(:line_items, "offer_id", :integer, {:default=>"0", :null=>false}) -> 0.2300s == AddOfferIdToLineItem: migrated (0.2300s) ================================== == AddNewEmailToUser: migrating ==============================================-- add_column(:users, "new_email", :string, {:default=>"", :limit=>255, :null=>false}) -> 0.2110s -- add_column(:users, "new_email_token", :string, {:default=>"", :limit=>255, :null=>false}) -> 0.1800s == AddNewEmailToUser: migrated (0.3910s) ===================================== ** Invoke db:schema:dump (first_time) ** Invoke environment ** Execute db:schema:dump Loaded suite c:/ruby/bin/rake.bat Started Finished in 0.0 seconds. 0 tests, 0 assertions, 0 failures, 0 errors c:\dve\ideeli_trunk\lib\tasks>rake SRC=db/fixtures/demo load_my_fixtures rake SRC=db/fixtures/demo load_my_fixtures (in c:/dve/ideeli_trunk) Loading Fixtures from db/fixtures/demo Loaded suite c:/ruby/bin/rake.bat Started Finished in 0.0 seconds. 0 tests, 0 assertions, 0 failures, 0 errors -- end output -- -- Output from running rake deploy_demo --trace -- c:\dve\ideeli_trunk\lib\tasks>rake deploy_demo --trace rake deploy_demo --trace (in c:/dve/ideeli_trunk) ** Invoke deploy_demo (first_time) ** Invoke db:purge (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute db:purge ** Invoke db:migrate (first_time) ** Invoke environment ** Execute db:migrate ** Invoke db:schema:dump (first_time) ** Invoke environment ** Execute db:schema:dump ** Execute deploy_demo ** Invoke load_my_fixtures (first_time) ** Invoke environment ** Execute load_my_fixtures Loading Fixtures from db/fixtures/demo rake aborted! Mysql::Error: #42S02Table ''ideeli_development.blog_comments'' doesn''t exist: DELETE FROM blog_comments c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract_adapter.rb:120:in `log'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb:184:in `execute'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb:199:in `delete'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/fixtures.rb:283:in `delete_existing_fixtures'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/fixtures.rb:256:in `create_fixtures'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/fixtures.rb:256:in `create_fixtures'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/connection_adapters/abstract/database_statements.rb:51:in `transaction'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/fixtures.rb:255:in `create_fixtures'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:794:in `silence'' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/fixtures.rb:248:in `create_fixtures'' ./lib/tasks/load_my_fixtures.rake:14 ./lib/tasks/load_my_fixtures.rake:12 c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:387:in `execute'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:387:in `execute'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:357:in `invoke'' c:/ruby/lib/ruby/1.8/thread.rb:135:in `synchronize'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:350:in `invoke'' ./lib/tasks/deploy_demo.rake:9 c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:387:in `execute'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:387:in `execute'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:357:in `invoke'' c:/ruby/lib/ruby/1.8/thread.rb:135:in `synchronize'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:350:in `invoke'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:1906:in `run'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake.rb:1906:in `run'' c:/ruby/lib/ruby/gems/1.8/gems/rake-0.7.1/bin/rake:7 c:/ruby/bin/rake.bat:25 -- end -- When I check the db after running rake deploy_demo it is entirely empty (ie. no tables). Any ideas? Thanks, Mark --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---