enum_column 0.1.2 → 0.1.4
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.
- data/enum_column.gemspec +2 -4
- data/lib/enum_column.rb +1 -0
- data/lib/enum_column/mysql2_adapter.rb +32 -0
- data/lib/enum_column/version.rb +1 -1
- metadata +7 -5
data/enum_column.gemspec
CHANGED
@@ -6,12 +6,10 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.name = "enum_column"
|
7
7
|
s.version = EnumColumn::VERSION
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
|
-
s.authors = ["Stephan Kaag"]
|
9
|
+
s.authors = ["Stephan Kaag", "Chiel Wester"]
|
10
10
|
s.email = ["stephan.kaag@holder.nl"]
|
11
|
-
s.homepage = ""
|
12
11
|
s.summary = "Ruby on Rails Enumerated Column Constraints"
|
13
|
-
s.description = "
|
14
|
-
|
12
|
+
s.description = "This gem enables enum column support for ActiveRecord 2."
|
15
13
|
s.files = `git ls-files`.split("\n")
|
16
14
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
15
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
data/lib/enum_column.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'enum_column/enum_adapter'
|
2
2
|
require 'enum_column/mysql_adapter' if defined? ActiveRecord::ConnectionAdapters::MysqlAdapter
|
3
|
+
require 'enum_column/mysql2_adapter' if defined? ActiveRecord::ConnectionAdapters::Mysql2Adapter
|
3
4
|
require 'enum_column/postgresql_adapter' if defined? ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
|
4
5
|
require 'enum_column/sqlite3_adapter' if defined? ActiveRecord::ConnectionAdapters::SQLite3Adapter
|
5
6
|
require 'enum_column/schema_statements'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module ActiveRecord
|
2
|
+
module ConnectionAdapters
|
3
|
+
class Mysql2Adapter
|
4
|
+
alias __native_database_types_enum native_database_types
|
5
|
+
|
6
|
+
def native_database_types #:nodoc
|
7
|
+
types = __native_database_types_enum
|
8
|
+
types[:enum] = { :name => "enum" }
|
9
|
+
types
|
10
|
+
end
|
11
|
+
|
12
|
+
def columns(table_name, name = nil)#:nodoc:
|
13
|
+
sql = "SHOW FIELDS FROM #{table_name}"
|
14
|
+
columns = []
|
15
|
+
execute(sql, name).each { |field| columns << MysqlColumnWithEnum.new(field[0], field[4], field[1], field[2] == "YES") }
|
16
|
+
columns
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class MysqlColumnWithEnum < Mysql2Column
|
21
|
+
include ActiveRecordEnumerations::Column
|
22
|
+
|
23
|
+
def initialize(name, default, sql_type = nil, null = true)
|
24
|
+
if sql_type =~ /^enum/i
|
25
|
+
values = sql_type.sub(/^enum\('([^)]+)'\)/i, '\1').split("','").map { |v| v.intern }
|
26
|
+
default = default.intern if default and !default.empty?
|
27
|
+
end
|
28
|
+
super(name, default, sql_type, null, values)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/enum_column/version.rb
CHANGED
metadata
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enum_column
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 4
|
10
|
+
version: 0.1.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Stephan Kaag
|
14
|
+
- Chiel Wester
|
14
15
|
autorequire:
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
@@ -19,7 +20,7 @@ date: 2011-03-03 00:00:00 +01:00
|
|
19
20
|
default_executable:
|
20
21
|
dependencies: []
|
21
22
|
|
22
|
-
description:
|
23
|
+
description: This gem enables enum column support for ActiveRecord 2.
|
23
24
|
email:
|
24
25
|
- stephan.kaag@holder.nl
|
25
26
|
executables: []
|
@@ -36,6 +37,7 @@ files:
|
|
36
37
|
- lib/enum_column.rb
|
37
38
|
- lib/enum_column/active_record_helper.rb
|
38
39
|
- lib/enum_column/enum_adapter.rb
|
40
|
+
- lib/enum_column/mysql2_adapter.rb
|
39
41
|
- lib/enum_column/mysql_adapter.rb
|
40
42
|
- lib/enum_column/postgresql_adapter.rb
|
41
43
|
- lib/enum_column/quoting.rb
|
@@ -45,7 +47,7 @@ files:
|
|
45
47
|
- lib/enum_column/validations.rb
|
46
48
|
- lib/enum_column/version.rb
|
47
49
|
has_rdoc: true
|
48
|
-
homepage:
|
50
|
+
homepage:
|
49
51
|
licenses: []
|
50
52
|
|
51
53
|
post_install_message:
|