Never been to DZone Snippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

« Newer Snippets
Older Snippets »
Showing 1-3 of 3 total  RSS 

Converting Mysql Tables in InnoDB

// description of your code here

class ConvertMysqlToInnodb < ActiveRecord::Migration
 def self.up
   config = ActiveRecord::Base.configurations
   begin
     STDERR.puts "Migrating all existing tables to InnoDB"
     schema = []
     select_all('SHOW TABLES').inject([]) do |schema, table|
       schema << "ALTER TABLE #{table.to_a.first.last} ENGINE=InnoDB"
     end
     schema.each { |line| execute line }
   end if config[RAILS_ENV]['adapter'] == 'mysql' unless $schema_generator
 end
source http://trac.typosphere.org/browser/trunk/db/migrate/015_convert_mysql_to_innodb.rb

 def self.down
   # don't do anything
   # this is a one-way migration, but it's not "irreversable"
   # because it doesn't change any code logic
 end
end

rails generator syntax

// generate application
rails projectname


// generate migration.
ruby script/generate migration migration_name
ruby script/generate migration add_price


// generate model
// we can give a list of columns and types
// :string, :text, :integer, :decimal, :float, :date, ...
ruby script/generate model model_name
ruby script/generate model user name:string hashed_password:string salt:string


// generate controller
ruby script/generate controller controller_name method_name(s)
ruby script/generate controller store index


// generate scaffold
ruby script/generate scaffold model_name controller_name
ruby script/generate scaffold product admin

tip: recover from failed rails 'down' migration

From: http://jamis.jamisbuck.org/articles/2005/12/14/two-tips-for-working-with-databases-in-rails

The second tip is handy when you’re working on a migration. I find that the process (for me) works like this:

* Create the migration and run it.
* Discover I forgot something.
* Migrate down to the previous schema version.
* Change the migration and run it again.

(Repeat as necessary.) However, being the imperfect programmer that I am, I find that I often implement the #down method incorrectly, forgetting to drop a table or remove a column. Thus, when I try to run the migration again, it fails saying that the table/column already exists.

Using script/console and ActiveRecord::Schema, it becomes a cinch to clean up the artifacts:
ActiveRecord::Schema.define do
    drop_table :foos
    remove_column :bars, :blitz
    remove_column :bars, :things
  end
« Newer Snippets
Older Snippets »
Showing 1-3 of 3 total  RSS