Commit f8da7f59f1b12f792cbcdb57ce5dba0c4672a11a

Consolidated migrations
Removed acts_as_taggable

Commit diff

app/models/project.rb

 
11class Project < ActiveRecord::Base
2 acts_as_taggable
3
42 belongs_to :user
53 has_many :comments, :dependent => :destroy
64 has_many :repositories, :order => "repositories.mainline desc, repositories.created_at asc",
1313 has_many :users, :through => :members
1414 has_many :articles
1515
16 is_indexed :fields => ["title", "description", "slug"],
17 :concatenate => [
18 { :class_name => 'Tag',
19 :field => 'name',
20 :as => 'category',
21 :association_sql => "LEFT OUTER JOIN taggings ON taggings.taggable_id = projects.id " +
22 "AND taggings.taggable_type = 'Project' LEFT OUTER JOIN tags ON taggings.tag_id = tags.id"
23 }],
24 :include => [{
25 :association_name => "user",
26 :field => "login",
27 :as => "user"
28 }]
29
30
3116 URL_FORMAT_RE = /^(http|https|nntp):\/\//.freeze
3217 validates_presence_of :title, :user_id, :slug
3318 validates_uniqueness_of :slug, :case_sensitive => false
toggle raw diff

config/initializers/class_settings.rb

 
0TagList.delimiter = " "
toggle raw diff

db/migrate/001_create_users.rb

 
99 t.column :updated_at, :datetime
1010 t.column :remember_token, :string
1111 t.column :remember_token_expires_at, :datetime
12
12 t.integer :ssh_key_id, :references => nil
13 t.text :ssh_key
14 t.string :fullname
15 t.string :slug
16 t.string :url
1317 t.column :activation_code, :string, :limit => 40
1418 t.column :activated_at, :datetime
19 t.timestamps
1520 end
1621
22 add_index :users, :id
1723 add_index :users, :login
1824 add_index :users, :email
25 add_index :users, :slug
1926 end
2027
2128 def self.down
toggle raw diff

db/migrate/002_create_projects.rb

 
11class CreateProjects < ActiveRecord::Migration
2
23 def self.up
34 create_table :projects do |t|
4 t.column :name, :string
5 t.column :title, :string
56 t.column :description, :text
6 t.column :user_id, :integer, :references => nil
7 t.column :created_at, :datetime
8 t.column :updated_at, :datetime
7 t.column :user_id, :integer
8 t.string :slug, :unique => true
9 t.string :license
10 t.string :home_url
11 t.string :mailinglist_url
12 t.string :bugtracker_url
13 t.column :audience, :enum, :limit => [:public, :members_only], :default => :public
14 t.column :status, :enum, :limit => [:active, :inactive], :default => :active
15 t.column :life_cycle, :enum, :limit => [:planning, :pre_alpha, :alpha, :beta, :stable, :mature_frozen, :other], :default => :pre_alpha
16 t.column :os, :enum, :limit => [:mac_os, :win32, :linux, :independent, :other, :notapplicable], :default => :independent
17 t.column :platform, :enum, :limit => [:ruby, :rails, :dotnet, :python, :php, :other, :notapplicable], :default => :rails
18 t.integer :views, :default => 0
19 t.integer :wiki_id, :references => nil
20 t.timestamps
921 end
10
11 add_index :projects, :name
22 add_index :projects, :id
23 add_index :projects, :title
1224 add_index :projects, :user_id
25 add_index :projects, :slug
26 add_index :projects, [:audience, :status]
27
28 #
29 create_table :members do |t|
30 t.column :accesslevel, :enum, :limit => [:readonly, :modify, :admin], :default => :modify
31 t.integer :project_id, :null => false
32 t.integer :user_id, :null => false
33 t.timestamps
34 end
35 add_index :members, [:id]
36 add_index :members, [:project_id]
37 add_index :members, [:user_id]
1338 end
1439
1540 def self.down
41 drop_table :members
1642 drop_table :projects
1743 end
1844end
toggle raw diff

db/migrate/003_create_repositories.rb

 
1class CreateRepositories < ActiveRecord::Migration
2 def self.up
3 create_table :repositories do |t|
4 t.string :name
5 t.string :description
6 t.integer :project_id, :references => nil
7 t.integer :user_id, :references => nil
8 t.boolean :mainline, :default => false
9 t.integer :parent_id, :references => nil
10 t.boolean :ready, :default => false
11 t.timestamps
12 end
13 add_index :repositories, :id
14 add_index :repositories, :name
15 add_index :repositories, :project_id
16 add_index :repositories, :user_id
17 add_index :repositories, :parent_id
18 end
19
20 def self.down
21 drop_table :repositories
22 end
23end
toggle raw diff

db/migrate/003_rename_project_name_to_title.rb

 
0class RenameProjectNameToTitle < ActiveRecord::Migration
1 def self.up
2 rename_column :projects, :name, :title
3 end
4
5 def self.down
6 rename_column :projects, :title, :name
7 end
8end
toggle raw diff

db/migrate/004_create_committerships.rb

 
1class CreateCommitterships < ActiveRecord::Migration
2 def self.up
3 create_table :committerships do |t|
4 t.integer :user_id
5 t.integer :repository_id
6 t.integer :kind, :default => 2
7 t.timestamps
8 end
9 add_index :committerships, :user_id
10 add_index :committerships, :repository_id
11 end
12
13 def self.down
14 drop_table :committerships
15 end
16end
toggle raw diff

db/migrate/004_create_repositories.rb

 
0class CreateRepositories < ActiveRecord::Migration
1 def self.up
2 create_table :repositories do |t|
3 t.string :name
4 t.integer :project_id, :references => nil
5 t.integer :user_id, :references => nil
6
7 t.timestamps
8 end
9 add_index :repositories, :name
10 add_index :repositories, :project_id
11 add_index :repositories, :user_id
12 end
13
14 def self.down
15 drop_table :repositories
16 end
17end
toggle raw diff

db/migrate/005_add_ssh_key_to_users.rb

 
0class AddSshKeyToUsers < ActiveRecord::Migration
1 def self.up
2 add_column :users, :ssh_key, :text
3 end
4
5 def self.down
6 remove_column :users, :ssh_key
7 end
8end
toggle raw diff

db/migrate/005_create_ssh_keys.rb

 
1class CreateSshKeys < ActiveRecord::Migration
2 def self.up
3 create_table :ssh_keys do |t|
4 t.integer :user_id
5 t.boolean :ready, :default => false
6 t.text :key
7 t.timestamps
8 end
9 add_index :ssh_keys, :user_id
10 add_index :users, :ssh_key_id
11 end
12
13 def self.down
14 drop_table :ssh_keys
15 end
16end
toggle raw diff

db/migrate/006_add_slug_to_projects.rb

 
0class AddSlugToProjects < ActiveRecord::Migration
1 def self.up
2 add_column :projects, :slug, :string
3 add_index :projects, :slug, :unique => true
4 end
5
6 def self.down
7 remove_column :projects, :slug
8 end
9end
toggle raw diff

db/migrate/006_create_tasks.rb

 
1class CreateTasks < ActiveRecord::Migration
2 def self.up
3 create_table :tasks do |t|
4 t.string :target_class
5 t.string :command
6 t.text :arguments
7 t.boolean :performed, :default => false
8 t.datetime :performed_at
9 t.integer :target_id, :references => nil
10 t.timestamps
11 end
12 add_index :tasks, :performed
13 end
14
15 def self.down
16 drop_table :tasks
17 end
18end
toggle raw diff

db/migrate/007_add_mainline_to_projects.rb

 
0class AddMainlineToProjects < ActiveRecord::Migration
1 def self.up
2 add_column :repositories, :mainline, :boolean, :default => false
3 add_column :repositories, :parent_id, :integer, :references => nil
4 add_index :repositories, :parent_id
5 end
6
7 def self.down
8 remove_column :repositories, :mainline
9 remove_column :repositories, :parent_id
10 end
11end
toggle raw diff

db/migrate/007_create_comments.rb

 
1class CreateComments < ActiveRecord::Migration
2 def self.up
3 create_table :comments do |t|
4 t.integer :user_id, :null => false
5 t.integer :repository_id, :null => false
6 t.string :sha1, :null => true
7 t.text :body
8 t.integer :project_id
9 t.timestamps
10 end
11 add_index :comments, :id
12 add_index :comments, :user_id
13 add_index :comments, :repository_id
14 add_index :comments, :sha1
15 add_index :comments, :project_id
16 end
17
18 def self.down
19 drop_table :comments
20 end
21end
toggle raw diff

db/migrate/008_create_merge_requests.rb

 
1class CreateMergeRequests < ActiveRecord::Migration
2 def self.up
3 create_table :merge_requests do |t|
4 t.integer :user_id, :references => nil
5 t.integer :source_repository_id, :references => nil
6 t.integer :target_repository_id, :references => nil
7 t.text :proposal
8 t.string :sha_snapshot
9 t.integer :status, :default => 0
10 t.string :source_branch
11 t.string :target_branch
12 t.timestamps
13 end
14 add_index :merge_requests, :user_id
15 add_index :merge_requests, :source_repository_id
16 add_index :merge_requests, :target_repository_id
17 add_index :merge_requests, :status
18 end
19
20 def self.down
21 drop_table :merge_requests
22 end
23end
toggle raw diff

db/migrate/008_create_permissions.rb

 
0class CreatePermissions < ActiveRecord::Migration
1 def self.up
2 create_table :permissions do |t|
3 t.integer :user_id, :references => nil
4 t.integer :repository_id, :references => nil
5 t.integer :kind, :default => 2
6
7 t.timestamps
8 end
9 add_index :permissions, :user_id
10 add_index :permissions, :repository_id
11 end
12
13 def self.down
14 drop_table :permissions
15 end
16end
toggle raw diff

db/migrate/009_add_more_info_to_projects.rb

 
0class AddMoreInfoToProjects < ActiveRecord::Migration
1 def self.up
2 add_column :projects, :license, :string
3 add_column :projects, :home_url, :string
4 add_column :projects, :mailinglist_url, :string
5 add_column :projects, :bugtracker_url, :string
6 end
7
8 def self.down
9 remove_column :projects, :license
10 remove_column :projects, :home_url
11 remove_column :projects, :mailinglist_url
12 remove_column :projects, :bugtracker_url
13 end
14end
toggle raw diff

db/migrate/009_create_wikis.rb

 
1class CreateWikis < ActiveRecord::Migration
2
3 def self.up
4
5 create_table :wikis do |t|
6 t.string :title, :default => "", :null => false
7 t.string :slug, :unique => true
8 t.text :page
9 t.column :status, :enum, :limit => [:draft, :published, :test, :deleted], :default => :draft
10 t.column :format, :enum, :limit => [:markdown, :monospace, :image], :default => :markdown
11 t.integer :project_id, :null => true
12 # only allow project members to see it
13 #FIXME possibly redundant - would you ever want to hide a page (outside of the normal project audience setting?)
14 t.column :audience, :enum, :limit => [:public, :members], :default => :public
15 t.integer :views, :default => 0
16 t.timestamps
17 end
18
19 end
20
21 def self.down
22 drop_table :wikis
23 end
24
25end
26
toggle raw diff

db/migrate/010_create_events.rb

 
1
2# Journal - changes to models like Wiki, Article, Ticket
3# Repository - change or repository event (commit, clone etc.)
4# Message - messages posted by developers (different to a commit message, and different to an article)
5# Error - error log messages
6# Debug - debug log messages
7# System - system log messages
8#
9# Note: Journal events table in CreateJournal
10
11
12class CreateEvents < ActiveRecord::Migration
13
14 def self.up
15 create_table :events do |t|
16 t.column :entry_type, :enum, :limit => [:journal, :repository, :message, :error, :system, :debug]
17 t.integer :project_id
18 t.integer :user_id
19 t.integer :entry_id, :references => nil
20 t.timestamps
21 end
22 add_index :events, [:id]
23 add_index :events, [:project_id]
24 add_index :events, [:user_id]
25 add_index :events, [:entry_type]
26
27 create_table :debug_events do |t|
28 t.string :summary
29 end
30 add_index :debug_events, [:id]
31
32 create_table :system_events do |t|
33 t.string :summary
34 end
35 add_index :system_events, [:id]
36
37 create_table :error_events do |t|
38 t.string :summary
39 end
40 add_index :error_events, [:id]
41 end
42
43
44 def self.down
45 drop_table :error_events
46 drop_table :system_events
47 drop_table :debug_events
48 drop_table :events
49 end
50end
toggle raw diff

db/migrate/010_create_ssh_keys.rb

 
0class CreateSshKeys < ActiveRecord::Migration
1 def self.up
2 create_table :ssh_keys do |t|
3 t.integer :user_id, :references => nil
4 t.text :key
5 t.timestamps
6 end
7 remove_column :users, :ssh_key
8 add_column :users, :ssh_key_id, :integer, :references => nil
9 add_index :ssh_keys, :user_id
10 add_index :users, :ssh_key_id
11 end
12
13 def self.down
14 drop_table :ssh_keys
15 add_column :users, :ssh_key, :text
16 remove_column :users, :ssh_key_id
17 end
18end
toggle raw diff

db/migrate/011_add_ready_status_to_repositories.rb

 
0class AddReadyStatusToRepositories < ActiveRecord::Migration
1 def self.up
2 add_column :repositories, :ready, :boolean, :default => false
3 add_index :repositories, :ready
4 end
5
6 def self.down
7 remove_column :repositories, :ready
8 end
9end
toggle raw diff

db/migrate/011_create_journals.rb

 
1#
2# The journal keeps a log of changed fields (that need journalling)
3#
4# history queries needed:
5# history of a row - select from journal where model_type = :article and row_id = 1
6# history of a specific column in a row - select from journal where model_type = :article and row_id = 1 and changes.model_column = :price
7# history of all changes by user or ip
8# history last 100 changes
9#
10# Issues:
11# How do we handle new columns created on existing rows
12#
13class CreateJournals < ActiveRecord::Migration
14
15 def self.up
16
17 # one journal entry for every create or update action
18 create_table :journals do |t|
19 t.column :model_type, :enum, :limit => [:article, :ticket, :wiki, :comment]
20 t.string :summary
21 t.integer :row_id, :references => nil # key back to the owner (e.g. article_id)
22 t.column :action, :enum, :limit => [:create, :update]
23 t.integer :user_id
24 t.string :ip
25 t.timestamps
26 end
27 add_index :journals, [:id, :model_type, :row_id]
28 add_index :journals, [:user_id]
29 add_index :journals, [:ip]
30
31 # one change entry for every field changed
32 create_table :changes do |t|
33 t.integer :journal_id
34 t.string :model_column # the name of the column that changed
35 t.column :datatype, :enum, :limit => [:string, :text, :integer, :enum, :datetime, :boolean]
36 t.integer :data_id, :references => nil
37 end
38 add_index :changes, [:id]
39 add_index :changes, [:journal_id, :model_column]
40
41 create_table :changed_strings do |t|
42 t.string :data
43 end
44 add_index :changed_strings, [:id]
45
46 create_table :changed_texts do |t|
47 t.text :data
48 end
49 add_index :changed_texts, [:id]
50
51 create_table :changed_integers do |t|
52 t.integer :data
53 end
54 add_index :changed_integers, [:id]
55
56 create_table :changed_floats do |t|
57 t.float :data
58 end
59 add_index :changed_floats, [:id]
60
61 create_table :changed_datetimes do |t|
62 t.integer :data
63 end
64 add_index :changed_datetimes, [:id]
65
66 create_table :changed_booleans do |t|
67 t.boolean :data
68 end
69 add_index :changed_booleans, [:id]
70
71 create_table :changed_enums do |t|
72 t.string :data
73 end
74 add_index :changed_enums, [:id]
75
76 end
77
78 def self.down
79 drop_table :changed_enums
80 drop_table :changed_booleans
81 drop_table :changed_datetimes
82 drop_table :changed_floats
83 drop_table :changed_integers
84 drop_table :changed_texts
85 drop_table :changed_strings
86 drop_table :changes
87 drop_table :journals
88 end
89
90end
91
92
93
toggle raw diff

db/migrate/012_acts_as_taggable_migration.rb

 
0class ActsAsTaggableMigration < ActiveRecord::Migration
1 def self.up
2 create_table :tags do |t|
3 t.column :name, :string
4 end
5 add_index :tags, :name, :unique => true
6
7 create_table :taggings do |t|