combustion 0.5.4 → 0.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +9 -7
- data/combustion.gemspec +1 -1
- data/lib/combustion/database.rb +20 -181
- data/lib/combustion/database/load_schema.rb +26 -0
- data/lib/combustion/database/migrate.rb +40 -0
- data/lib/combustion/database/reset.rb +53 -0
- data/lib/combustion/databases/base.rb +22 -0
- data/lib/combustion/databases/firebird.rb +6 -0
- data/lib/combustion/databases/mysql.rb +71 -0
- data/lib/combustion/databases/oracle.rb +8 -0
- data/lib/combustion/databases/postgresql.rb +39 -0
- data/lib/combustion/databases/sql_server.rb +6 -0
- data/lib/combustion/databases/sqlite.rb +35 -0
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3267619b0496c3956bfa0bd994939298763e4aed
|
4
|
+
data.tar.gz: ef5c03a4638db69326a76bd2aa949a20f321ab84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14fa5db249addbd51fee818b3bc8954ba455313e93388e8e9b044a931d9d9c1276605dfb50b59fe4f603e3a180a8b6533fdbface66ff247d94a64d886ca63cb3
|
7
|
+
data.tar.gz: 43b4c7cc7b9e35c5a2e1d8d772c5924b54e732580ab6b7cba5cddc1771d0124ce6f668bf9cca68f744c7d6b30f8d7edcbf512239d6e3698d0079163b73e719dc
|
data/README.md
CHANGED
@@ -10,25 +10,27 @@ Get the gem into either your gemspec or your Gemfile, depending on how you manag
|
|
10
10
|
|
11
11
|
```ruby
|
12
12
|
# gemspec
|
13
|
-
gem.add_development_dependency 'combustion', '~> 0.5.
|
13
|
+
gem.add_development_dependency 'combustion', '~> 0.5.5'
|
14
14
|
|
15
15
|
# Gemfile
|
16
|
-
gem 'combustion', '~> 0.5.
|
16
|
+
gem 'combustion', '~> 0.5.5', :group => :test
|
17
17
|
```
|
18
18
|
|
19
19
|
In your `spec_helper.rb`, get Combustion to set itself up - which has to happen before you introduce `rspec/rails` and - if being used - `capybara/rails`. Here's an example within context:
|
20
20
|
|
21
21
|
```ruby
|
22
|
-
require '
|
23
|
-
require 'bundler/setup'
|
22
|
+
require 'bundler'
|
24
23
|
|
25
|
-
require
|
26
|
-
require 'capybara/rspec'
|
24
|
+
Bundler.require :default, :development
|
27
25
|
|
26
|
+
# If you're using all parts of Rails:
|
28
27
|
Combustion.initialize! :all
|
28
|
+
# Or, load just what you need:
|
29
|
+
# Combustion.initialize! :active_record, :action_controller
|
29
30
|
|
30
31
|
require 'rspec/rails'
|
31
|
-
|
32
|
+
# If you're using Capybara:
|
33
|
+
# require 'capybara/rails'
|
32
34
|
|
33
35
|
RSpec.configure do |config|
|
34
36
|
config.use_transactional_fixtures = true
|
data/combustion.gemspec
CHANGED
data/lib/combustion/database.rb
CHANGED
@@ -1,186 +1,25 @@
|
|
1
1
|
module Combustion
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
load_schema
|
6
|
-
migrate
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.reset_database
|
10
|
-
ActiveRecord::Base.configurations = YAML.load(ERB.new(File.read("#{Rails.root}/config/database.yml")).result)
|
11
|
-
abcs = ActiveRecord::Base.configurations
|
12
|
-
case abcs['test']['adapter']
|
13
|
-
when /mysql/
|
14
|
-
drop_database(abcs['test']['database'])
|
15
|
-
create_database(abcs['test'])
|
16
|
-
ActiveRecord::Base.establish_connection(:test)
|
17
|
-
when /postgresql/
|
18
|
-
ActiveRecord::Base.clear_active_connections!
|
19
|
-
drop_database(abcs['test'])
|
20
|
-
create_database(abcs['test'])
|
21
|
-
when /sqlite/
|
22
|
-
drop_database(abcs['test'])
|
23
|
-
create_database(abcs['test'])
|
24
|
-
when 'sqlserver'
|
25
|
-
test = abcs.deep_dup['test']
|
26
|
-
test_database = test['database']
|
27
|
-
test['database'] = 'master'
|
28
|
-
ActiveRecord::Base.establish_connection(test)
|
29
|
-
ActiveRecord::Base.connection.recreate_database!(test_database)
|
30
|
-
when "oci", "oracle"
|
31
|
-
ActiveRecord::Base.establish_connection(:test)
|
32
|
-
ActiveRecord::Base.connection.structure_drop.split(";\n\n").each do |ddl|
|
33
|
-
ActiveRecord::Base.connection.execute(ddl)
|
34
|
-
end
|
35
|
-
when 'firebird'
|
36
|
-
ActiveRecord::Base.establish_connection(:test)
|
37
|
-
ActiveRecord::Base.connection.recreate_database!
|
38
|
-
else
|
39
|
-
raise "Cannot reset databases for '#{abcs['test']['adapter']}'"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.load_schema
|
44
|
-
case Combustion.schema_format
|
45
|
-
when :ruby
|
46
|
-
load Rails.root.join('db', 'schema.rb')
|
47
|
-
when :sql
|
48
|
-
ActiveRecord::Base.connection.execute(
|
49
|
-
File.read(Rails.root.join('db', 'structure.sql'))
|
50
|
-
)
|
51
|
-
else
|
52
|
-
raise "Unknown schema format: #{Combustion.schema_format}"
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def self.migrate
|
57
|
-
migrator = ActiveRecord::Migrator
|
58
|
-
engine_path = Rails.application.root.sub(::Combustion.path, '')
|
59
|
-
engine_migration_paths = Rails.application.paths['db/migrate'].to_a
|
60
|
-
|
61
|
-
if engine_migration_paths.include?(engine_path.join('db/migrate').to_s)
|
62
|
-
paths = []
|
63
|
-
else
|
64
|
-
paths = base_migration_paths
|
65
|
-
end
|
66
|
-
|
67
|
-
paths += engine_migration_paths
|
68
|
-
paths.uniq!
|
69
|
-
|
70
|
-
# Append the migrations inside the internal app's db/migrate directory
|
71
|
-
paths << File.join(Rails.root, 'db/migrate')
|
72
|
-
|
73
|
-
if ActiveRecord::VERSION::STRING >= '3.1.0'
|
74
|
-
migrator.migrate paths, nil
|
75
|
-
else
|
76
|
-
paths.each { |path| migrator.migrate path, nil }
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
private
|
81
|
-
|
82
|
-
def self.base_migration_paths
|
83
|
-
if ActiveRecord::Migrator.respond_to?(:migrations_paths)
|
84
|
-
ActiveRecord::Migrator.migrations_paths
|
85
|
-
else
|
86
|
-
Array('db/migrate/')
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def self.create_database(config)
|
91
|
-
begin
|
92
|
-
if config['adapter'] =~ /sqlite/
|
93
|
-
if File.exist?(config['database'])
|
94
|
-
$stderr.puts "#{config['database']} already exists"
|
95
|
-
else
|
96
|
-
begin
|
97
|
-
# Create the SQLite database
|
98
|
-
ActiveRecord::Base.establish_connection(config)
|
99
|
-
ActiveRecord::Base.connection
|
100
|
-
rescue Exception => e
|
101
|
-
$stderr.puts e, *(e.backtrace)
|
102
|
-
$stderr.puts "Couldn't create database for #{config.inspect}"
|
103
|
-
end
|
104
|
-
end
|
105
|
-
return # Skip the else clause of begin/rescue
|
106
|
-
else
|
107
|
-
ActiveRecord::Base.establish_connection(config)
|
108
|
-
ActiveRecord::Base.connection
|
109
|
-
end
|
110
|
-
rescue
|
111
|
-
case config['adapter']
|
112
|
-
when /^(jdbc)?mysql/
|
113
|
-
if config['adapter'] =~ /jdbc/
|
114
|
-
#FIXME After Jdbcmysql gives this class
|
115
|
-
require 'active_record/railties/jdbcmysql_error'
|
116
|
-
error_class = ArJdbcMySQL::Error
|
117
|
-
else
|
118
|
-
error_class = config['adapter'] =~ /mysql2/ && defined?(Mysql2) ? Mysql2::Error : Mysql::Error
|
119
|
-
end
|
120
|
-
access_denied_error = 1045
|
121
|
-
begin
|
122
|
-
ActiveRecord::Base.establish_connection(config.merge('database' => nil))
|
123
|
-
ActiveRecord::Base.connection.create_database(config['database'], mysql_creation_options(config))
|
124
|
-
ActiveRecord::Base.establish_connection(config)
|
125
|
-
rescue error_class => sqlerr
|
126
|
-
if sqlerr.errno == access_denied_error
|
127
|
-
print "#{sqlerr.error}. \nPlease provide the root password for your mysql installation\n>"
|
128
|
-
root_password = $stdin.gets.strip
|
129
|
-
grant_statement = "GRANT ALL PRIVILEGES ON #{config['database']}.* " \
|
130
|
-
"TO '#{config['username']}'@'localhost' " \
|
131
|
-
"IDENTIFIED BY '#{config['password']}' WITH GRANT OPTION;"
|
132
|
-
ActiveRecord::Base.establish_connection(config.merge(
|
133
|
-
'database' => nil, 'username' => 'root', 'password' => root_password))
|
134
|
-
ActiveRecord::Base.connection.create_database(config['database'], mysql_creation_options(config))
|
135
|
-
ActiveRecord::Base.connection.execute grant_statement
|
136
|
-
ActiveRecord::Base.establish_connection(config)
|
137
|
-
else
|
138
|
-
$stderr.puts sqlerr.error
|
139
|
-
$stderr.puts "Couldn't create database for #{config.inspect}, charset: #{config['charset'] || @charset}, collation: #{config['collation'] || @collation}"
|
140
|
-
$stderr.puts "(if you set the charset manually, make sure you have a matching collation)" if config['charset']
|
141
|
-
end
|
142
|
-
end
|
143
|
-
when /^(jdbc)?postgresql$/
|
144
|
-
@encoding = config['encoding'] || ENV['CHARSET'] || 'utf8'
|
145
|
-
begin
|
146
|
-
ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
|
147
|
-
ActiveRecord::Base.connection.create_database(config['database'], config.merge('encoding' => @encoding))
|
148
|
-
ActiveRecord::Base.establish_connection(config)
|
149
|
-
rescue Exception => e
|
150
|
-
$stderr.puts e, *(e.backtrace)
|
151
|
-
$stderr.puts "Couldn't create database for #{config.inspect}"
|
152
|
-
end
|
153
|
-
end
|
154
|
-
else
|
155
|
-
$stderr.puts "#{config['database']} already exists"
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
def self.drop_database(config)
|
160
|
-
case config['adapter']
|
161
|
-
when /^(jdbc)?mysql/
|
162
|
-
ActiveRecord::Base.establish_connection(config)
|
163
|
-
ActiveRecord::Base.connection.drop_database config['database']
|
164
|
-
when /^(jdbc)?sqlite/
|
165
|
-
require 'pathname'
|
166
|
-
path = Pathname.new(config['database'])
|
167
|
-
file = path.absolute? ? path.to_s : File.join(Rails.root, path)
|
168
|
-
|
169
|
-
FileUtils.rm_f(file) if File.exist?(file)
|
170
|
-
when /^(jdbc)?postgresql$/
|
171
|
-
ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
|
172
|
-
ActiveRecord::Base.connection.drop_database config['database']
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
def self.mysql_creation_options(config)
|
177
|
-
@charset = ENV['CHARSET'] || 'utf8'
|
178
|
-
@collation = ENV['COLLATION'] || 'utf8_unicode_ci'
|
2
|
+
module Databases
|
3
|
+
#
|
4
|
+
end
|
179
5
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
6
|
+
class Database
|
7
|
+
def self.setup(adapter = nil)
|
8
|
+
Combustion::Database::Reset.call adapter
|
9
|
+
Combustion::Database::LoadSchema.call
|
10
|
+
Combustion::Database::Migrate.call
|
184
11
|
end
|
185
12
|
end
|
186
13
|
end
|
14
|
+
|
15
|
+
require 'combustion/database/load_schema'
|
16
|
+
require 'combustion/database/migrate'
|
17
|
+
require 'combustion/database/reset'
|
18
|
+
|
19
|
+
require 'combustion/databases/base'
|
20
|
+
require 'combustion/databases/firebird'
|
21
|
+
require 'combustion/databases/mysql'
|
22
|
+
require 'combustion/databases/oracle'
|
23
|
+
require 'combustion/databases/postgresql'
|
24
|
+
require 'combustion/databases/sql_server'
|
25
|
+
require 'combustion/databases/sqlite'
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class Combustion::Database::LoadSchema
|
2
|
+
UnknownSchemaFormat = Class.new StandardError
|
3
|
+
|
4
|
+
def self.call
|
5
|
+
new.call
|
6
|
+
end
|
7
|
+
|
8
|
+
def call
|
9
|
+
case schema_format
|
10
|
+
when :ruby
|
11
|
+
load Rails.root.join('db', 'schema.rb')
|
12
|
+
when :sql
|
13
|
+
ActiveRecord::Base.connection.execute(
|
14
|
+
File.read(Rails.root.join('db', 'structure.sql'))
|
15
|
+
)
|
16
|
+
else
|
17
|
+
raise UnknownSchemaFormat, "Unknown schema format: #{schema_format}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def schema_format
|
24
|
+
Combustion.schema_format
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
class Combustion::Database::Migrate
|
2
|
+
def self.call
|
3
|
+
new.call
|
4
|
+
end
|
5
|
+
|
6
|
+
def call
|
7
|
+
if ActiveRecord::VERSION::STRING >= '3.1.0'
|
8
|
+
migrator.migrate paths, nil
|
9
|
+
else
|
10
|
+
paths.each { |path| migrator.migrate path, nil }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def base_migration_paths
|
17
|
+
if migrator.respond_to?(:migrations_paths)
|
18
|
+
migrator.migrations_paths
|
19
|
+
else
|
20
|
+
Array('db/migrate/')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def migrator
|
25
|
+
@migrator ||= ActiveRecord::Migrator
|
26
|
+
end
|
27
|
+
|
28
|
+
def paths
|
29
|
+
engine_path = Rails.application.root.sub(::Combustion.path, '')
|
30
|
+
migration_paths = Rails.application.paths['db/migrate'].to_a
|
31
|
+
|
32
|
+
if migration_paths.include?(engine_path.join('db/migrate').to_s)
|
33
|
+
paths = []
|
34
|
+
else
|
35
|
+
paths = base_migration_paths
|
36
|
+
end
|
37
|
+
|
38
|
+
(paths + migration_paths + [File.join(Rails.root, 'db/migrate')]).uniq
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class Combustion::Database::Reset
|
2
|
+
UnsupportedDatabase = Class.new StandardError
|
3
|
+
|
4
|
+
def self.call(adapter = nil)
|
5
|
+
new(adapter).call
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(adapter = nil)
|
9
|
+
@adapter = adapter
|
10
|
+
|
11
|
+
set_configurations
|
12
|
+
end
|
13
|
+
|
14
|
+
def call
|
15
|
+
operator.reset
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def configuration
|
21
|
+
@configuration ||= ActiveRecord::Base.configurations['test']
|
22
|
+
end
|
23
|
+
|
24
|
+
def operator
|
25
|
+
operator_class.new configuration
|
26
|
+
end
|
27
|
+
|
28
|
+
def operator_class
|
29
|
+
@operator ||= case configuration['adapter']
|
30
|
+
when /mysql/
|
31
|
+
Combustion::Databases::MySQL
|
32
|
+
when /postgresql/, /postgis/
|
33
|
+
Combustion::Databases::PostgreSQL
|
34
|
+
when /sqlite/
|
35
|
+
Combustion::Databases::SQLite
|
36
|
+
when /sqlserver/
|
37
|
+
Combustion::Databases::SQLServer
|
38
|
+
when 'oci', 'oracle'
|
39
|
+
Combustion::Databases::Oracle
|
40
|
+
when 'firebird'
|
41
|
+
Combustion::Databases::Firebird
|
42
|
+
else
|
43
|
+
raise UnsupportedDatabase,
|
44
|
+
"Unsupported database type: #{configuration['adapter']}"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def set_configurations
|
49
|
+
ActiveRecord::Base.configurations = YAML.load(
|
50
|
+
ERB.new(File.read("#{Rails.root}/config/database.yml")).result
|
51
|
+
)
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'active_support/core_ext/module/delegation'
|
2
|
+
|
3
|
+
class Combustion::Databases::Base
|
4
|
+
def initialize(configuration)
|
5
|
+
@configuration = configuration
|
6
|
+
end
|
7
|
+
|
8
|
+
def reset
|
9
|
+
drop
|
10
|
+
create
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
attr_reader :configuration
|
16
|
+
|
17
|
+
delegate :establish_connection, :connection, :to => :base
|
18
|
+
|
19
|
+
def base
|
20
|
+
ActiveRecord::Base
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
class Combustion::Databases::MySQL < Combustion::Databases::Base
|
2
|
+
ACCESS_DENIED_ERROR = 10145
|
3
|
+
|
4
|
+
def reset
|
5
|
+
super
|
6
|
+
|
7
|
+
establish_connection :test
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def charset
|
13
|
+
configuration['charset'] || ENV['CHARSET'] || 'utf8'
|
14
|
+
end
|
15
|
+
|
16
|
+
def collation
|
17
|
+
configuration['collation'] || ENV['COLLATION'] || 'utf8_unicode_ci'
|
18
|
+
end
|
19
|
+
|
20
|
+
def create
|
21
|
+
establish_connection configuration.merge('database' => nil)
|
22
|
+
connection.create_database configuration['database'], creation_options
|
23
|
+
establish_connection configuration
|
24
|
+
rescue error_class => error
|
25
|
+
if error.errno == ACCESS_DENIED_ERROR
|
26
|
+
create_as_root
|
27
|
+
else
|
28
|
+
$stderr.puts error.error
|
29
|
+
$stderr.puts "Couldn't create database for #{config.inspect}, charset: #{charset}, collation: #{collation}"
|
30
|
+
$stderr.puts "(if you set the charset manually, make sure you have a matching collation)" if config['charset']
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def create_as_root
|
35
|
+
print "#{sqlerr.error}. \nPlease provide the root password for your mysql installation\n>"
|
36
|
+
root_password = $stdin.gets.strip
|
37
|
+
establish_connection configuration.merge(
|
38
|
+
'database' => nil, 'username' => 'root', 'password' => root_password
|
39
|
+
)
|
40
|
+
connection.create_database config['database'], creation_options
|
41
|
+
connection.execute grant_statement
|
42
|
+
establish_connection configuration
|
43
|
+
end
|
44
|
+
|
45
|
+
def creation_options
|
46
|
+
{:charset => charset, :collation => collation}
|
47
|
+
end
|
48
|
+
|
49
|
+
def drop
|
50
|
+
establish_connection configuration
|
51
|
+
connection.drop_database configuration['database']
|
52
|
+
end
|
53
|
+
|
54
|
+
def error_class
|
55
|
+
if configuration['adapter'] =~ /jdbc/
|
56
|
+
#FIXME After Jdbcmysql gives this class
|
57
|
+
require 'active_record/railties/jdbcmysql_error'
|
58
|
+
error_class = ArJdbcMySQL::Error
|
59
|
+
else
|
60
|
+
error_class = config['adapter'] =~ /mysql2/ && defined?(Mysql2) ? Mysql2::Error : Mysql::Error
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def grant_statement
|
65
|
+
<<-SQL
|
66
|
+
GRANT ALL PRIVILEGES ON #{configuration['database']}.*
|
67
|
+
TO '#{configuration['username']}'@'localhost'
|
68
|
+
IDENTIFIED BY '#{configuration['password']}' WITH GRANT OPTION;
|
69
|
+
SQL
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
class Combustion::Databases::PostgreSQL < Combustion::Databases::Base
|
2
|
+
def reset
|
3
|
+
base.clear_active_connections!
|
4
|
+
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def create
|
11
|
+
establish_connection postgres_configuration
|
12
|
+
connection.create_database configuration['database'],
|
13
|
+
configuration.merge('encoding' => encoding)
|
14
|
+
establish_connection configuration
|
15
|
+
rescue Exception => error
|
16
|
+
$stderr.puts error, *(error.backtrace)
|
17
|
+
$stderr.puts "Couldn't create database for #{configuration.inspect}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def drop
|
21
|
+
establish_connection postgres_configuration
|
22
|
+
connection.drop_database configuration['database']
|
23
|
+
end
|
24
|
+
|
25
|
+
def encoding
|
26
|
+
configuration['encoding'] || ENV['CHARSET'] || 'utf8'
|
27
|
+
end
|
28
|
+
|
29
|
+
def postgres_configuration
|
30
|
+
configuration.merge(
|
31
|
+
'database' => 'postgres',
|
32
|
+
'schema_search_path' => schema_search_path
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
def schema_search_path
|
37
|
+
configuration['adapter'][/postgis/] ? 'public, postgis' : 'public'
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
class Combustion::Databases::SQLite < Combustion::Databases::Base
|
5
|
+
private
|
6
|
+
|
7
|
+
def create
|
8
|
+
if exists?
|
9
|
+
$stderr.puts "#{config['database']} already exists"
|
10
|
+
return
|
11
|
+
end
|
12
|
+
|
13
|
+
establish_connection configuration
|
14
|
+
connection
|
15
|
+
rescue Exception => error
|
16
|
+
$stderr.puts error, *(error.backtrace)
|
17
|
+
$stderr.puts "Couldn't create database for #{configuration.inspect}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def drop
|
21
|
+
FileUtils.rm_f file if exists?
|
22
|
+
end
|
23
|
+
|
24
|
+
def exists?
|
25
|
+
File.exist? file
|
26
|
+
end
|
27
|
+
|
28
|
+
def file
|
29
|
+
@file ||= path.absolute? ? path.to_s : File.join(Rails.root, path)
|
30
|
+
end
|
31
|
+
|
32
|
+
def path
|
33
|
+
@path ||= Pathname.new configuration['database']
|
34
|
+
end
|
35
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: combustion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pat Allan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -113,6 +113,16 @@ files:
|
|
113
113
|
- lib/combustion.rb
|
114
114
|
- lib/combustion/application.rb
|
115
115
|
- lib/combustion/database.rb
|
116
|
+
- lib/combustion/database/load_schema.rb
|
117
|
+
- lib/combustion/database/migrate.rb
|
118
|
+
- lib/combustion/database/reset.rb
|
119
|
+
- lib/combustion/databases/base.rb
|
120
|
+
- lib/combustion/databases/firebird.rb
|
121
|
+
- lib/combustion/databases/mysql.rb
|
122
|
+
- lib/combustion/databases/oracle.rb
|
123
|
+
- lib/combustion/databases/postgresql.rb
|
124
|
+
- lib/combustion/databases/sql_server.rb
|
125
|
+
- lib/combustion/databases/sqlite.rb
|
116
126
|
- lib/combustion/generator.rb
|
117
127
|
- spec/database_spec.rb
|
118
128
|
- spec/dummy/db/migrate/20150717075542_create_dummy_test_table.rb
|