Skip to content

Commit

Permalink
Make sure rake db:migrate works as well as rake db:create
Browse files Browse the repository at this point in the history
  • Loading branch information
Dimitrij Denissenko committed Dec 5, 2009
1 parent c6780e5 commit f98df69
Show file tree
Hide file tree
Showing 7 changed files with 231 additions and 57 deletions.
3 changes: 3 additions & 0 deletions .gems
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
will_paginate --version '>= 2.3.8'
acts-as-taggable-on --version '>= 1.0.3'
RedCloth --version '>= 4.1.9'
165 changes: 165 additions & 0 deletions db/migrate/001_create_base_tables.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
class CreateBaseTables < ActiveRecord::Migration
def self.up
create_table "attachments" do |t|
t.string "original_filename"
t.string "content_type"
t.string "attachable_type", :limit => 30
t.integer "attachable_id"
end

create_table "changes" do |t|
t.integer "changeset_id"
t.string "revision", :limit => 40, :default => "0", :null => false
t.string "name", :limit => 2, :default => "", :null => false
t.string "path"
t.string "from_path"
t.string "from_revision", :limit => 40
t.integer "repository_id"
end

create_table "changesets" do |t|
t.string "revision", :limit => 40
t.string "author", :limit => 50
t.text "log"
t.datetime "created_at"
t.datetime "revised_at"
t.integer "repository_id", :default => 0, :null => false
end

create_table "factory_hashcashes" do |t|
end

create_table "groups" do |t|
t.string "name", :limit => 40
t.text "permissions"
t.boolean "access_to_all_projects", :default => false, :null => false
end

create_table "groups_projects", :id => false do |t|
t.integer "group_id"
t.integer "project_id"
end

create_table "groups_users", :id => false do |t|
t.integer "group_id"
t.integer "user_id"
end

create_table "milestones" do |t|
t.string "name", :limit => 75
t.text "info"
t.date "due"
t.datetime "created_at"
t.integer "project_id"
t.date "finished_on"
end

create_table "priorities" do |t|
t.string "name", :limit => 50
t.integer "position", :default => 9999
end

create_table "projects" do |t|
t.string "name"
t.text "info"
t.string "short_name"
t.boolean "closed", :default => false, :null => false
t.integer "repository_id"
t.string "root_path", :default => ""
t.text "disabled_modules"
end

create_table "repositories" do |t|
t.string "name"
t.string "path"
end

create_table "sessions", :id => false do |t|
t.string "session_id"
end

create_table "status" do |t|
t.string "name", :limit => 25
end

create_table "tans", :force => true do |t|
t.string "value"
t.datetime "expires_at"
end

create_table "taggings" do |t|
t.integer "tag_id"
t.integer "taggable_id"
t.string "taggable_type", :limit => 30
end

create_table "tags" do |t|
t.string "name"
end

create_table "ticket_changes" do |t|
t.integer "ticket_id"
t.string "author", :limit => 75
t.text "comment"
t.datetime "created_at"
t.text "changes"
t.string "email", :limit => 75
t.integer "user_id"
t.boolean "approved"
t.boolean "spam"
end

create_table "ticket_reports" do |t|
t.string "name", :limit => 100
t.integer "position", :default => 9999, :null => false
t.text "filter_options"
t.integer "time_interval"
t.integer "project_id"
end

create_table "tickets" do |t|
t.integer "milestone_id"
t.integer "priority_id"
t.integer "status_id"
t.string "author", :limit => 75
t.string "summary"
t.text "content"
t.string "author_host", :limit => 100
t.datetime "created_at"
t.integer "project_id"
t.integer "assigned_user_id"
t.string "email", :limit => 75
t.datetime "updated_at"
t.integer "user_id"
t.integer "release_id"
t.integer "component_id"
t.boolean "approved"
t.boolean "spam"
end

create_table "users" do |t|
t.string "login", :limit => 80
t.string "password", :limit => 40
t.datetime "created_at"
t.boolean "admin", :default => false, :null => false
t.string "name", :limit => 80
t.string "email", :limit => 80
t.string "salt", :limit => 8
t.boolean "active", :default => true, :null => false
t.string "activation_code"
end

create_table "components" do |t|
t.column "name", :string, :limit => 50
t.column "project_id", :integer
end

create_table "releases" do |t|
t.column "name", :string, :limit => 25
t.column "project_id", :integer
end
end

def self.down
end
end
8 changes: 4 additions & 4 deletions db/migrate/059_structural_database_changes01.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
class StructuralDatabaseChanges01 < ActiveRecord::Migration
def self.up
change_column :milestones, :rank, :integer, :limit => 4, :default => 9999
change_column :priorities, :rank, :integer, :limit => 4, :default => 9999
change_column :status, :rank, :integer, :limit => 4, :default => 9999
change_column :ticket_reports, :rank, :integer, :limit => 4, :default => 9999
change_column :milestones, :rank, :integer, :default => 9999
change_column :priorities, :rank, :integer, :default => 9999
change_column :status, :rank, :integer, :default => 9999
change_column :ticket_reports, :rank, :integer, :default => 9999

change_column :changes, :repository_id, :integer, :default => nil
add_index :changes, :repository_id
Expand Down
66 changes: 35 additions & 31 deletions db/migrate/060_structural_database_changes02.rb
Original file line number Diff line number Diff line change
@@ -1,36 +1,40 @@
class StructuralDatabaseChanges02 < ActiveRecord::Migration
def self.try_removing_index(*args)
remove_index(*args) rescue nil
end

def self.up
remove_index "attachments", :name => "attachments_attachable_type_index"
remove_index "changes", :name => "changes_changeset_id_index"
remove_index "changes", :name => "index_changes_on_repository_id"
remove_index "changesets", :name => "changesets_repository_id_index"
remove_index "groups_projects", :name => "groups_projects_group_id_index"
remove_index "groups_users", :name => "groups_users_group_id_index"
remove_index "milestones", :name => "milestones_project_id_index"
remove_index "milestones", :name => "index_milestones_on_rank"
remove_index "priorities", :name => "index_priorities_on_rank"
remove_index "projects", :name => "projects_short_name_index"
remove_index "projects", :name => "projects_repository_id_index"
remove_index "sessions", :name => "sessions_session_id_index"
remove_index "status", :name => "index_status_on_rank"
remove_index "taggings", :name => "taggings_tag_id_index"
remove_index "tags", :name => "tags_name_index"
remove_index "ticket_changes", :name => "ticket_changes_ticket_id_index"
remove_index "ticket_properties", :name => "index_ticket_properties_on_rank"
remove_index "ticket_properties", :name => "index_ticket_properties_on_ticket_property_type_id"
remove_index "ticket_properties_tickets", :name => "uidx_ticket_properties_tickets", :unique => true
remove_index "ticket_property_types", :name => "index_ticket_property_types_on_project_id"
remove_index "ticket_reports", :name => "ticket_reports_project_id_index"
remove_index "ticket_subscribers", :name => "index_ticket_subscribers_on_ticket_id"
remove_index "ticket_subscribers", :name => "index_ticket_subscribers_on_user_id"
remove_index "tickets", :name => "tickets_milestone_id_index"
remove_index "tickets", :name => "tickets_priority_id_index"
remove_index "tickets", :name => "tickets_status_id_index"
remove_index "tickets", :name => "tickets_project_id_index"
remove_index "tickets", :name => "tickets_assigned_user_id_index"
remove_index "users", :name => "index_users_on_private_key"
remove_index "users", :name => "index_users_on_login"

try_removing_index "attachments", :name => "attachments_attachable_type_index"
try_removing_index "changes", :name => "changes_changeset_id_index"
try_removing_index "changes", :name => "index_changes_on_repository_id"
try_removing_index "changesets", :name => "changesets_repository_id_index"
try_removing_index "groups_projects", :name => "groups_projects_group_id_index"
try_removing_index "groups_users", :name => "groups_users_group_id_index"
try_removing_index "milestones", :name => "milestones_project_id_index"
try_removing_index "milestones", :name => "index_milestones_on_rank"
try_removing_index "priorities", :name => "index_priorities_on_rank"
try_removing_index "projects", :name => "projects_short_name_index"
try_removing_index "projects", :name => "projects_repository_id_index"
try_removing_index "sessions", :name => "sessions_session_id_index"
try_removing_index "status", :name => "index_status_on_rank"
try_removing_index "taggings", :name => "taggings_tag_id_index"
try_removing_index "tags", :name => "tags_name_index"
try_removing_index "ticket_changes", :name => "ticket_changes_ticket_id_index"
try_removing_index "ticket_properties", :name => "index_ticket_properties_on_rank"
try_removing_index "ticket_properties", :name => "index_ticket_properties_on_ticket_property_type_id"
try_removing_index "ticket_properties_tickets", :name => "uidx_ticket_properties_tickets", :unique => true
try_removing_index "ticket_property_types", :name => "index_ticket_property_types_on_project_id"
try_removing_index "ticket_reports", :name => "ticket_reports_project_id_index"
try_removing_index "ticket_subscribers", :name => "index_ticket_subscribers_on_ticket_id"
try_removing_index "ticket_subscribers", :name => "index_ticket_subscribers_on_user_id"
try_removing_index "tickets", :name => "tickets_milestone_id_index"
try_removing_index "tickets", :name => "tickets_priority_id_index"
try_removing_index "tickets", :name => "tickets_status_id_index"
try_removing_index "tickets", :name => "tickets_project_id_index"
try_removing_index "tickets", :name => "tickets_assigned_user_id_index"
try_removing_index "users", :name => "index_users_on_private_key"
try_removing_index "users", :name => "index_users_on_login"
add_index "attachments", ["attachable_type", "attachable_id"], :name => "i_att_on_type_and_id"
add_index "changes", ["changeset_id"], :name => "i_changes_on_changeset"
add_index "changes", ["repository_id"], :name => "i_changes_on_repository_id"
Expand Down
36 changes: 19 additions & 17 deletions db/migrate/062_update_changed_attributes_in_all_ticket_changes.rb
Original file line number Diff line number Diff line change
@@ -1,30 +1,32 @@
class UpdateChangedAttributesInAllTicketChanges < ActiveRecord::Migration
def self.up
TicketChange.find(:all).each do |change|
unless change.changes.blank?
change.changes.keys.each do |key|
if ['Author', 'Email'].include?(key.humanize)
change.changes.delete(key)
elsif key.humanize != key
change.changes[key.humanize] = change.changes.delete(key)
end
select_all("SELECT * FROM ticket_changes").each do |change|
changes = YAML.load(change['changes'])
next if changes.blank?

changes.keys.each do |key|
if ['Author', 'Email'].include?(key.humanize)
changes.delete(key)
elsif key.humanize != key
changes[key.humanize] = changes.delete(key)
end
change.save
end
update_sql "UPDATE ticket_changes SET changes = #{quote(changes.to_yaml)} WHERE id = #{change['id']}"
end rescue true
end

def self.down
TicketChange.find(:all).each do |change|
unless change.changes.blank?
change.changes.keys.each do |key|
fkey = key.dup.gsub(%r{ }, '_').downcase + '_id'
if fkey != key
change.changes[fkey] = change.changes.delete(key)
end
select_all("SELECT * FROM ticket_changes").each do |change|
changes = YAML.load(change['changes'])
next if changes.blank?

changes.keys.each do |key|
fkey = key.dup.gsub(%r{ }, '_').downcase + '_id'
if fkey != key
changes[fkey] = changes.delete(key)
end
change.save
end
update_sql "UPDATE ticket_changes SET changes = #{quote(changes.to_yaml)} WHERE id = #{change['id']}"
end rescue true
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ def self.up
def self.down
change_column :projects, :closed, :boolean, :null => true

add_column 'ticket_changes', "approved", :default => false, :null => false
add_column 'ticket_changes', "spam", :default => false, :null => false
add_column 'tickets', "approved", :default => false, :null => false
add_column 'tickets', "spam", :default => false, :null => false
add_column 'ticket_changes', "approved", :boolean, :default => false, :null => false
add_column 'ticket_changes', "spam", :boolean, :default => false, :null => false
add_column 'tickets', "approved", :boolean, :default => false, :null => false
add_column 'tickets', "spam", :boolean, :default => false, :null => false

remove_index :changes, :name => "i_changes_on_from_path"
remove_index :changes, :name => "i_changes_on_path"
Expand Down
2 changes: 1 addition & 1 deletion db/schema.core.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#
# It's strongly recommended to check this file into your version control system.

ActiveRecord::Schema.define(:version => 20090419112736) do
ActiveRecord::Schema.define(:version => 20090504172000) do

create_table "attachments", :force => true do |t|
t.string "file_name"
Expand Down

0 comments on commit f98df69

Please sign in to comment.