91d98e50f915b48e7c8f4ed43b6641d6015ce29a
[arvados.git] / services / api / app / controllers / database_controller.rb
1 class DatabaseController < ApplicationController
2   skip_before_filter :find_object_by_uuid
3   skip_before_filter :render_404_if_no_object
4   before_filter :admin_required
5   def reset
6     raise ArvadosModel::PermissionDeniedError unless Rails.env == 'test'
7
8     require 'active_record/fixtures'
9
10     # What kinds of fixtures do we have?
11     fixturesets = Dir.glob(Rails.root.join('test', 'fixtures', '*.yml')).
12       collect { |yml| yml.match(/([^\/]*)\.yml$/)[1] }
13
14     # Delete existing fixtures (and everything else) from fixture
15     # tables
16     fixturesets.each do |x|
17       x.classify.constantize.unscoped.delete_all
18     end
19
20     # create_fixtures() is a no-op for cached fixture sets, so uncache
21     # them all.
22     ActiveRecord::Fixtures.reset_cache
23     ActiveRecord::Fixtures.
24       create_fixtures(Rails.root.join('test', 'fixtures'), fixturesets)
25
26     # Dump cache of permissions etc.
27     Rails.cache.clear
28     ActiveRecord::Base.connection.clear_query_cache
29
30     # Reload database seeds
31     DatabaseSeeds.install
32
33     # Done.
34     render json: {success: true}
35   end
36 end