peegee 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/.gitignore +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +118 -0
- data/Rakefile +2 -0
- data/features/create_indexes_in_migrations.feature +21 -0
- data/features/step_definitions/migration_steps.rb +10 -0
- data/features/step_definitions/postgres_steps.rb +8 -0
- data/features/step_definitions/rails_steps.rb +22 -0
- data/features/support/env.rb +6 -0
- data/features/support/sql_helpers.rb +30 -0
- data/lib/peegee.rb +3 -0
- data/lib/peegee/version.rb +3 -0
- data/peegee.gemspec +28 -0
- metadata +194 -0
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
tmp
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
peegee (0.0.1)
|
5
|
+
activerecord
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
abstract (1.0.0)
|
11
|
+
actionmailer (3.0.7)
|
12
|
+
actionpack (= 3.0.7)
|
13
|
+
mail (~> 2.2.15)
|
14
|
+
actionpack (3.0.7)
|
15
|
+
activemodel (= 3.0.7)
|
16
|
+
activesupport (= 3.0.7)
|
17
|
+
builder (~> 2.1.2)
|
18
|
+
erubis (~> 2.6.6)
|
19
|
+
i18n (~> 0.5.0)
|
20
|
+
rack (~> 1.2.1)
|
21
|
+
rack-mount (~> 0.6.14)
|
22
|
+
rack-test (~> 0.5.7)
|
23
|
+
tzinfo (~> 0.3.23)
|
24
|
+
activemodel (3.0.7)
|
25
|
+
activesupport (= 3.0.7)
|
26
|
+
builder (~> 2.1.2)
|
27
|
+
i18n (~> 0.5.0)
|
28
|
+
activerecord (3.0.7)
|
29
|
+
activemodel (= 3.0.7)
|
30
|
+
activesupport (= 3.0.7)
|
31
|
+
arel (~> 2.0.2)
|
32
|
+
tzinfo (~> 0.3.23)
|
33
|
+
activeresource (3.0.7)
|
34
|
+
activemodel (= 3.0.7)
|
35
|
+
activesupport (= 3.0.7)
|
36
|
+
activesupport (3.0.7)
|
37
|
+
arel (2.0.10)
|
38
|
+
aruba (0.3.6)
|
39
|
+
childprocess (>= 0.1.7)
|
40
|
+
cucumber (>= 0.10.0)
|
41
|
+
rspec (>= 2.5.0)
|
42
|
+
builder (2.1.2)
|
43
|
+
childprocess (0.1.9)
|
44
|
+
ffi (~> 1.0.6)
|
45
|
+
columnize (0.3.2)
|
46
|
+
cucumber (0.10.3)
|
47
|
+
builder (>= 2.1.2)
|
48
|
+
diff-lcs (>= 1.1.2)
|
49
|
+
gherkin (>= 2.3.8)
|
50
|
+
json (>= 1.4.6)
|
51
|
+
term-ansicolor (>= 1.0.5)
|
52
|
+
diff-lcs (1.1.2)
|
53
|
+
erubis (2.6.6)
|
54
|
+
abstract (>= 1.0.0)
|
55
|
+
ffi (1.0.9)
|
56
|
+
gherkin (2.3.10)
|
57
|
+
json (>= 1.4.6)
|
58
|
+
i18n (0.5.0)
|
59
|
+
json (1.5.1)
|
60
|
+
linecache (0.43)
|
61
|
+
mail (2.2.19)
|
62
|
+
activesupport (>= 2.3.6)
|
63
|
+
i18n (>= 0.4.0)
|
64
|
+
mime-types (~> 1.16)
|
65
|
+
treetop (~> 1.4.8)
|
66
|
+
mime-types (1.16)
|
67
|
+
pg (0.11.0)
|
68
|
+
polyglot (0.3.1)
|
69
|
+
rack (1.2.3)
|
70
|
+
rack-mount (0.6.14)
|
71
|
+
rack (>= 1.0.0)
|
72
|
+
rack-test (0.5.7)
|
73
|
+
rack (>= 1.0)
|
74
|
+
rails (3.0.7)
|
75
|
+
actionmailer (= 3.0.7)
|
76
|
+
actionpack (= 3.0.7)
|
77
|
+
activerecord (= 3.0.7)
|
78
|
+
activeresource (= 3.0.7)
|
79
|
+
activesupport (= 3.0.7)
|
80
|
+
bundler (~> 1.0)
|
81
|
+
railties (= 3.0.7)
|
82
|
+
railties (3.0.7)
|
83
|
+
actionpack (= 3.0.7)
|
84
|
+
activesupport (= 3.0.7)
|
85
|
+
rake (>= 0.8.7)
|
86
|
+
thor (~> 0.14.4)
|
87
|
+
rake (0.8.7)
|
88
|
+
rspec (2.6.0)
|
89
|
+
rspec-core (~> 2.6.0)
|
90
|
+
rspec-expectations (~> 2.6.0)
|
91
|
+
rspec-mocks (~> 2.6.0)
|
92
|
+
rspec-core (2.6.3)
|
93
|
+
rspec-expectations (2.6.0)
|
94
|
+
diff-lcs (~> 1.1.2)
|
95
|
+
rspec-mocks (2.6.0)
|
96
|
+
ruby-debug (0.10.4)
|
97
|
+
columnize (>= 0.1)
|
98
|
+
ruby-debug-base (~> 0.10.4.0)
|
99
|
+
ruby-debug-base (0.10.4)
|
100
|
+
linecache (>= 0.3)
|
101
|
+
term-ansicolor (1.0.5)
|
102
|
+
thor (0.14.6)
|
103
|
+
treetop (1.4.9)
|
104
|
+
polyglot (>= 0.3.1)
|
105
|
+
tzinfo (0.3.27)
|
106
|
+
|
107
|
+
PLATFORMS
|
108
|
+
ruby
|
109
|
+
|
110
|
+
DEPENDENCIES
|
111
|
+
aruba
|
112
|
+
cucumber
|
113
|
+
peegee!
|
114
|
+
pg
|
115
|
+
rails (= 3.0.7)
|
116
|
+
rspec-core
|
117
|
+
rspec-expectations
|
118
|
+
ruby-debug
|
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Feature: Adding PostgreSQL specific indexes in a Rails migration
|
2
|
+
As a developer
|
3
|
+
I can add PostgreSQL index types in a migration
|
4
|
+
So that I can make better use of PostgreSQL indexes
|
5
|
+
|
6
|
+
Scenario: Adding a partial index
|
7
|
+
Given I create and configure the "peegee_test" rails app
|
8
|
+
And I run `script/rails generate model User name:string active:boolean`
|
9
|
+
And I run `script/rails generate migration add_index_to_active_users`
|
10
|
+
And I implement the latest migration as:
|
11
|
+
"""
|
12
|
+
def self.up
|
13
|
+
add_index :users, :name, :name => 'users_name_where_active_true', :where => 'active = true'
|
14
|
+
end
|
15
|
+
def self.down
|
16
|
+
remove_index :users, :name
|
17
|
+
end
|
18
|
+
"""
|
19
|
+
And I run `bundle exec rake db:migrate`
|
20
|
+
Then the "users" table should have the following index:
|
21
|
+
| CREATE INDEX users_name_where_active_true ON users USING btree (id) where active = true |
|
@@ -0,0 +1,10 @@
|
|
1
|
+
Given /^I implement the latest migration as:$/ do |implementation|
|
2
|
+
in_current_dir do
|
3
|
+
migrations = Dir["db/migrate/*rb"].to_a
|
4
|
+
path = migrations.last
|
5
|
+
contents = IO.read(path)
|
6
|
+
class_declaration = contents.split("\n").first
|
7
|
+
new_contents = "#{class_declaration}\n#{implementation}\nend"
|
8
|
+
File.open(path, "w") { |file| file.write(new_contents) }
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
Then /^the "(\w+)" table should have the following index(?:es)?:$/ do |table_name, indexes|
|
2
|
+
actual_indexes = select_all(<<-INDEX_SQL).map { |r| r["index_def"] }
|
3
|
+
SELECT pg_catalog.pg_get_indexdef(i.indexrelid, 0, true) as index_def
|
4
|
+
FROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i
|
5
|
+
WHERE c.oid = '#{oid(table_name)}' AND c.oid = i.indrelid AND i.indexrelid = c2.oid
|
6
|
+
INDEX_SQL
|
7
|
+
actual_indexes.should include(*indexes.raw.flatten)
|
8
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Given /^I create and configure the "(\w+)" rails app$/ do |name|
|
2
|
+
Given %{I run `rails new #{name} --database=postgresql -J -T -G`}
|
3
|
+
And %{I cd to "peegee_test"}
|
4
|
+
|
5
|
+
database_config = <<-CONFIG
|
6
|
+
development: &default
|
7
|
+
adapter: postgresql
|
8
|
+
encoding: unicode
|
9
|
+
database: peegee_development
|
10
|
+
pool: 5
|
11
|
+
min_messages: warning
|
12
|
+
test:
|
13
|
+
<< default
|
14
|
+
database: peegee_test
|
15
|
+
|
16
|
+
CONFIG
|
17
|
+
in_current_dir do
|
18
|
+
File.open('config/database.yml', 'w') { |file| file.write(database_config) }
|
19
|
+
end
|
20
|
+
And %{I run `bundle install`}
|
21
|
+
And %{I run `bundle exec rake db:drop:all db:create:all`}
|
22
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
module SqlHelpers
|
3
|
+
def connection
|
4
|
+
@connection || begin
|
5
|
+
ActiveRecord::Base.establish_connection(
|
6
|
+
:adapter => 'postgresql',
|
7
|
+
:encoding => 'unicode',
|
8
|
+
:database => 'peegee_development'
|
9
|
+
)
|
10
|
+
ActiveRecord::Base.connection
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def select_all(sql)
|
15
|
+
connection.select_all sql
|
16
|
+
end
|
17
|
+
|
18
|
+
def oid(table_name)
|
19
|
+
select_all(<<-SQL).first['oid']
|
20
|
+
SELECT c.oid
|
21
|
+
FROM pg_catalog.pg_class c
|
22
|
+
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
|
23
|
+
WHERE c.relname = '#{table_name}'
|
24
|
+
AND pg_catalog.pg_table_is_visible(c.oid);
|
25
|
+
SQL
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
World(SqlHelpers)
|
data/lib/peegee.rb
ADDED
data/peegee.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "peegee/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "peegee"
|
7
|
+
s.version = Peegee::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Harold Giménez"]
|
10
|
+
s.email = ["hgimenez@thoughtbot.com"]
|
11
|
+
s.homepage = "http://github.com/peegee"
|
12
|
+
s.summary = %q{PostgreSQL extensions for ActiveRecord}
|
13
|
+
s.description = %q{Not much going on here yet.}
|
14
|
+
|
15
|
+
s.add_dependency 'activerecord'
|
16
|
+
s.add_development_dependency 'pg'
|
17
|
+
s.add_development_dependency 'cucumber'
|
18
|
+
s.add_development_dependency 'aruba'
|
19
|
+
s.add_development_dependency 'rspec-core'
|
20
|
+
s.add_development_dependency 'rspec-expectations'
|
21
|
+
s.add_development_dependency 'rails', '3.0.7'
|
22
|
+
s.add_development_dependency 'ruby-debug'
|
23
|
+
|
24
|
+
s.files = `git ls-files`.split("\n")
|
25
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
26
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
27
|
+
s.require_paths = ["lib"]
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,194 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: peegee
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 3
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
version: "0"
|
9
|
+
platform: ruby
|
10
|
+
authors:
|
11
|
+
- "Harold Gim\xC3\xA9nez"
|
12
|
+
autorequire:
|
13
|
+
bindir: bin
|
14
|
+
cert_chain: []
|
15
|
+
|
16
|
+
date: 2011-06-04 00:00:00 Z
|
17
|
+
dependencies:
|
18
|
+
- !ruby/object:Gem::Dependency
|
19
|
+
name: activerecord
|
20
|
+
prerelease: false
|
21
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
22
|
+
none: false
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
hash: 3
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
version: "0"
|
30
|
+
type: :runtime
|
31
|
+
version_requirements: *id001
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: pg
|
34
|
+
prerelease: false
|
35
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
hash: 3
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
44
|
+
type: :development
|
45
|
+
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: cucumber
|
48
|
+
prerelease: false
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
hash: 3
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
version: "0"
|
58
|
+
type: :development
|
59
|
+
version_requirements: *id003
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: aruba
|
62
|
+
prerelease: false
|
63
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
version: "0"
|
72
|
+
type: :development
|
73
|
+
version_requirements: *id004
|
74
|
+
- !ruby/object:Gem::Dependency
|
75
|
+
name: rspec-core
|
76
|
+
prerelease: false
|
77
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
hash: 3
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
version: "0"
|
86
|
+
type: :development
|
87
|
+
version_requirements: *id005
|
88
|
+
- !ruby/object:Gem::Dependency
|
89
|
+
name: rspec-expectations
|
90
|
+
prerelease: false
|
91
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
hash: 3
|
97
|
+
segments:
|
98
|
+
- 0
|
99
|
+
version: "0"
|
100
|
+
type: :development
|
101
|
+
version_requirements: *id006
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: rails
|
104
|
+
prerelease: false
|
105
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - "="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
hash: 9
|
111
|
+
segments:
|
112
|
+
- 3
|
113
|
+
- 0
|
114
|
+
- 7
|
115
|
+
version: 3.0.7
|
116
|
+
type: :development
|
117
|
+
version_requirements: *id007
|
118
|
+
- !ruby/object:Gem::Dependency
|
119
|
+
name: ruby-debug
|
120
|
+
prerelease: false
|
121
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ">="
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
hash: 3
|
127
|
+
segments:
|
128
|
+
- 0
|
129
|
+
version: "0"
|
130
|
+
type: :development
|
131
|
+
version_requirements: *id008
|
132
|
+
description: Not much going on here yet.
|
133
|
+
email:
|
134
|
+
- hgimenez@thoughtbot.com
|
135
|
+
executables: []
|
136
|
+
|
137
|
+
extensions: []
|
138
|
+
|
139
|
+
extra_rdoc_files: []
|
140
|
+
|
141
|
+
files:
|
142
|
+
- .gitignore
|
143
|
+
- Gemfile
|
144
|
+
- Gemfile.lock
|
145
|
+
- Rakefile
|
146
|
+
- features/create_indexes_in_migrations.feature
|
147
|
+
- features/step_definitions/migration_steps.rb
|
148
|
+
- features/step_definitions/postgres_steps.rb
|
149
|
+
- features/step_definitions/rails_steps.rb
|
150
|
+
- features/support/env.rb
|
151
|
+
- features/support/sql_helpers.rb
|
152
|
+
- lib/peegee.rb
|
153
|
+
- lib/peegee/version.rb
|
154
|
+
- peegee.gemspec
|
155
|
+
homepage: http://github.com/peegee
|
156
|
+
licenses: []
|
157
|
+
|
158
|
+
post_install_message:
|
159
|
+
rdoc_options: []
|
160
|
+
|
161
|
+
require_paths:
|
162
|
+
- lib
|
163
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
164
|
+
none: false
|
165
|
+
requirements:
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
hash: 3
|
169
|
+
segments:
|
170
|
+
- 0
|
171
|
+
version: "0"
|
172
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
|
+
none: false
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
hash: 3
|
178
|
+
segments:
|
179
|
+
- 0
|
180
|
+
version: "0"
|
181
|
+
requirements: []
|
182
|
+
|
183
|
+
rubyforge_project:
|
184
|
+
rubygems_version: 1.7.2
|
185
|
+
signing_key:
|
186
|
+
specification_version: 3
|
187
|
+
summary: PostgreSQL extensions for ActiveRecord
|
188
|
+
test_files:
|
189
|
+
- features/create_indexes_in_migrations.feature
|
190
|
+
- features/step_definitions/migration_steps.rb
|
191
|
+
- features/step_definitions/postgres_steps.rb
|
192
|
+
- features/step_definitions/rails_steps.rb
|
193
|
+
- features/support/env.rb
|
194
|
+
- features/support/sql_helpers.rb
|