wraithdb 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,7 +5,7 @@ module ActiveRecord
5
5
  #an actual connection. The implementation provided mirrors the Mysql2Adapter
6
6
  def replace_bind_variables_with_wraithdb(statement, values)
7
7
  begin
8
- replace_bind_variables_without_wraithdb
8
+ replace_bind_variables_without_wraithdb(statement, values)
9
9
  rescue StandardError => e
10
10
  raise e if e.kind_of? PreparedStatementInvalid
11
11
  bound = values.dup
@@ -0,0 +1,11 @@
1
+ module WraithDB
2
+ module Adapters
3
+ class Mysql2Adapter < ActiveRecord::ConnectionAdapters::AbstractAdapter
4
+ include WraithFunctionality
5
+
6
+ def adapter_name
7
+ 'WraithDefault'
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,31 @@
1
+ require 'active_record/connection_adapters/mysql2_adapter'
2
+
3
+ module WraithDB
4
+ module Adapters
5
+ class Mysql2Adapter < ActiveRecord::ConnectionAdapters::Mysql2Adapter
6
+ include WraithFunctionality
7
+
8
+ def quote(value, column = nil)
9
+ if value.kind_of?(String) && column && column.type == :binary && column.class.respond_to?(:string_to_binary)
10
+ s = column.class.string_to_binary(value).unpack("H*")[0]
11
+ "x'#{s}'"
12
+ elsif value.kind_of?(BigDecimal)
13
+ value.to_s("F")
14
+ else
15
+ super
16
+ end
17
+ end
18
+
19
+ # Quotes a string, escaping any ' (single quote) and \ (backslash)
20
+ # characters.
21
+ def quote_string(s)
22
+ s.gsub(/\\/, '\&\&').gsub(/'/, "\\\\'") # ' (for ruby-mode)
23
+ end
24
+
25
+
26
+ def adapter_name
27
+ 'WraithMysql2'
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,28 @@
1
+ module WraithDB
2
+ module Adapters
3
+ module WraithFunctionality
4
+ attr_reader :tables
5
+
6
+ def initialize
7
+ @active = true
8
+ @tables = {}
9
+ end
10
+
11
+ def support_migrations?
12
+ true
13
+ end
14
+
15
+ def create_table(table_name, options = {})
16
+ table_definition = ActiveRecord::ConnectionAdapters::TableDefinition.new(self)
17
+ table_definition.primary_key(options[:primary_key] || ActiveRecord::Base.get_primary_key(table_name.to_s.singularize)) unless options[:id] == false
18
+
19
+ yield table_definition if block_given?
20
+
21
+ @tables[table_name.to_s] = table_definition
22
+ end
23
+
24
+ def add_index(*args)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -10,14 +10,24 @@ module WraithDB
10
10
 
11
11
  def connection
12
12
  load
13
- @connection ||= WraithDB::Adapter.new
13
+ @connection ||= build_connection
14
14
  end
15
15
 
16
- def tables
17
- connection.tables
16
+ def build_connection
17
+ type = ActiveRecord::Base.configurations[Rails.env]['adapter']
18
+ type = 'default' unless File.exist?(adapter_path(type))
19
+
20
+ require adapter_path(type)
21
+
22
+ WraithDB::Adapters.const_get("#{type.capitalize}Adapter").new
18
23
  end
19
24
 
20
- def initialize(*args)
25
+ def adapter_path(type)
26
+ "#{File.expand_path('..', __FILE__)}/adapters/#{type}_adapter.rb"
27
+ end
28
+
29
+ def tables
30
+ connection.tables
21
31
  end
22
32
 
23
33
  def load
@@ -1,3 +1,3 @@
1
1
  module Wraithdb
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/wraithdb.rb CHANGED
@@ -2,7 +2,7 @@ require 'active_record/connection_adapters/abstract/schema_definitions'
2
2
  require "wraithdb/version"
3
3
  require 'wraithdb/schema'
4
4
  require 'wraithdb/column'
5
- require 'wraithdb/adapter'
5
+ require 'wraithdb/adapters/wraith_functionality'
6
6
 
7
7
  dir_path = File.expand_path('..', __FILE__)
8
8
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wraithdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -53,7 +53,9 @@ files:
53
53
  - lib/rails/3.0/arel/table.rb
54
54
  - lib/rails/3.2/active_record/model_schema.rb
55
55
  - lib/wraithdb.rb
56
- - lib/wraithdb/adapter.rb
56
+ - lib/wraithdb/adapters/default_adapter.rb
57
+ - lib/wraithdb/adapters/mysql2_adapter.rb
58
+ - lib/wraithdb/adapters/wraith_functionality.rb
57
59
  - lib/wraithdb/column.rb
58
60
  - lib/wraithdb/schema.rb
59
61
  - lib/wraithdb/version.rb
@@ -1,43 +0,0 @@
1
- module WraithDB
2
- class Adapter < ActiveRecord::ConnectionAdapters::AbstractAdapter
3
- attr_reader :tables
4
-
5
- def initialize
6
- super(nil)
7
- @active = true
8
- @tables = {}
9
- end
10
-
11
- def quote(value, column = nil)
12
- if value.kind_of?(String) && column && column.type == :binary && column.class.respond_to?(:string_to_binary)
13
- s = column.class.string_to_binary(value).unpack("H*")[0]
14
- "x'#{s}'"
15
- elsif value.kind_of?(BigDecimal)
16
- value.to_s("F")
17
- else
18
- super
19
- end
20
- end
21
-
22
- def adapter_name
23
- 'WraithDB'
24
- end
25
-
26
- def support_migrations?
27
- true
28
- end
29
-
30
- def create_table(table_name, options = {})
31
- table_definition = ActiveRecord::ConnectionAdapters::TableDefinition.new(self)
32
- table_definition.primary_key(options[:primary_key] || ActiveRecord::Base.get_primary_key(table_name.to_s.singularize)) unless options[:id] == false
33
-
34
- yield table_definition if block_given?
35
-
36
- @tables[table_name.to_s] = table_definition
37
- end
38
-
39
- def add_index(*args)
40
- end
41
-
42
- end
43
- end