Class: Gemika::Database
- Inherits:
-
Object
- Object
- Gemika::Database
- Defined in:
- lib/gemika/database.rb
Instance Method Summary collapse
- #connect ⇒ Object
- #drop_tables! ⇒ Object
-
#initialize(options = {}) ⇒ Database
constructor
A new instance of Database.
- #migrate(&block) ⇒ Object
- #rewrite_schema!(&block) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Database
Returns a new instance of Database.
6 7 8 9 10 11 12 13 |
# File 'lib/gemika/database.rb', line 6 def initialize( = {}) config_folder = .fetch(:config_folder, 'spec/support') config_filename = travis? ? 'database.travis.yml' : 'database.yml' config_path = File.join(config_folder, config_filename) File.exists?(config_path) or raise ArgumentError, "Missing database configuration file: #{database_config_file}" @config = YAML.load_file(config_path) @connected = false end |
Instance Method Details
#connect ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/gemika/database.rb', line 15 def connect unless @connected if pg? adapter_config = (@config['postgresql'] || @config['postgres'] || @config['pg']).merge(adapter: 'postgresql') elsif mysql2? adapter_config = (@config['mysql2'] || @config['mysql']).merge(adapter: 'mysql2', encoding: 'utf8') else raise "Unknown database type" end ActiveRecord::Base.establish_connection(adapter_config) @connected = true end end |
#drop_tables! ⇒ Object
29 30 31 32 33 34 |
# File 'lib/gemika/database.rb', line 29 def drop_tables! connect connection.tables.each do |table| connection.drop_table table end end |
#migrate(&block) ⇒ Object
36 37 38 39 |
# File 'lib/gemika/database.rb', line 36 def migrate(&block) connect ActiveRecord::Migration.class_eval(&block) end |
#rewrite_schema!(&block) ⇒ Object
41 42 43 44 45 |
# File 'lib/gemika/database.rb', line 41 def rewrite_schema!(&block) connect drop_tables! migrate(&block) end |