enum_table 0.0.1 → 0.1.0

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/CHANGELOG CHANGED
@@ -1,3 +1,10 @@
1
+ == 0.1.0 2012-11-30
2
+
3
+ * DB Nazi compliance.
4
+ * Remove customizability of the foreign key, since ActiveRecord mangles these
5
+ customizations when roundtripped through schema.rb.
6
+ * Foreign keys via foreigner now work.
7
+
1
8
  == 0.0.1 2012-11-05
2
9
 
3
10
  * Hi.
@@ -32,7 +32,7 @@ database directly. Another problem is the database cannot enforce any
32
32
  This plugin implements a different strategy which solves the above problems -
33
33
  each enum is defined by a table with `id` and `value` columns, which defines the
34
34
  values and the integers they map to. Altering the values can be done with simple
35
- DDL statements, which do not require rebuilding any tables.
35
+ DML statements, which do not require rebuilding any tables.
36
36
 
37
37
  [enum_column3]: https://github.com/taktsoft/enum_column3
38
38
  [pt-osc]: http://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html
@@ -12,7 +12,6 @@ module EnumTable
12
12
  table_names = @connection.enum_tables
13
13
  table_names.each do |table_name|
14
14
  stream.puts " create_enum_table #{table_name.inspect}, force: true do |t|"
15
- enum_table_column(stream, table_name, 'id', SchemaStatements::DEFAULT_ID_ATTRIBUTES)
16
15
  enum_table_column(stream, table_name, 'value', SchemaStatements::DEFAULT_VALUE_ATTRIBUTES)
17
16
  @connection.execute("SELECT id, value FROM #{table_name} ORDER BY id").each do |row|
18
17
  stream.puts " t.add #{row[1].to_s.inspect}, #{row[0]}"
@@ -22,7 +22,6 @@ module EnumTable
22
22
  end.sort
23
23
  end
24
24
 
25
- DEFAULT_ID_ATTRIBUTES = {type: :integer, limit: 1, null: false}.freeze
26
25
  DEFAULT_VALUE_ATTRIBUTES = {type: :string, limit: 255, null: false}.freeze
27
26
 
28
27
  class NewTable
@@ -30,7 +29,6 @@ module EnumTable
30
29
  @connection = connection
31
30
  @name = name
32
31
  @options = options
33
- @id = DEFAULT_ID_ATTRIBUTES.dup
34
32
  @value = DEFAULT_VALUE_ATTRIBUTES.dup
35
33
  @adds = []
36
34
  values = options.delete(:values) and
@@ -38,13 +36,12 @@ module EnumTable
38
36
  end
39
37
 
40
38
  def _create
41
- @connection.create_table @name, @options.merge(id: false) do |t|
42
- t.column :id, @id.delete(:type), @id
39
+ @connection.create_table @name, @options do |t|
43
40
  t.column :value, @value.delete(:type), @value
44
41
  end
45
42
  unless @connection.table_exists?(:enum_tables)
46
43
  @connection.create_table :enum_tables, id: false, force: true do |t|
47
- t.string :table_name, null: false
44
+ t.string :table_name, null: false, limit: 255
48
45
  end
49
46
  end
50
47
  @connection.execute "INSERT INTO enum_tables(table_name) VALUES('#{@name}')"
@@ -52,10 +49,6 @@ module EnumTable
52
49
  @adds.each { |args| table.add(*args) }
53
50
  end
54
51
 
55
- def id(options)
56
- @id.update(options)
57
- end
58
-
59
52
  def value(options)
60
53
  @value.update(options)
61
54
  end
@@ -1,5 +1,5 @@
1
1
  module EnumTable
2
- VERSION = [0, 0, 1]
2
+ VERSION = [0, 1, 0]
3
3
 
4
4
  class << VERSION
5
5
  include Comparable
@@ -35,18 +35,6 @@ describe EnumTable::SchemaDumper do
35
35
  EOS
36
36
  end
37
37
 
38
- it "dumps custom id column attributes" do
39
- connection.create_enum_table :user_genders do |t|
40
- t.id type: :string, limit: 20, null: true
41
- end
42
- ActiveRecord::SchemaDumper.dump(connection, stream)
43
- stream.string.must_include(<<-EOS.gsub(/^ *\|/, ''))
44
- | create_enum_table "user_genders", force: true do |t|
45
- | t.id type: :string, limit: 20, null: true
46
- | end
47
- EOS
48
- end
49
-
50
38
  it "dumps custom value column attributes" do
51
39
  connection.create_enum_table :user_genders do |t|
52
40
  t.value type: :binary, limit: 20, null: true
@@ -28,15 +28,6 @@ describe EnumTable::SchemaStatements do
28
28
  connection.create_enum_table :genders, force: true
29
29
  end
30
30
 
31
- it "allows configuring the id column in the block" do
32
- connection.create_enum_table :genders do |t|
33
- t.id type: :string, limit: 20
34
- end
35
- column = connection.columns(:genders).find { |c| c.name == 'id' }
36
- column.type.must_equal :string
37
- column.limit.must_equal 20
38
- end
39
-
40
31
  it "allows configuring the type column in the block" do
41
32
  connection.create_enum_table :genders do |t|
42
33
  t.value type: :binary, limit: 20
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enum_table
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-05 00:00:00.000000000 Z
12
+ date: 2012-11-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -82,21 +82,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
82
  - - ! '>='
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
- segments:
86
- - 0
87
- hash: 123907201229092467
88
85
  required_rubygems_version: !ruby/object:Gem::Requirement
89
86
  none: false
90
87
  requirements:
91
88
  - - ! '>='
92
89
  - !ruby/object:Gem::Version
93
90
  version: '0'
94
- segments:
95
- - 0
96
- hash: 123907201229092467
97
91
  requirements: []
98
92
  rubyforge_project:
99
- rubygems_version: 1.8.24
93
+ rubygems_version: 1.8.23
100
94
  signing_key:
101
95
  specification_version: 3
102
96
  summary: Enumeration tables for ActiveRecord
@@ -107,3 +101,4 @@ test_files:
107
101
  - test/enum_table/test_schema_dumper.rb
108
102
  - test/enum_table/test_schema_statements.rb
109
103
  - test/test_helper.rb
104
+ has_rdoc: