aspgems-redhillonrails_core 2.0.0.beta2 → 2.0.0.beta4
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/.gitignore +8 -0
- data/.travis.yml +8 -0
- data/CHANGELOG +16 -0
- data/README.md +50 -10
- data/README_DEV.md +41 -0
- data/Rakefile +43 -13
- data/Thorfile +45 -0
- data/gemfiles/rails-3.0.7 +13 -0
- data/gemfiles/rails-3.0.7.lock +90 -0
- data/gemfiles/rails-3.0.8 +13 -0
- data/gemfiles/rails-3.0.8.lock +90 -0
- data/gemfiles/rails-3.0.9 +13 -0
- data/gemfiles/rails-3.0.9.lock +92 -0
- data/gemfiles/rails-3.1.0.rc5 +13 -0
- data/gemfiles/rails-3.1.0.rc5.lock +106 -0
- data/lib/redhillonrails_core.rb +12 -0
- data/lib/redhillonrails_core/active_record/base.rb +1 -1
- data/lib/redhillonrails_core/active_record/connection_adapters/abstract/foreign_key_definition.rb +13 -6
- data/lib/redhillonrails_core/active_record/connection_adapters/abstract/index_definition.rb +3 -0
- data/lib/redhillonrails_core/active_record/connection_adapters/abstract_adapter.rb +10 -6
- data/lib/redhillonrails_core/active_record/connection_adapters/mysql_adapter.rb +27 -53
- data/lib/redhillonrails_core/active_record/connection_adapters/postgresql_adapter.rb +82 -57
- data/lib/redhillonrails_core/active_record/migration/command_recorder.rb +30 -0
- data/lib/redhillonrails_core/active_record/schema_dumper.rb +18 -6
- data/lib/redhillonrails_core/version.rb +1 -1
- data/redhillonrails_core.gemspec +2 -1
- data/spec/command_recorder_spec.rb +39 -0
- data/spec/connections/mysql/connection.rb +4 -6
- data/spec/connections/mysql2/connection.rb +4 -6
- data/spec/connections/postgresql/connection.rb +4 -3
- data/spec/connections/sqlite3/connection.rb +4 -3
- data/spec/foreign_key_definition_spec.rb +31 -2
- data/spec/foreign_key_spec.rb +15 -2
- data/spec/migration_spec.rb +34 -0
- data/spec/table_definition_spec.rb +28 -0
- metadata +30 -11
@@ -4,12 +4,13 @@ require 'logger'
|
|
4
4
|
ActiveRecord::Base.logger = Logger.new("debug.log")
|
5
5
|
|
6
6
|
ActiveRecord::Base.configurations = {
|
7
|
-
'
|
7
|
+
'postgres' => {
|
8
8
|
:adapter => 'postgresql',
|
9
|
-
:database => '
|
9
|
+
:database => 'redhillonrails_core',
|
10
|
+
:username => 'postgres',
|
10
11
|
:min_messages => 'warning'
|
11
12
|
}
|
12
13
|
|
13
14
|
}
|
14
15
|
|
15
|
-
ActiveRecord::Base.establish_connection '
|
16
|
+
ActiveRecord::Base.establish_connection 'postgres'
|
@@ -4,11 +4,12 @@ require 'logger'
|
|
4
4
|
ActiveRecord::Base.logger = Logger.new("debug.log")
|
5
5
|
|
6
6
|
ActiveRecord::Base.configurations = {
|
7
|
-
'
|
7
|
+
'sqlite3' => {
|
8
8
|
:adapter => 'sqlite3',
|
9
|
-
:database =>
|
9
|
+
:database => ':memory:',
|
10
|
+
:timeout => 500
|
10
11
|
}
|
11
12
|
|
12
13
|
}
|
13
14
|
|
14
|
-
ActiveRecord::Base.establish_connection '
|
15
|
+
ActiveRecord::Base.establish_connection 'sqlite3'
|
@@ -4,12 +4,36 @@ require 'models/user'
|
|
4
4
|
|
5
5
|
describe "Foreign Key definition" do
|
6
6
|
|
7
|
-
let(:
|
7
|
+
let(:fk_definition) { RedhillonrailsCore::ActiveRecord::ConnectionAdapters::ForeignKeyDefinition }
|
8
8
|
|
9
9
|
it "it is dumped to sql with quoted values" do
|
10
|
-
definition
|
10
|
+
definition = fk_definition.new("named_fkey", :posts, :user, :users, :id)
|
11
|
+
definition.to_sql.should == foreign_key_sql("named_fkey")
|
11
12
|
end
|
12
13
|
|
14
|
+
context "when name isn't given" do
|
15
|
+
|
16
|
+
it "builds name from table and column name" do
|
17
|
+
definition = fk_definition.new(nil, :posts, :user, :users, :id)
|
18
|
+
definition.to_sql.should == foreign_key_sql("posts_user_fkey")
|
19
|
+
end
|
20
|
+
|
21
|
+
it "build name with column joined with underscore for compsite key" do
|
22
|
+
definition = fk_definition.new(nil, :orders, [:inquiry_id, :user_id], :inquiries, [:id, :user_id])
|
23
|
+
expected_definition = "CONSTRAINT orders_inquiry_id_user_id_fkey FOREIGN KEY \
|
24
|
+
(#{quote_column_name("inquiry_id")}, #{quote_column_name("user_id")}) \
|
25
|
+
REFERENCES #{quote_table_name("inquiries")} (#{quote_column_name("id")}, #{quote_column_name("user_id")})".squeeze(" ")
|
26
|
+
definition.to_sql.should == expected_definition
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
it "does not include name if no name or table_name is given" do
|
32
|
+
definition = fk_definition.new(nil, nil, :user, :users, :id)
|
33
|
+
definition.to_sql.should == foreign_key_sql(nil)
|
34
|
+
end
|
35
|
+
|
36
|
+
protected
|
13
37
|
def quote_table_name(table)
|
14
38
|
ActiveRecord::Base.connection.quote_table_name(table)
|
15
39
|
end
|
@@ -18,4 +42,9 @@ describe "Foreign Key definition" do
|
|
18
42
|
ActiveRecord::Base.connection.quote_column_name(column)
|
19
43
|
end
|
20
44
|
|
45
|
+
def foreign_key_sql(fk_name)
|
46
|
+
[("CONSTRAINT #{fk_name}" if fk_name), "FOREIGN KEY (#{quote_column_name('user')}) "\
|
47
|
+
"REFERENCES #{quote_table_name('users')} (#{quote_column_name('id')})"].compact.join(' ')
|
48
|
+
end
|
49
|
+
|
21
50
|
end
|
data/spec/foreign_key_spec.rb
CHANGED
@@ -10,7 +10,7 @@ describe "Foreign Key" do
|
|
10
10
|
|
11
11
|
context "when is added", "posts(author_id)" do
|
12
12
|
|
13
|
-
before(:each) do
|
13
|
+
before(:each) do
|
14
14
|
add_foreign_key(:posts, :author_id, :users, :id, :on_update => :cascade, :on_delete => :restrict)
|
15
15
|
end
|
16
16
|
|
@@ -60,7 +60,7 @@ describe "Foreign Key" do
|
|
60
60
|
it "is no longer available in Post.foreign_keys" do
|
61
61
|
Comment.foreign_keys.collect(&:column_names).should_not include(%w[post_id])
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
it "is no longer available in User.reverse_foreign_keys" do
|
65
65
|
Post.reverse_foreign_keys.collect(&:column_names).should_not include(%w[post_id])
|
66
66
|
end
|
@@ -78,6 +78,19 @@ describe "Foreign Key" do
|
|
78
78
|
|
79
79
|
end
|
80
80
|
|
81
|
+
it "shouldn't raise when restrited keyword in table name is used" do
|
82
|
+
migration.suppress_messages do
|
83
|
+
migration.create_table :select, :force => true do |t|
|
84
|
+
t.integer :post_id
|
85
|
+
end
|
86
|
+
end
|
87
|
+
expect do
|
88
|
+
add_foreign_key(:select, :post_id, :posts, :id, :name => "test_fk")
|
89
|
+
remove_foreign_key(:select, "test_fk")
|
90
|
+
end.should_not raise_error(Exception)
|
91
|
+
migration.suppress_messages { migration.drop_table :select }
|
92
|
+
end
|
93
|
+
|
81
94
|
protected
|
82
95
|
def add_foreign_key(*args)
|
83
96
|
migration.suppress_messages do
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "Migration" do
|
4
|
+
|
5
|
+
let(:migration) { ActiveRecord::Migration }
|
6
|
+
|
7
|
+
it "should allow to remove more then one column at once" do
|
8
|
+
migration.suppress_messages do
|
9
|
+
migration.create_table :likes, :id => false, :force => true do |t|
|
10
|
+
t.string :remarks
|
11
|
+
t.integer :post_id
|
12
|
+
t.datetime :created_at
|
13
|
+
end
|
14
|
+
migration.remove_columns :likes, :post_id, :created_at
|
15
|
+
migration.connection.columns(:likes).should have(1).column
|
16
|
+
migration.drop_table :likes
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should raise an exception if try to remove no column" do
|
21
|
+
migration.suppress_messages do
|
22
|
+
migration.create_table :likes, :id => false, :force => true do |t|
|
23
|
+
t.string :remarks
|
24
|
+
t.integer :post_id
|
25
|
+
t.datetime :created_at
|
26
|
+
end
|
27
|
+
expect {
|
28
|
+
migration.remove_columns :likes
|
29
|
+
}.to raise_error(ArgumentError)
|
30
|
+
migration.drop_table :likes
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
require 'models/post'
|
4
|
+
|
5
|
+
describe "Table definition" do
|
6
|
+
|
7
|
+
let(:connection) { ::ActiveRecord::Migration.connection }
|
8
|
+
|
9
|
+
unless ::ActiveRecord::Base.connection.class.include?(
|
10
|
+
RedhillonrailsCore::ActiveRecord::ConnectionAdapters::Sqlite3Adapter)
|
11
|
+
|
12
|
+
it "sets table_name of foreign key definition when running migrations" do
|
13
|
+
connection.create_table :votes, :force => true do |t|
|
14
|
+
t.integer :kind
|
15
|
+
t.integer :application_id
|
16
|
+
t.integer :user_id
|
17
|
+
t.foreign_key :user_id, :users, :id
|
18
|
+
end
|
19
|
+
|
20
|
+
Vote = Class.new(ActiveRecord::Base)
|
21
|
+
Vote.foreign_keys.size.should == 1
|
22
|
+
Vote.foreign_keys[0].table_name.should == 'votes'
|
23
|
+
connection.drop_table :votes
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: aspgems-redhillonrails_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 6
|
5
|
-
version: 2.0.0.
|
5
|
+
version: 2.0.0.beta4
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- "Micha\xC5\x82 \xC5\x81omnicki"
|
@@ -11,11 +11,10 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-08-06 00:00:00 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activerecord
|
18
|
-
prerelease: false
|
19
18
|
requirement: &id001 !ruby/object:Gem::Requirement
|
20
19
|
none: false
|
21
20
|
requirements:
|
@@ -23,10 +22,10 @@ dependencies:
|
|
23
22
|
- !ruby/object:Gem::Version
|
24
23
|
version: "2"
|
25
24
|
type: :runtime
|
25
|
+
prerelease: false
|
26
26
|
version_requirements: *id001
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activesupport
|
29
|
-
prerelease: false
|
30
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
31
30
|
none: false
|
32
31
|
requirements:
|
@@ -34,21 +33,21 @@ dependencies:
|
|
34
33
|
- !ruby/object:Gem::Version
|
35
34
|
version: "2"
|
36
35
|
type: :runtime
|
36
|
+
prerelease: false
|
37
37
|
version_requirements: *id002
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: rspec
|
40
|
-
prerelease: false
|
41
40
|
requirement: &id003 !ruby/object:Gem::Requirement
|
42
41
|
none: false
|
43
42
|
requirements:
|
44
43
|
- - ~>
|
45
44
|
- !ruby/object:Gem::Version
|
46
|
-
version: 2.
|
45
|
+
version: 2.6.0
|
47
46
|
type: :development
|
47
|
+
prerelease: false
|
48
48
|
version_requirements: *id003
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: pg
|
51
|
-
prerelease: false
|
52
51
|
requirement: &id004 !ruby/object:Gem::Requirement
|
53
52
|
none: false
|
54
53
|
requirements:
|
@@ -56,10 +55,10 @@ dependencies:
|
|
56
55
|
- !ruby/object:Gem::Version
|
57
56
|
version: "0"
|
58
57
|
type: :development
|
58
|
+
prerelease: false
|
59
59
|
version_requirements: *id004
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: mysql
|
62
|
-
prerelease: false
|
63
62
|
requirement: &id005 !ruby/object:Gem::Requirement
|
64
63
|
none: false
|
65
64
|
requirements:
|
@@ -67,10 +66,10 @@ dependencies:
|
|
67
66
|
- !ruby/object:Gem::Version
|
68
67
|
version: "0"
|
69
68
|
type: :development
|
69
|
+
prerelease: false
|
70
70
|
version_requirements: *id005
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: mysql2
|
73
|
-
prerelease: false
|
74
73
|
requirement: &id006 !ruby/object:Gem::Requirement
|
75
74
|
none: false
|
76
75
|
requirements:
|
@@ -78,10 +77,10 @@ dependencies:
|
|
78
77
|
- !ruby/object:Gem::Version
|
79
78
|
version: "0"
|
80
79
|
type: :development
|
80
|
+
prerelease: false
|
81
81
|
version_requirements: *id006
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: sqlite3-ruby
|
84
|
-
prerelease: false
|
85
84
|
requirement: &id007 !ruby/object:Gem::Requirement
|
86
85
|
none: false
|
87
86
|
requirements:
|
@@ -89,6 +88,7 @@ dependencies:
|
|
89
88
|
- !ruby/object:Gem::Version
|
90
89
|
version: 1.3.1
|
91
90
|
type: :development
|
91
|
+
prerelease: false
|
92
92
|
version_requirements: *id007
|
93
93
|
description: Adds support in ActiveRecord for foreign_keys, complex indexes and other database-related stuff. Easily create foreign_keys, complex indexes and views.
|
94
94
|
email:
|
@@ -101,11 +101,23 @@ extensions: []
|
|
101
101
|
extra_rdoc_files: []
|
102
102
|
|
103
103
|
files:
|
104
|
+
- .gitignore
|
105
|
+
- .travis.yml
|
104
106
|
- CHANGELOG
|
105
107
|
- Gemfile
|
106
108
|
- MIT-LICENSE
|
107
109
|
- README.md
|
110
|
+
- README_DEV.md
|
108
111
|
- Rakefile
|
112
|
+
- Thorfile
|
113
|
+
- gemfiles/rails-3.0.7
|
114
|
+
- gemfiles/rails-3.0.7.lock
|
115
|
+
- gemfiles/rails-3.0.8
|
116
|
+
- gemfiles/rails-3.0.8.lock
|
117
|
+
- gemfiles/rails-3.0.9
|
118
|
+
- gemfiles/rails-3.0.9.lock
|
119
|
+
- gemfiles/rails-3.1.0.rc5
|
120
|
+
- gemfiles/rails-3.1.0.rc5.lock
|
109
121
|
- init.rb
|
110
122
|
- lib/redhillonrails_core.rb
|
111
123
|
- lib/redhillonrails_core/active_record/base.rb
|
@@ -119,11 +131,13 @@ files:
|
|
119
131
|
- lib/redhillonrails_core/active_record/connection_adapters/mysql_column.rb
|
120
132
|
- lib/redhillonrails_core/active_record/connection_adapters/postgresql_adapter.rb
|
121
133
|
- lib/redhillonrails_core/active_record/connection_adapters/sqlite3_adapter.rb
|
134
|
+
- lib/redhillonrails_core/active_record/migration/command_recorder.rb
|
122
135
|
- lib/redhillonrails_core/active_record/schema.rb
|
123
136
|
- lib/redhillonrails_core/active_record/schema_dumper.rb
|
124
137
|
- lib/redhillonrails_core/version.rb
|
125
138
|
- lib/tasks/db/comments.rake
|
126
139
|
- redhillonrails_core.gemspec
|
140
|
+
- spec/command_recorder_spec.rb
|
127
141
|
- spec/connections/mysql/connection.rb
|
128
142
|
- spec/connections/mysql2/connection.rb
|
129
143
|
- spec/connections/postgresql/connection.rb
|
@@ -132,6 +146,7 @@ files:
|
|
132
146
|
- spec/foreign_key_spec.rb
|
133
147
|
- spec/index_definition_spec.rb
|
134
148
|
- spec/index_spec.rb
|
149
|
+
- spec/migration_spec.rb
|
135
150
|
- spec/models/comment.rb
|
136
151
|
- spec/models/post.rb
|
137
152
|
- spec/models/user.rb
|
@@ -139,6 +154,7 @@ files:
|
|
139
154
|
- spec/schema_dumper_spec.rb
|
140
155
|
- spec/spec_helper.rb
|
141
156
|
- spec/support/reference.rb
|
157
|
+
- spec/table_definition_spec.rb
|
142
158
|
homepage: https://github.com/aspgems/redhillonrails_core
|
143
159
|
licenses: []
|
144
160
|
|
@@ -152,6 +168,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
152
168
|
requirements:
|
153
169
|
- - ">="
|
154
170
|
- !ruby/object:Gem::Version
|
171
|
+
hash: 437283791
|
172
|
+
segments:
|
173
|
+
- 0
|
155
174
|
version: "0"
|
156
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
176
|
none: false
|
@@ -162,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
181
|
requirements: []
|
163
182
|
|
164
183
|
rubyforge_project:
|
165
|
-
rubygems_version: 1.
|
184
|
+
rubygems_version: 1.8.5
|
166
185
|
signing_key:
|
167
186
|
specification_version: 3
|
168
187
|
summary: Adds support in ActiveRecord for foreign_keys, complex indexes and other database-related stuff
|