Commit 5f75f8504497fd49a2bae51062bd030adb024ce3

Authored by Stephen Crosby
2 parents ce36171d d5337194
Exists in master and in 1 other branch production

Merge pull request #925 from stevecrozz/purge_old_migrations

purge old migrations
Gemfile
... ... @@ -9,6 +9,7 @@ gem 'actionpack', RAILS_VERSION
9 9 gem 'railties', RAILS_VERSION
10 10  
11 11 gem 'mongoid', '5.0.0.beta'
  12 +gem 'mongoid_rails_migrations'
12 13  
13 14 gem 'devise'
14 15 gem 'haml'
... ...
Gemfile.lock
... ... @@ -184,6 +184,11 @@ GEM
184 184 mongoid (>= 3.0.1)
185 185 rake
186 186 rspec (>= 2.14)
  187 + mongoid_rails_migrations (1.0.1)
  188 + activesupport (>= 3.2.0)
  189 + bundler (>= 1.0.0)
  190 + rails (>= 3.2.0)
  191 + railties (>= 3.2.0)
187 192 multi_json (1.11.2)
188 193 multi_xml (0.5.5)
189 194 multipart-post (2.0.0)
... ... @@ -211,7 +216,6 @@ GEM
211 216 omniauth-oauth2 (1.3.1)
212 217 oauth2 (~> 1.0)
213 218 omniauth (~> 1.2)
214   - optionable (0.2.0)
215 219 origin (2.1.1)
216 220 orm_adapter (0.5.0)
217 221 pjax_rails (0.4.0)
... ... @@ -423,6 +427,7 @@ DEPENDENCIES
423 427 meta_request
424 428 mongoid (= 5.0.0.beta)
425 429 mongoid-rspec
  430 + mongoid_rails_migrations
426 431 omniauth-github
427 432 pjax_rails
428 433 poltergeist
... ...
README.md
... ... @@ -195,7 +195,13 @@ rake assets:precompile
195 195  
196 196 This will ensure that your application stays up to date with any schema changes.
197 197  
198   -### Upgrading errbit from version 0.3 to 0.4
  198 +### Upgrading errbit beyond v0.4.0
  199 +
  200 +* You must have already run migrations at least up to v0.3.0. Check to
  201 + make sure you're schema version is at least 20131011155638 by running rake
  202 + db:version before you upgrade beyond v0.4.0
  203 +
  204 +### Upgrading errbit from v0.3.0 to v0.4.0
199 205  
200 206 * All configuration is now done through the environment. See
201 207 [configuration](docs/configuration.md)
... ...
db/migrate/20110422152027_move_notices_to_separate_collection.rb
... ... @@ -1,38 +0,0 @@
1   -class MoveNoticesToSeparateCollection < Mongoid::Migration
2   - def self.up
3   - errs_coll = connection["errs"]
4   -
5   - # copy embedded Notices into a separate collection
6   - errs = errs_coll.find.select(notices: 1)
7   - errs.each do |err|
8   - next unless err['notices']
9   -
10   - # This Err was created after the Problem->Err->Notice redesign
11   - next if err['app_id'].nil? or err['problem_id']
12   -
13   - e = Err.find(err['_id'])
14   - # disable email notifications
15   - old_notify = e.app.notify_on_errs?
16   - e.app.update_attribute(:notify_on_errs, false)
17   - puts "Copying notices for Err #{err['_id']}"
18   - err['notices'].each do |notice|
19   - e.notices.create!(notice)
20   - end
21   - e.app.update_attribute(:notify_on_errs, old_notify)
22   - errs_coll.find({ "_id" => err['_id']}).update({ "$unset" => { "notices" => 1}})
23   - end
24   - (
25   - Problem.where(:environment => '') |
26   - Problem.where(:environment => nil) |
27   - Problem.where(:environment => {})
28   - ).each {|pr|
29   - pr.update_attributes(:environment => 'old')
30   - }
31   - Rake::Task["errbit:db:update_notices_count"].invoke
32   - Rake::Task["errbit:db:update_problem_attrs"].invoke
33   - end
34   -
35   - def self.down
36   - end
37   -end
38   -
db/migrate/20110812135951_move_issue_trackers_to_sti.rb
... ... @@ -1,36 +0,0 @@
1   -class MoveIssueTrackersToSti < Mongoid::Migration
2   - def self.up
3   - App.all.each do |app|
4   - # Update all embedded issue trackers to use STI patterns.
5   - # All issue trackers now subclass the IssueTracker model,
6   - # and their class is stored in the '_type' field, which is
7   - # also aliased to 'type'.
8   - tracker = app.attributes['issue_tracker']
9   - if tracker && tracker['issue_tracker_type']
10   - tracker['_type'] = case tracker['issue_tracker_type']
11   - when 'lighthouseapp'; "IssueTrackers::LighthouseTracker"
12   - when 'redmine'; "IssueTrackers::RedmineTracker"
13   - when 'pivotal'; "IssueTrackers::PivotalLabsTracker"
14   - when 'fogbugz'; "IssueTrackers::FogbugzTracker"
15   - when 'mingle'; "IssueTrackers::MingleTracker"
16   - else; nil
17   - end
18   -
19   - if tracker['issue_tracker_type'] == "none"
20   - App.collection.where({ _id: app.id }).update({
21   - "$unset" => { :issue_tracker => 1 }
22   - })
23   - else
24   - tracker.delete('issue_tracker_type')
25   - App.collection.where({ _id: app.id }).update({
26   - "$set" => { :issue_tracker => tracker }
27   - })
28   - end
29   - end
30   - end
31   - end
32   -
33   - def self.down
34   - end
35   -end
36   -
db/migrate/20110905134638_link_errs_to_problems.rb
... ... @@ -1,33 +0,0 @@
1   -class LinkErrsToProblems < Mongoid::Migration
2   - def self.up
3   - puts "== Migrating from Errs to Problems..."
4   -
5   - puts "==== Copy err.klass to notice.klass..."
6   - Notice.all.each do |notice|
7   - if notice.err && (klass = notice.err['klass'])
8   - notice.update_attribute(:klass, klass)
9   - end
10   - end
11   -
12   - puts "==== Create a Problem for each Err..."
13   - Err.all.each do |err|
14   - if err['app_id'] && app = App.where(:_id => err['app_id']).first
15   - err.problem = app.problems.create(:_id => err.id)
16   - err.problem.resolve! if err.resolved
17   - # don't bother checking err for issue link, if it ain't got one the NoMethodError
18   - # is raised, else this works fine.
19   - err.problem.update_attribute(:issue_link, err.issue_link) rescue NoMethodError
20   - err.save
21   - end
22   - end
23   -
24   - puts "==== Updating problem cached attributes..."
25   - Rake::Task["errbit:db:update_problem_attrs"].invoke
26   - puts "==== Updating notice counts..."
27   - Rake::Task["errbit:db:update_notices_count"].invoke
28   - end
29   -
30   - def self.down
31   - end
32   -end
33   -
db/migrate/20111019163257_add_problem_comments_count.rb
... ... @@ -1,10 +0,0 @@
1   -class AddProblemCommentsCount < Mongoid::Migration
2   - def self.up
3   - Problem.all.each do |problem|
4   - problem.update_attributes(:comments_count => problem.comments.count)
5   - end
6   - end
7   -
8   - def self.down
9   - end
10   -end
db/migrate/20111102173347_cache_problem_statistics_fix.rb
... ... @@ -1,33 +0,0 @@
1   -class CacheProblemStatisticsFix < Mongoid::Migration
2   - def self.up
3   - Problem.all.each do |problem|
4   - messages = {}
5   - hosts = {}
6   - user_agents = {}
7   - problem.notices.each do |notice|
8   - messages = count_attribute(messages, notice.message)
9   - hosts = count_attribute(hosts, notice.host)
10   - user_agents = count_attribute(user_agents, notice.user_agent_string)
11   - end
12   - problem.update_attributes(:messages => messages, :hosts => hosts, :user_agents => user_agents)
13   - end
14   - end
15   -
16   - def self.down
17   - Problem.all.each do |problem|
18   - problem.update_attributes(:messages => {}, :hosts => {}, :user_agents => {})
19   - end
20   - end
21   -
22   - private
23   - def self.count_attribute(counter, value)
24   - index = Digest::MD5.hexdigest(value.to_s)
25   - if counter[index].nil?
26   - counter[index] = {'value' => value, 'count' => 1}
27   - else
28   - counter[index]['count'] += 1
29   - end
30   - counter
31   - end
32   -
33   -end
db/migrate/20120530005915_rename_klass_to_error_class.rb
... ... @@ -1,13 +0,0 @@
1   -class RenameKlassToErrorClass < Mongoid::Migration
2   - def self.up
3   - [Problem, Err, Notice].each do |model|
4   - model.collection.find.update({'$rename' => {'klass' => 'error_class'}}, :multi => true, :safe => true)
5   - end
6   - end
7   -
8   - def self.down
9   - [Problem, Err, Notice].each do |model|
10   - model.collection.find.update({'$rename' => {'error_class' => 'klass'}}, :multi => true, :safe => true)
11   - end
12   - end
13   -end
db/migrate/20120603112130_change_github_url_to_github_repo.rb
... ... @@ -1,30 +0,0 @@
1   -class ChangeGithubUrlToGithubRepo < Mongoid::Migration
2   - def self.normalize_github_repo(repo)
3   - return if repo.blank?
4   - github_host = URI.parse(Errbit::Config.github_url).host
5   - github_host = Regexp.escape(github_host)
6   - repo.strip!
7   - repo.sub!(/(git@|https?:\/\/)#{github_host}(\/|:)/, '')
8   - repo.sub!(/\.git$/, '')
9   - repo
10   - end
11   -
12   - def self.up
13   - App.collection.find.update({'$rename' => {'github_url' => 'github_repo'}}, :multi => true, :safe => true)
14   - App.all.each do |app|
15   - normalized_repo = self.normalize_github_repo(app.attributes['github_repo'])
16   - App.collection.where({ _id: app.id }).update({
17   - "$set" => { :github_repo => normalized_repo }
18   - })
19   - end
20   - end
21   -
22   - def self.down
23   - App.collection.find.update({'$rename' => {'github_repo' => 'github_url'}}, :multi => true, :safe => true)
24   - App.all.each do |app|
25   - unless app.github_repo.include?("github.com")
26   - app.update_attribute :github_url, "https://github.com/" << app.github_url
27   - end
28   - end
29   - end
30   -end
db/migrate/20120605091105_set_issue_type_on_problems.rb
... ... @@ -1,12 +0,0 @@
1   -class SetIssueTypeOnProblems < Mongoid::Migration
2   - def self.up
3   - Problem.all.each do |p|
4   - if p.issue_link.present? && p.app.issue_tracker_configured?
5   - p.update_attribute :issue_type, p.app.issue_tracker.label
6   - end
7   - end
8   - end
9   -
10   - def self.down
11   - end
12   -end
db/migrate/20120822195841_set_first_notice_at_on_problems.rb
... ... @@ -1,10 +0,0 @@
1   -class SetFirstNoticeAtOnProblems < Mongoid::Migration
2   - def self.up
3   - Problem.all.each do |problem|
4   - problem.update_attribute :first_notice_at, problem.notices.order_by([:created_at, :asc]).first.try(:created_at)
5   - end
6   - end
7   -
8   - def self.down
9   - end
10   -end
db/migrate/20120829034812_ensure_that_problems_last_notice_at_is_not_nil.rb
... ... @@ -1,23 +0,0 @@
1   -class EnsureThatProblemsLastNoticeAtIsNotNil < Mongoid::Migration
2   - def self.up
3   - Problem.where("$or" => [{:last_notice_at => nil}, {:first_notice_at => nil}]).each do |problem|
4   - first_notice = problem.notices.order_by([:created_at, :asc]).first
5   -
6   - # Destroy problems with no notices
7   - if first_notice.nil?
8   - problem.destroy
9   - next
10   - end
11   -
12   - last_notice = problem.notices.order_by([:created_at, :asc]).last
13   -
14   - problem.update_attributes!({
15   - :first_notice_at => first_notice.created_at,
16   - :last_notice_at => last_notice.created_at
17   - })
18   - end
19   - end
20   -
21   - def self.down
22   - end
23   -end
db/migrate/20121003223358_extract_backtraces.rb
... ... @@ -1,16 +0,0 @@
1   -class ExtractBacktraces < Mongoid::Migration
2   - def self.up
3   - say "It could take long time (hours if you have many Notices)"
4   - Notice.unscoped.where(backtrace_id: nil).each do |notice|
5   - next if notice.backtrace.present? || notice['backtrace'].nil?
6   - backtrace = Backtrace.find_or_create(:raw => notice['backtrace'] || [])
7   - notice.unset(:backtrace)
8   - notice.backtrace = backtrace
9   - notice.save!
10   - end
11   - say "run `db.repairDatabase()` (in mongodb console) to recover deleted space"
12   - end
13   -
14   - def self.down
15   - end
16   -end
db/migrate/20121005142110_regenerate_err_fingerprints.rb
... ... @@ -1,15 +0,0 @@
1   -class RegenerateErrFingerprints < Mongoid::Migration
2   - def self.up
3   - Err.all.each do |err|
4   - if err.notices.any? && err.problem
5   - err.update_attribute(
6   - :fingerprint,
7   - Fingerprint::Sha1.generate(err.notices.first, err.app.api_key)
8   - )
9   - end
10   - end
11   - end
12   -
13   - def self.down
14   - end
15   -end
db/migrate/20130208135718_allow_custom_xmpp_on_gtalk.rb.rb
... ... @@ -1,17 +0,0 @@
1   -class AllowCustomXmppOnGtalk < Mongoid::Migration
2   - def self.up
3   - App.all.each do |app|
4   - if app.notification_service and app.notification_service._type.include?("Gtalk")
5   - user_id = app.notification_service.room_id
6   - app.notification_service.update_attributes(:service => 'talk.google.com',
7   - :service_url => "http://www.google.com/talk/",
8   - :user_id => user_id,
9   - :room_id => nil)
10   -
11   - end
12   - end
13   - end
14   -
15   - def self.down
16   - end
17   -end
db/migrate/20130212112719_add_interval_field_for_notifications.rb
... ... @@ -1,12 +0,0 @@
1   -class AddIntervalFieldForNotifications < Mongoid::Migration
2   - def self.up
3   - App.all.each do |app|
4   - if app.notification_service
5   - app.notification_service.update_attributes(:notify_at_notices => [0])
6   - end
7   - end
8   - end
9   -
10   - def self.down
11   - end
12   -end
db/migrate/20131011155638_extract_issue_tracker.rb
... ... @@ -1,46 +0,0 @@
1   -class ExtractIssueTracker < Mongoid::Migration
2   -
3   - TRACKER_MAPPING = {
4   - 'ErrbitTracPlugin::IssueTracker' => 'trac',
5   - 'IssueTrackers::BitbucketIssuesTracker' => 'bitbucket',
6   - 'IssueTrackers::FogbugzTracker' => 'fogbugz',
7   - 'IssueTrackers::GithubIssuesTracker' => 'github',
8   - 'IssueTrackers::GitlabTracker' => 'gitlab',
9   - 'IssueTrackers::JiraTracker' => 'jira',
10   - 'IssueTrackers::LighthouseTracker' => 'lighthouse',
11   - 'IssueTrackers::PivotalLabsTracker' => 'pivotal',
12   - 'IssueTrackers::RedmineTracker' => 'redmine',
13   - 'IssueTrackers::UnfuddleTracker' => 'unfuddle'
14   - }
15   -
16   - def self.up
17   - App.all.each do |app|
18   - next unless app.attributes['issue_tracker'].present?
19   - next unless app.attributes['issue_tracker']['_type'].present?
20   -
21   - options = app['issue_tracker'].dup
22   - options.delete('_type')
23   - options.delete('_id')
24   -
25   - _type = app.attributes['issue_tracker']['_type']
26   - updated_at = options.delete('updated_at')
27   - created_at = options.delete('created_at')
28   -
29   - if TRACKER_MAPPING.include?(_type)
30   - tracker = {
31   - 'type_tracker' => TRACKER_MAPPING[_type],
32   - 'options' => options,
33   - 'updated_at' => updated_at,
34   - 'created_at' => created_at
35   - }
36   -
37   - App.collection.where({ _id: app.id }).update({
38   - "$set" => { :issue_tracker => tracker }
39   - })
40   - end
41   - end
42   - end
43   -
44   - def self.down
45   - end
46   -end
db/migrate/20131206152837_add_min_app_version_to_apps.rb
... ... @@ -1,5 +0,0 @@
1   -class AddMinAppVersionToApps < Mongoid::Migration
2   - def change
3   - add_column :apps, :current_app_version, :string
4   - end
5   -end
6 0 \ No newline at end of file