Using the below code on one of our bigger dummy tables, the migration process still locks the table itself and prevents access. Doing other operations such as add/remove column work without locking it, however trying to change the length of a column still locks it.
Lhm.change_table :shipments, :atomic_switch => true do |m|
m.ddl("ALTER TABLE shipments MODIFY tracking_number VARCHAR(255) NOT NULL;")
end
Lhm.change_table :shipments, :atomic_switch => true do |m|
m.change_column :tracking_number, "VARCHAR(255)"
end