composite_primary_keys 0.7.5 → 0.8.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.
Files changed (46) hide show
  1. data/Manifest.txt +75 -0
  2. data/Rakefile +83 -101
  3. data/lib/composite_primary_keys.rb +8 -0
  4. data/lib/composite_primary_keys/associations.rb +66 -18
  5. data/lib/composite_primary_keys/base.rb +169 -159
  6. data/lib/composite_primary_keys/calculations.rb +63 -0
  7. data/lib/composite_primary_keys/connection_adapters/postgresql_adapter.rb +11 -0
  8. data/lib/composite_primary_keys/version.rb +2 -2
  9. data/scripts/txt2html +4 -2
  10. data/scripts/txt2js +3 -2
  11. data/test/abstract_unit.rb +9 -2
  12. data/test/connections/native_mysql/connection.rb +5 -2
  13. data/test/connections/native_postgresql/connection.rb +15 -0
  14. data/test/connections/native_sqlite/connection.rb +10 -0
  15. data/test/fixtures/db_definitions/mysql.sql +20 -0
  16. data/test/fixtures/db_definitions/postgresql.sql +100 -0
  17. data/test/fixtures/db_definitions/sqlite.sql +84 -0
  18. data/test/fixtures/group.rb +3 -0
  19. data/test/fixtures/groups.yml +3 -0
  20. data/test/fixtures/membership.rb +7 -0
  21. data/test/fixtures/membership_status.rb +3 -0
  22. data/test/fixtures/membership_statuses.yml +8 -0
  23. data/test/fixtures/memberships.yml +6 -0
  24. data/test/{associations_test.rb → test_associations.rb} +22 -12
  25. data/test/{attributes_test.rb → test_attributes.rb} +4 -5
  26. data/test/{clone_test.rb → test_clone.rb} +2 -3
  27. data/test/{create_test.rb → test_create.rb} +2 -3
  28. data/test/{delete_test.rb → test_delete.rb} +2 -3
  29. data/test/{dummy_test.rb → test_dummy.rb} +4 -5
  30. data/test/{find_test.rb → test_find.rb} +3 -4
  31. data/test/{ids_test.rb → test_ids.rb} +4 -4
  32. data/test/{miscellaneous_test.rb → test_miscellaneous.rb} +2 -3
  33. data/test/{pagination_test.rb → test_pagination.rb} +4 -3
  34. data/test/{santiago_test.rb → test_santiago.rb} +5 -3
  35. data/test/test_tutorial_examle.rb +29 -0
  36. data/test/{update_test.rb → test_update.rb} +2 -3
  37. data/website/index.html +267 -201
  38. data/website/index.txt +74 -70
  39. data/website/stylesheets/screen.css +33 -3
  40. data/website/version-raw.js +1 -1
  41. data/website/version.js +1 -1
  42. metadata +80 -66
  43. data/scripts/http-access2-2.0.6.gem +0 -0
  44. data/scripts/rubyforge +0 -217
  45. data/scripts/rubyforge-orig +0 -217
  46. data/test/fixtures/db_definitions/mysql.drop.sql +0 -10
@@ -1,217 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # RENAME THIS to rubyorge, and change username/password below to your rubyforge details.
4
- # Set rubyforge file to Ignore on Subversion.
5
- # libs
6
- #
7
- $VERBOSE = nil
8
- require "getoptlong"
9
- require "enumerator"
10
- require "http-access2"
11
- #
12
- # config
13
- #
14
- config = {
15
- "username" => "nicwilliams", # this must be your username
16
- "password" => "UHUst0ck", # this must be your password
17
-
18
- "group_id" => 1953, # see source of http://rubyforge.org/frs/admin/qrs.php?package=&group_id=1953
19
-
20
- "package_ids" => { # configure shortcuts for your packages here
21
- "compositekeys" => 2327,
22
- },
23
-
24
- "uri" => "http://rubyforge.org",
25
- "cookie_jar" => File::join(File::expand_path("~"), ".rubyforge.cookie_jar"),
26
- }
27
-
28
- opts =
29
- GetoptLong::new(
30
- [ "--username" , "-u" , GetoptLong::REQUIRED_ARGUMENT ] ,
31
- [ "--password" , "-p" , GetoptLong::REQUIRED_ARGUMENT ] ,
32
- [ "--cookie_jar" , "-c" , GetoptLong::REQUIRED_ARGUMENT ]
33
- ).enum_for.inject({}){|h,kv| h.update Hash[*kv]}
34
-
35
- username = opts['username'] || config['username']
36
- password = opts['password'] || config['password']
37
- cookie_jar = opts["cookie_jar"] || config['cookie_jar']
38
- #
39
- # setup
40
- #
41
- mode = ARGV.shift
42
- abort "#{ $0 } [login|create_package (package_name)|add_package (package_id release_name release.ext)]" unless mode
43
-
44
- page, form, method = nil
45
- extheader = {}
46
-
47
- case mode
48
-
49
- when %r/login/
50
- page = "/account/login.php"
51
- method = "post_content"
52
-
53
- form = {
54
- "return_to" => "",
55
- "form_loginname" => username,
56
- "form_pw" => password,
57
- "login" => "Login"
58
- }
59
-
60
- when %r/create_package/
61
- page = "/frs/admin/index.php"
62
- method = "post_content"
63
-
64
- opts =
65
- GetoptLong::new(
66
- [ "--group_id" , "-g" , GetoptLong::REQUIRED_ARGUMENT ] ,
67
- [ "--is_private" , "-P" , GetoptLong::REQUIRED_ARGUMENT ]
68
- ).enum_for.inject({}){|h,kv| h.update Hash[*kv]}
69
-
70
- package_name = ARGV.shift
71
- abort "#{ $0 } package_name" unless package_name
72
-
73
- group_id = opts["group_id"] || config["group_id"]
74
- is_public = opts["is_private"] ? 0 : 1
75
-
76
- form = {
77
- "group_id" => group_id,
78
- "package_name" => package_name,
79
- "func" => "add_package",
80
- "is_public" => is_public,
81
- "submit" => "Create This Package",
82
- }
83
-
84
- when %r/add_release/
85
- page = "/frs/admin/qrs.php"
86
- method = "post_content"
87
-
88
- opts =
89
- GetoptLong::new(
90
- [ "--group_id" , "-g" , GetoptLong::REQUIRED_ARGUMENT ] ,
91
- [ "--release_date" , "-r" , GetoptLong::REQUIRED_ARGUMENT ] ,
92
- [ "--type_id" , "-t" , GetoptLong::REQUIRED_ARGUMENT ] ,
93
- [ "--processor_id" , "-P" , GetoptLong::REQUIRED_ARGUMENT ] ,
94
- [ "--release_nots" , "-n" , GetoptLong::REQUIRED_ARGUMENT ] ,
95
- [ "--release_changes" , "-a" , GetoptLong::REQUIRED_ARGUMENT ]
96
- ).enum_for.inject({}){|h,kv| h.update Hash[*kv]}
97
-
98
- package_id, release_name, userfile, ignored = ARGV
99
- abort "#{ $0 } package_name" unless
100
- package_id and release_name and userfile
101
-
102
- package_id = config["package_ids"][package_id] unless
103
- package_id =~ %r/^\d+$/
104
-
105
- group_id = opts["group_id"] || config["group_id"]
106
- release_date = opts["release_date"] || Time::now.strftime('%Y-%m-%d %H:%M')
107
-
108
- type_id = opts['type_id'] || userfile[%r|\.[^\./]+$|]
109
- type_id = {
110
- ".deb" => 1000,
111
- ".rpm" => 2000,
112
- ".zip" => 3000,
113
- ".bz2" => 3100,
114
- ".gz" => 3110,
115
- ".src.zip" => 5000,
116
- ".src.bz2" => 5010,
117
- ".src.gz" => 5020,
118
- ".src.rpm" => 5100,
119
- ".src" => 5900,
120
- ".jpg" => 8000,
121
- ".txt" => 8100,
122
- ".text" => 8100,
123
- ".htm" => 8200,
124
- ".html" => 8200,
125
- ".pdf" => 8300,
126
- ".oth" => 9999,
127
- ".ebuild" => 1300,
128
- ".exe" => 1100,
129
- ".dmg" => 1200,
130
- ".tar.gz" => 5000,
131
- ".tgz" => 5000,
132
- ".gem" => 1400,
133
- ".pgp" => 8150,
134
- ".sig" => 8150,
135
- }[type_id]
136
-
137
- processor_id = opts['processor_id'] || 'Any'
138
- processor_id = {
139
- "i386" => 1000,
140
- "IA64" => 6000,
141
- "Alpha" => 7000,
142
- "Any" => 8000,
143
- "PPC" => 2000,
144
- "MIPS" => 3000,
145
- "Sparc" => 4000,
146
- "UltraSparc" => 5000,
147
- "Other" => 9999,
148
- }[processor_id]
149
-
150
- release_notes = opts['release_notes'] || nil
151
- release_notes = open(release_notes) if release_notes
152
-
153
- release_changes = opts['release_changes'] || nil
154
- release_changes = open(release_changes) if release_changes
155
-
156
- userfile = open(userfile)
157
-
158
- preformatted = '1'
159
-
160
- form = {
161
- "group_id" => group_id,
162
- "package_id" => package_id,
163
- "release_name" => release_name,
164
- "release_date" => release_date,
165
- "type_id" => type_id,
166
- "processor_id" => processor_id,
167
- "preformatted" => preformatted,
168
- "userfile" => userfile,
169
- "submit" => "Release File"
170
- }
171
-
172
- boundary = Array::new(8){ "%2.2d" % rand(42) }.join('__')
173
- extheader['content-type'] = "multipart/form-data; boundary=___#{ boundary }___"
174
-
175
- else
176
- abort "#{ $0 } login create_package add_release"
177
-
178
- end
179
- #
180
- # http transaction
181
- #
182
- client = HTTPAccess2::Client::new ENV['HTTP_PROXY']
183
- client.debug_dev = STDERR if ENV['DEBUG']
184
-
185
- client.set_cookie_store cookie_jar
186
-
187
- # fixes http-access2 bug
188
- client.redirect_uri_callback = lambda do |res|
189
- page = res.header['location'].first
190
- page = page =~ %r/http/ ? page : "#{ config['uri'] }/#{ page }"
191
- page
192
- end
193
-
194
- response = client.send "#{ method }", "#{ config['uri'] }/#{ page }", form, extheader
195
-
196
- client.save_cookie_store
197
-
198
- # fixes http-access2 bug
199
- BEGIN {
200
- require "http-access2"
201
- module WebAgent::CookieUtils
202
- def domain_match(host, domain)
203
- case domain
204
- when /\d+\.\d+\.\d+\.\d+/
205
- return (host == domain)
206
- when '.'
207
- return true
208
- when /^\./
209
- #return tail_match?(domain, host)
210
- return tail_match?(host, domain)
211
- else
212
- return (host == domain)
213
- end
214
- end
215
- end
216
-
217
- }
@@ -1,217 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # RENAME THIS to rubyorge, and change username/password below to your rubyforge details.
4
- # Set rubyforge file to Ignore on Subversion.
5
- # libs
6
- #
7
- $VERBOSE = nil
8
- require "getoptlong"
9
- require "enumerator"
10
- require "http-access2"
11
- #
12
- # config
13
- #
14
- config = {
15
- "username" => "username", # this must be your username
16
- "password" => "password", # this must be your password
17
-
18
- "group_id" => 1953, # see source of http://rubyforge.org/frs/admin/qrs.php?package=&group_id=1953
19
-
20
- "package_ids" => { # configure shortcuts for your packages here
21
- "compositekeys" => 2327,
22
- },
23
-
24
- "uri" => "http://rubyforge.org",
25
- "cookie_jar" => File::join(File::expand_path("~"), ".rubyforge.cookie_jar"),
26
- }
27
-
28
- opts =
29
- GetoptLong::new(
30
- [ "--username" , "-u" , GetoptLong::REQUIRED_ARGUMENT ] ,
31
- [ "--password" , "-p" , GetoptLong::REQUIRED_ARGUMENT ] ,
32
- [ "--cookie_jar" , "-c" , GetoptLong::REQUIRED_ARGUMENT ]
33
- ).enum_for.inject({}){|h,kv| h.update Hash[*kv]}
34
-
35
- username = opts['username'] || config['username']
36
- password = opts['password'] || config['password']
37
- cookie_jar = opts["cookie_jar"] || config['cookie_jar']
38
- #
39
- # setup
40
- #
41
- mode = ARGV.shift
42
- abort "#{ $0 } [login|create_package (package_name)|add_package (package_id release_name release.ext)]" unless mode
43
-
44
- page, form, method = nil
45
- extheader = {}
46
-
47
- case mode
48
-
49
- when %r/login/
50
- page = "/account/login.php"
51
- method = "post_content"
52
-
53
- form = {
54
- "return_to" => "",
55
- "form_loginname" => username,
56
- "form_pw" => password,
57
- "login" => "Login"
58
- }
59
-
60
- when %r/create_package/
61
- page = "/frs/admin/index.php"
62
- method = "post_content"
63
-
64
- opts =
65
- GetoptLong::new(
66
- [ "--group_id" , "-g" , GetoptLong::REQUIRED_ARGUMENT ] ,
67
- [ "--is_private" , "-P" , GetoptLong::REQUIRED_ARGUMENT ]
68
- ).enum_for.inject({}){|h,kv| h.update Hash[*kv]}
69
-
70
- package_name = ARGV.shift
71
- abort "#{ $0 } package_name" unless package_name
72
-
73
- group_id = opts["group_id"] || config["group_id"]
74
- is_public = opts["is_private"] ? 0 : 1
75
-
76
- form = {
77
- "group_id" => group_id,
78
- "package_name" => package_name,
79
- "func" => "add_package",
80
- "is_public" => is_public,
81
- "submit" => "Create This Package",
82
- }
83
-
84
- when %r/add_release/
85
- page = "/frs/admin/qrs.php"
86
- method = "post_content"
87
-
88
- opts =
89
- GetoptLong::new(
90
- [ "--group_id" , "-g" , GetoptLong::REQUIRED_ARGUMENT ] ,
91
- [ "--release_date" , "-r" , GetoptLong::REQUIRED_ARGUMENT ] ,
92
- [ "--type_id" , "-t" , GetoptLong::REQUIRED_ARGUMENT ] ,
93
- [ "--processor_id" , "-P" , GetoptLong::REQUIRED_ARGUMENT ] ,
94
- [ "--release_nots" , "-n" , GetoptLong::REQUIRED_ARGUMENT ] ,
95
- [ "--release_changes" , "-a" , GetoptLong::REQUIRED_ARGUMENT ]
96
- ).enum_for.inject({}){|h,kv| h.update Hash[*kv]}
97
-
98
- package_id, release_name, userfile, ignored = ARGV
99
- abort "#{ $0 } package_name" unless
100
- package_id and release_name and userfile
101
-
102
- package_id = config["package_ids"][package_id] unless
103
- package_id =~ %r/^\d+$/
104
-
105
- group_id = opts["group_id"] || config["group_id"]
106
- release_date = opts["release_date"] || Time::now.strftime('%Y-%m-%d %H:%M')
107
-
108
- type_id = opts['type_id'] || userfile[%r|\.[^\./]+$|]
109
- type_id = {
110
- ".deb" => 1000,
111
- ".rpm" => 2000,
112
- ".zip" => 3000,
113
- ".bz2" => 3100,
114
- ".gz" => 3110,
115
- ".src.zip" => 5000,
116
- ".src.bz2" => 5010,
117
- ".src.gz" => 5020,
118
- ".src.rpm" => 5100,
119
- ".src" => 5900,
120
- ".jpg" => 8000,
121
- ".txt" => 8100,
122
- ".text" => 8100,
123
- ".htm" => 8200,
124
- ".html" => 8200,
125
- ".pdf" => 8300,
126
- ".oth" => 9999,
127
- ".ebuild" => 1300,
128
- ".exe" => 1100,
129
- ".dmg" => 1200,
130
- ".tar.gz" => 5000,
131
- ".tgz" => 5000,
132
- ".gem" => 1400,
133
- ".pgp" => 8150,
134
- ".sig" => 8150,
135
- }[type_id]
136
-
137
- processor_id = opts['processor_id'] || 'Any'
138
- processor_id = {
139
- "i386" => 1000,
140
- "IA64" => 6000,
141
- "Alpha" => 7000,
142
- "Any" => 8000,
143
- "PPC" => 2000,
144
- "MIPS" => 3000,
145
- "Sparc" => 4000,
146
- "UltraSparc" => 5000,
147
- "Other" => 9999,
148
- }[processor_id]
149
-
150
- release_notes = opts['release_notes'] || nil
151
- release_notes = open(release_notes) if release_notes
152
-
153
- release_changes = opts['release_changes'] || nil
154
- release_changes = open(release_changes) if release_changes
155
-
156
- userfile = open(userfile)
157
-
158
- preformatted = '1'
159
-
160
- form = {
161
- "group_id" => group_id,
162
- "package_id" => package_id,
163
- "release_name" => release_name,
164
- "release_date" => release_date,
165
- "type_id" => type_id,
166
- "processor_id" => processor_id,
167
- "preformatted" => preformatted,
168
- "userfile" => userfile,
169
- "submit" => "Release File"
170
- }
171
-
172
- boundary = Array::new(8){ "%2.2d" % rand(42) }.join('__')
173
- extheader['content-type'] = "multipart/form-data; boundary=___#{ boundary }___"
174
-
175
- else
176
- abort "#{ $0 } login create_package add_release"
177
-
178
- end
179
- #
180
- # http transaction
181
- #
182
- client = HTTPAccess2::Client::new ENV['HTTP_PROXY']
183
- client.debug_dev = STDERR if ENV['DEBUG']
184
-
185
- client.set_cookie_store cookie_jar
186
-
187
- # fixes http-access2 bug
188
- client.redirect_uri_callback = lambda do |res|
189
- page = res.header['location'].first
190
- page = page =~ %r/http/ ? page : "#{ config['uri'] }/#{ page }"
191
- page
192
- end
193
-
194
- response = client.send "#{ method }", "#{ config['uri'] }/#{ page }", form, extheader
195
-
196
- client.save_cookie_store
197
-
198
- # fixes http-access2 bug
199
- BEGIN {
200
- require "http-access2"
201
- module WebAgent::CookieUtils
202
- def domain_match(host, domain)
203
- case domain
204
- when /\d+\.\d+\.\d+\.\d+/
205
- return (host == domain)
206
- when '.'
207
- return true
208
- when /^\./
209
- #return tail_match?(domain, host)
210
- return tail_match?(host, domain)
211
- else
212
- return (host == domain)
213
- end
214
- end
215
- end
216
-
217
- }
@@ -1,10 +0,0 @@
1
- DROP TABLE reference_codes;
2
- DROP TABLE reference_types;
3
- DROP TABLE products;
4
- DROP TABLE tariffs;
5
- DROP TABLE product_tariffs;
6
- DROP TABLE streets;
7
- DROP TABLE suburbs;
8
- DROP TABLE users;
9
- DROP TABLE articles;
10
- DROP TABLE readings;