class MultiDB::Organization
Public Instance Methods
connect(set_env = false)
click to toggle source
# File lib/multi_db/organization.rb, line 25 def connect(set_env = false) ActiveRecord::Base.connect_to_organization(self, set_env) end
create_database()
click to toggle source
# File lib/multi_db/organization.rb, line 29 def create_database if code =~ /^[-\w\d]+$/ begin ActiveRecord::Base.connection.create_database("#{ActiveRecord::Base.configurations[Rails.env]['database']}_#{code}") rescue Exception => e if e.message =~ /Can't create database '(.*?)'; database exists/ puts "Warning: database #{$1} already exists" else throw e end end connect ActiveRecord::Migration.suppress_messages do load "#{Rails.root}/db/schema_organization.rb" end end end
drop_database!()
click to toggle source
# File lib/multi_db/organization.rb, line 49 def drop_database! if Rails.env.production? raise "Won't drop database in production mode for safety reasons." else if code =~ /^[-\w\d]+$/ # watch for sql injection here ActiveRecord::Base.connection.drop_database("#{ActiveRecord::Base.configurations[Rails.env]['database']}_#{code}") end end end
ensure_code()
click to toggle source
# File lib/multi_db/organization.rb, line 12 def ensure_code if code.blank? return true unless name new_code = name.downcase.gsub(/[^-\w\d]+/, '-') self.code = new_code i = 2 while self.class.where(:code => code, :active => true).first self.code = "#{new_code}#{i}" i += 1 end end end