composite_primary_keys 0.8.2 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,10 @@
1
+ *** 0.8.3 / 2007-5-3
2
+
3
+ + 1 bugfix
4
+ + Explicit reference to ::ActiveRecord::RecordNotFound
5
+ + 1 website addition:
6
+ + Added routing help [Pete Sumskas]
7
+
1
8
  *** 0.8.2 / 2007-4-11
2
9
 
3
10
  + 1 major enhancement:
@@ -25,6 +25,8 @@ test/connections/native_sqlite/connection.rb
25
25
  test/fixtures/article.rb
26
26
  test/fixtures/articles.yml
27
27
  test/fixtures/db_definitions/mysql.sql
28
+ test/fixtures/db_definitions/oracle.drop.sql
29
+ test/fixtures/db_definitions/oracle.sql
28
30
  test/fixtures/db_definitions/postgresql.sql
29
31
  test/fixtures/db_definitions/sqlite.sql
30
32
  test/fixtures/group.rb
data/Rakefile CHANGED
@@ -19,8 +19,8 @@ RUBYFORGE_PROJECT = "compositekeys"
19
19
  HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
20
20
 
21
21
  REV = nil #File.read(".svn/entries")[/committed-rev="(\d+)"/, 1] rescue nil
22
- VERSION = ENV['VERSION'] || (CompositePrimaryKeys::VERSION::STRING + (REV ? ".#{REV}" : ""))
23
- CLEAN.include ['**/.*.sw?', '*.gem', '.config']
22
+ VER = ENV['VERSION'] || (CompositePrimaryKeys::VERSION::STRING + (REV ? ".#{REV}" : ""))
23
+ CLEAN.include ['**/.*.sw?', '*.gem', '.config','debug.log','*.db','logfile','.DS_Store']
24
24
  RDOC_OPTS = ['--quiet', '--title', "newgem documentation",
25
25
  "--opname", "index.html",
26
26
  "--line-numbers",
@@ -35,7 +35,7 @@ end
35
35
 
36
36
  # Generate all the Rake tasks
37
37
  # Run 'rake -T' to see list of generated tasks (from gem root directory)
38
- hoe = Hoe.new(GEM_NAME, VERSION) do |p|
38
+ hoe = Hoe.new(GEM_NAME, VER) do |p|
39
39
  p.author = AUTHOR
40
40
  p.description = DESCRIPTION
41
41
  p.email = EMAIL
@@ -303,7 +303,7 @@ module CompositePrimaryKeys
303
303
  if result.size == ids.size
304
304
  ids.size == 1 ? result[0] : result
305
305
  else
306
- raise RecordNotFound, "Couldn't find all #{name.pluralize} with IDs (#{ids_list})#{conditions}"
306
+ raise ::ActiveRecord::RecordNotFound, "Couldn't find all #{name.pluralize} with IDs (#{ids_list})#{conditions}"
307
307
  end
308
308
  end
309
309
 
@@ -2,7 +2,7 @@ module CompositePrimaryKeys
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 8
5
- TINY = 2
5
+ TINY = 3
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -0,0 +1,21 @@
1
+ drop table reference_types;
2
+ drop sequence reference_types_seq;
3
+ drop table reference_codes;
4
+ drop table products;
5
+ drop sequence products_seq;
6
+ drop table tariffs;
7
+ drop table product_tariffs;
8
+ drop table suburbs;
9
+ drop table streets;
10
+ drop sequence streets_seq;
11
+ drop table users;
12
+ drop sequence users_seq;
13
+ drop table articles;
14
+ drop sequence articles_seq;
15
+ drop table readings;
16
+ drop sequence readings_seq;
17
+ drop table groups;
18
+ drop sequence groups_seq;
19
+ drop table memberships;
20
+ drop table membership_statuses;
21
+ drop sequence membership_statuses_seq;
@@ -0,0 +1,111 @@
1
+ create table reference_types (
2
+ reference_type_id number(11) primary key,
3
+ type_label varchar2(50) default null,
4
+ abbreviation varchar2(50) default null,
5
+ description varchar2(50) default null
6
+ );
7
+
8
+ create sequence reference_types_seq
9
+ start with 1000;
10
+
11
+ create table reference_codes (
12
+ reference_type_id number(11),
13
+ reference_code number(11),
14
+ code_label varchar2(50) default null,
15
+ abbreviation varchar2(50) default null,
16
+ description varchar2(50) default null,
17
+ constraint reference_codes_pk primary key(reference_type_id, reference_code)
18
+ );
19
+
20
+ create table products (
21
+ id number(11) primary key,
22
+ name varchar2(50) default null
23
+ );
24
+
25
+ create sequence products_seq
26
+ start with 1000;
27
+
28
+ create table tariffs (
29
+ tariff_id number(11),
30
+ start_date date,
31
+ amount number(11) default null,
32
+ constraint tariffs_pk primary key(tariff_id, start_date)
33
+ );
34
+
35
+ create table product_tariffs (
36
+ product_id number(11),
37
+ tariff_id number(11),
38
+ tariff_start_date date,
39
+ constraint product_tariffs_pk primary key(product_id, tariff_id, tariff_start_date)
40
+ );
41
+
42
+ create table suburbs (
43
+ city_id number(11),
44
+ suburb_id number(11),
45
+ name varchar2(50) not null,
46
+ constraint suburbs_pk primary key(city_id, suburb_id)
47
+ );
48
+
49
+ create table streets (
50
+ id number(11) primary key,
51
+ city_id number(11) not null,
52
+ suburb_id number(11) not null,
53
+ name varchar2(50) not null
54
+ );
55
+
56
+ create sequence streets_seq
57
+ start with 1000;
58
+
59
+ create table users (
60
+ id number(11) primary key,
61
+ name varchar2(50) not null
62
+ );
63
+
64
+ create sequence users_seq
65
+ start with 1000;
66
+
67
+ create table articles (
68
+ id number(11) primary key,
69
+ name varchar2(50) not null
70
+ );
71
+
72
+ create sequence articles_seq
73
+ start with 1000;
74
+
75
+
76
+ create table readings (
77
+ id number(11) primary key,
78
+ user_id number(11) not null,
79
+ article_id number(11) not null,
80
+ rating number(11) not null
81
+ );
82
+
83
+ create sequence readings_seq
84
+ start with 1000;
85
+
86
+
87
+ create table groups (
88
+ id number(11) primary key,
89
+ name varchar2(50) not null
90
+ );
91
+
92
+ create sequence groups_seq
93
+ start with 1000;
94
+
95
+
96
+ create table memberships (
97
+ user_id number(11) not null,
98
+ group_id number(11) not null,
99
+ constraint memberships_pk primary key(user_id, group_id)
100
+ );
101
+
102
+ create table membership_statuses (
103
+ id number(11) primary key,
104
+ user_id number(11) not null,
105
+ group_id number(11) not null,
106
+ status varchar2(50) not null
107
+ );
108
+
109
+ create sequence membership_statuses_seq
110
+ start with 1000;
111
+
@@ -33,7 +33,7 @@
33
33
  <h1>Composite Primary Keys</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/compositekeys"; return false'>
35
35
  Get Version
36
- <a href="http://rubyforge.org/projects/compositekeys" class="numbers">0.8.2</a>
36
+ <a href="http://rubyforge.org/projects/compositekeys" class="numbers">0.8.3</a>
37
37
  </div>
38
38
  <h1>&#x2192; Ruby on Rails</h1>
39
39
 
@@ -141,7 +141,7 @@ throughout your application. Just like a normal ActiveRecord.</p>
141
141
  <h2>Other tricks</h2>
142
142
 
143
143
 
144
- <p>Pass a list of composite ids to the <code>#find</code> method</p>
144
+ <h3>Pass a list of composite ids to the <code>#find</code> method</h3>
145
145
 
146
146
 
147
147
  <p><pre class="syntax"><span class="constant">Membership</span><span class="punct">.</span><span class="ident">find</span> <span class="punct">[</span><span class="number">1</span><span class="punct">,</span><span class="number">1</span><span class="punct">],</span> <span class="punct">[</span><span class="number">2</span><span class="punct">,</span><span class="number">1</span><span class="punct">]</span>
@@ -157,6 +157,31 @@ throughout your application. Just like a normal ActiveRecord.</p>
157
157
  <p><pre class="syntax"><span class="constant">MembershipStatus</span><span class="punct">.</span><span class="ident">find</span><span class="punct">(</span><span class="symbol">:first</span><span class="punct">).</span><span class="ident">memberships</span><span class="punct">.</span><span class="ident">count</span> <span class="comment"># =&gt; 1</span></pre></p>
158
158
 
159
159
 
160
+ <h3>Routes with Rails</h3>
161
+
162
+
163
+ <p>From Pete Sumskas:</p>
164
+
165
+
166
+ <blockquote>
167
+ I ran into one problem that I didn&#8217;t see mentioned on <a href="http://groups.google.com/group/compositekeys">this list</a> &#8211;
168
+ and I didn&#8217;t see any information about what I should do to address it in the
169
+ documentation (might have missed it).
170
+
171
+ The problem was that the urls being generated for a &#8216;show&#8217; action (for
172
+ example) had a syntax like:
173
+
174
+ <pre>/controller/show/123000,Bu70</pre>
175
+
176
+ for a two-field composite PK. The default routing would not match that,
177
+ so after working out how to do the routing I added:
178
+
179
+ <pre class="syntax"><span class="ident">map</span><span class="punct">.</span><span class="ident">connect</span> <span class="punct">'</span><span class="string">:controller/:action/:id</span><span class="punct">',</span> <span class="symbol">:id</span> <span class="punct">=&gt;</span> <span class="punct">/</span><span class="regex"><span class="escape">\w</span>+(,<span class="escape">\w</span>+)*</span><span class="punct">/</span></pre>
180
+
181
+ to my <code>route.rb</code> file.
182
+
183
+ </blockquote>
184
+
160
185
  <p><a name="dbs"></a></p>
161
186
 
162
187
 
@@ -189,8 +214,8 @@ throughout your application. Just like a normal ActiveRecord.</p>
189
214
  </tr>
190
215
  <tr>
191
216
  <td>oracle </td>
192
- <td><span class=unknown>???</span> (<a href="mailto:compositekeys@googlegroups.com?subject=Help+with+Oracle">I can help</a>)</td>
193
- <td><span class=unknown>???</span> (<a href="mailto:compositekeys@googlegroups.com?subject=Oracle+is+working">Yes!</a> or <a href="mailto:compositekeys@googlegroups.com?subject=Oracle+is+failing">No&#8230;</a>)</td>
217
+ <td><span class=success><span class="caps">YES</span></span> (new 0.8.2)</td>
218
+ <td><span class=success><span class="caps">YES</span></span> (<a href="mailto:compositekeys@googlegroups.com?subject=Oracle+is+working">Yes!</a> or <a href="mailto:compositekeys@googlegroups.com?subject=Oracle+is+failing">No&#8230;</a>)</td>
194
219
  </tr>
195
220
  <tr>
196
221
  <td>sqlserver </td>
@@ -227,6 +252,12 @@ throughout your application. Just like a normal ActiveRecord.</p>
227
252
 
228
253
 
229
254
 
255
+ <h3>Thanks go to&#8230;</h3>
256
+
257
+
258
+ <p><strong>Darrin Holst</strong> &#8211; for Oracle unit tests and calculations support</p>
259
+
260
+
230
261
  <h2>Dr Nic&#8217;s Blog</h2>
231
262
 
232
263
 
@@ -251,7 +282,7 @@ other stories and things.</p>
251
282
 
252
283
  <p>Comments are welcome. Send an email to <a href="mailto:drnicwilliams@gmail.com">Dr Nic Williams</a>.</p>
253
284
  <p class="coda">
254
- <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 7th April 2007<br>
285
+ <a href="mailto:drnicwilliams@gmail.com">Dr Nic</a>, 3rd May 2007<br>
255
286
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
256
287
  </p>
257
288
  </div>
@@ -78,7 +78,7 @@ throughout your application. Just like a normal ActiveRecord.
78
78
 
79
79
  h2. Other tricks
80
80
 
81
- Pass a list of composite ids to the <code>#find</code> method
81
+ h3. Pass a list of composite ids to the <code>#find</code> method
82
82
 
83
83
  <pre syntax="ruby">Membership.find [1,1], [2,1]
84
84
  => [
@@ -90,6 +90,29 @@ Perform <code>#count</code> operations
90
90
 
91
91
  <pre syntax="ruby">MembershipStatus.find(:first).memberships.count # => 1</pre>
92
92
 
93
+ h3. Routes with Rails
94
+
95
+ From Pete Sumskas:
96
+
97
+ <blockquote>
98
+ I ran into one problem that I didn't see mentioned on "this list":http://groups.google.com/group/compositekeys -
99
+ and I didn't see any information about what I should do to address it in the
100
+ documentation (might have missed it).
101
+
102
+ The problem was that the urls being generated for a 'show' action (for
103
+ example) had a syntax like:
104
+
105
+ <pre>/controller/show/123000,Bu70</pre>
106
+
107
+ for a two-field composite PK. The default routing would not match that,
108
+ so after working out how to do the routing I added:
109
+
110
+ <pre syntax="ruby">map.connect ':controller/:action/:id', :id => /\w+(,\w+)*/</pre>
111
+
112
+ to my <code>route.rb</code> file.
113
+
114
+ </blockquote>
115
+
93
116
  <a name="dbs"></a>
94
117
 
95
118
  h2. Which databases?
@@ -101,7 +124,7 @@ A suite of unit tests have been run on the following databases supported by Acti
101
124
  |mysql |<span class=success>YES</span>|<span class=unknown>???</span> ("Yes!":mailto:compositekeys@googlegroups.com?subject=Mysql+is+working or "No...":mailto:compositekeys@googlegroups.com?subject=Mysql+is+failing)|
102
125
  |sqlite3 |<span class=success>YES</span> (new 0.8.0)|<span class=unknown>???</span> ("Yes!":mailto:compositekeys@googlegroups.com?subject=Sqlite3+is+working or "No...":mailto:compositekeys@googlegroups.com?subject=Sqlite3+is+failing)|
103
126
  |postgresql|<span class=success>YES</span> (new 0.8.0)|<span class=unknown>???</span> ("Yes!":mailto:compositekeys@googlegroups.com?subject=Postgresql+is+working or "No...":mailto:compositekeys@googlegroups.com?subject=Postgresql+is+failing)|
104
- |oracle |<span class=unknown>???</span> ("I can help":mailto:compositekeys@googlegroups.com?subject=Help+with+Oracle)|<span class=unknown>???</span> ("Yes!":mailto:compositekeys@googlegroups.com?subject=Oracle+is+working or "No...":mailto:compositekeys@googlegroups.com?subject=Oracle+is+failing)|
127
+ |oracle |<span class=success>YES</span> (new 0.8.2)|<span class=success>YES</span> ("Yes!":mailto:compositekeys@googlegroups.com?subject=Oracle+is+working or "No...":mailto:compositekeys@googlegroups.com?subject=Oracle+is+failing)|
105
128
  |sqlserver |<span class=unknown>???</span> ("I can help":mailto:compositekeys@googlegroups.com?subject=Help+with+SQLServer)|<span class=unknown>???</span> ("Yes!":mailto:compositekeys@googlegroups.com?subject=SQLServer+is+working or "No...":mailto:compositekeys@googlegroups.com?subject=SQLServer+is+failing)|
106
129
  |db2 |<span class=unknown>???</span> ("I can help":mailto:compositekeys@googlegroups.com?subject=Help+with+DB2)|<span class=unknown>???</span> ("Yes!":mailto:compositekeys@googlegroups.com?subject=DB2+is+working or "No...":mailto:compositekeys@googlegroups.com?subject=DB2+is+failing)|
107
130
  |firebird |<span class=unknown>???</span> ("I can help":mailto:compositekeys@googlegroups.com?subject=Help+with+Firebird)|<span class=unknown>???</span> ("Yes!":mailto:compositekeys@googlegroups.com?subject=Firebird+is+working or "No...":mailto:compositekeys@googlegroups.com?subject=Firebird+is+failing)|
@@ -109,6 +132,10 @@ A suite of unit tests have been run on the following databases supported by Acti
109
132
  |openbase |<span class=unknown>???</span> ("I can help":mailto:compositekeys@googlegroups.com?subject=Help+with+Openbase)|<span class=unknown>???</span> ("Yes!":mailto:compositekeys@googlegroups.com?subject=Openbase+is+working or "No...":mailto:compositekeys@googlegroups.com?subject=Openbase+is+failing)|
110
133
  |frontbase |<span class=unknown>???</span> ("I can help":mailto:compositekeys@googlegroups.com?subject=Help+with+Frontbase)|<span class=unknown>???</span> ("Yes!":mailto:compositekeys@googlegroups.com?subject=Frontbase+is+working or "No...":mailto:compositekeys@googlegroups.com?subject=Frontbase+is+failing)|
111
134
 
135
+ h3. Thanks go to...
136
+
137
+ *Darrin Holst* - for Oracle unit tests and calculations support
138
+
112
139
  h2. Dr Nic's Blog
113
140
 
114
141
  "http://www.drnicwilliams.com":http://www.drnicwilliams.com - for future announcements and
@@ -1,3 +1,3 @@
1
1
  // Announcement JS file
2
- var version = "0.8.2";
2
+ var version = "0.8.3";
3
3
  MagicAnnouncement.show('compositekeys', version);
@@ -1,4 +1,4 @@
1
1
  // Version JS file
2
- var version = "0.8.2";
2
+ var version = "0.8.3";
3
3
 
4
4
  document.write(" - " + version);
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: composite_primary_keys
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.8.2
7
- date: 2007-04-11 00:00:00 +02:00
6
+ version: 0.8.3
7
+ date: 2007-05-03 00:00:00 +02:00
8
8
  summary: Composite key support for ActiveRecords
9
9
  require_paths:
10
10
  - lib
@@ -56,6 +56,8 @@ files:
56
56
  - test/fixtures/article.rb
57
57
  - test/fixtures/articles.yml
58
58
  - test/fixtures/db_definitions/mysql.sql
59
+ - test/fixtures/db_definitions/oracle.drop.sql
60
+ - test/fixtures/db_definitions/oracle.sql
59
61
  - test/fixtures/db_definitions/postgresql.sql
60
62
  - test/fixtures/db_definitions/sqlite.sql
61
63
  - test/fixtures/group.rb