og 0.29.0 → 0.30.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/ProjectInfo +17 -28
- data/README +6 -6
- data/doc/AUTHORS +6 -0
- data/doc/RELEASES +36 -0
- data/lib/glue/hierarchical.rb +3 -4
- data/lib/glue/optimistic_locking.rb +1 -1
- data/lib/glue/orderable.rb +3 -3
- data/lib/glue/taggable.rb +29 -26
- data/lib/glue/timestamped.rb +3 -4
- data/lib/og.rb +21 -9
- data/lib/og/entity.rb +44 -2
- data/lib/og/manager.rb +9 -6
- data/lib/og/markers.rb +9 -1
- data/lib/og/relation.rb +9 -5
- data/lib/og/relation/joins_many.rb +2 -2
- data/lib/og/store/alpha/memory.rb +8 -8
- data/lib/og/store/alpha/sqlserver.rb +3 -3
- data/lib/og/store/kirby.rb +422 -279
- data/lib/og/store/mysql.rb +33 -24
- data/lib/og/store/psql.rb +28 -18
- data/lib/og/store/sql.rb +99 -33
- data/lib/og/store/sqlite.rb +13 -7
- data/lib/og/store/sqlite2.rb +14 -4
- data/test/og/CONFIG.rb +2 -2
- data/test/og/store/tc_sti.rb +41 -0
- data/test/og/tc_aggregations_calculations.rb +8 -2
- data/test/og/tc_cacheable.rb +6 -2
- data/test/og/tc_camel_case_join.rb +51 -0
- data/test/og/tc_ez.rb +30 -1
- data/test/og/tc_join.rb +73 -6
- data/test/og/tc_multi_validations.rb +1 -1
- metadata +53 -53
- data/Rakefile +0 -220
data/Rakefile
DELETED
@@ -1,220 +0,0 @@
|
|
1
|
-
require 'rake/rdoctask'
|
2
|
-
require 'rake/testtask'
|
3
|
-
require 'rake/gempackagetask'
|
4
|
-
|
5
|
-
# Initialize some variables.
|
6
|
-
|
7
|
-
readme = File.read('README')
|
8
|
-
Release = (readme[/^= (.+) README$/, 1] || 'unknown').downcase.tr(" ", "-")
|
9
|
-
Name = Release[/\D+/].sub(/\-+$/, '') || 'unknown'
|
10
|
-
Version = Release[/[\d.]+/] || 'unknown'
|
11
|
-
|
12
|
-
AuthorName, AuthorMail = 'George Moschovitis', 'gm@navel.gr'
|
13
|
-
RubyVersion = '1.8.3'
|
14
|
-
|
15
|
-
# Description = (readme[/README\s+(.+?)\n\n/m, 1] || "unknown").gsub(/\s+/, " ")
|
16
|
-
# Summary = Description[/^.+?>/] || "unknown"
|
17
|
-
|
18
|
-
# DocFiles = %w(README NEWS TODO COPYING GPL)
|
19
|
-
# RDocFiles = DocFiles - %w(GPL)
|
20
|
-
RDocOpts = ["--inline-source", "--line-numbers","--title", Name ]
|
21
|
-
# AdditionalFiles = DocFiles + %w(setup.rb)
|
22
|
-
VersionFile = MainFile = File.join("lib", Name + '.rb')
|
23
|
-
|
24
|
-
RubyForgeProject = 'nitro'
|
25
|
-
RubyForgeUser = 'gmosx'
|
26
|
-
Homepage = "http://www.nitrohq.com/"
|
27
|
-
|
28
|
-
task :default => :package
|
29
|
-
|
30
|
-
# Run the tests.
|
31
|
-
|
32
|
-
Rake::TestTask.new do |t|
|
33
|
-
cwd = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
34
|
-
t.libs << 'test'
|
35
|
-
%w[glue nitro og].each do |dir|
|
36
|
-
t.libs << File.join(cwd, dir, 'lib')
|
37
|
-
end
|
38
|
-
t.test_files = FileList['test/**/tc*.rb']
|
39
|
-
t.verbose = true
|
40
|
-
end
|
41
|
-
|
42
|
-
# Generate RDoc documentation.
|
43
|
-
|
44
|
-
Rake::RDocTask.new do |rd|
|
45
|
-
rd.main = 'README'
|
46
|
-
rd.rdoc_dir = 'rdoc'
|
47
|
-
rd.rdoc_files.include('README', 'INSTALL', 'doc/tutorial.txt', 'lib/**/*.rb')
|
48
|
-
rd.options << '--all --inline-source'
|
49
|
-
end
|
50
|
-
|
51
|
-
# Build gem.
|
52
|
-
|
53
|
-
spec = Gem::Specification.new do |s|
|
54
|
-
s.name = 'og'
|
55
|
-
if File.read('lib/og.rb') =~ /Version\s+=\s+'(\d+\.\d+\.\d+)'/
|
56
|
-
s.version = $1
|
57
|
-
else
|
58
|
-
raise 'No version found'
|
59
|
-
end
|
60
|
-
s.summary = 'Og (ObjectGraph)'
|
61
|
-
s.description = 'An efficient and transparent Object-Relational mapping library'
|
62
|
-
|
63
|
-
s.add_dependency 'glue', "= #{s.version}"
|
64
|
-
#s.add_dependency 'postgres-pr', '>= 0.3.0'
|
65
|
-
#s.add_dependency 'postgres', '>= 0.7.1'
|
66
|
-
#s.add_dependency 'sqlite3-ruby', '>= 1.0.0'
|
67
|
-
#s.add_dependency 'mysql', '>= 2.5.1'
|
68
|
-
|
69
|
-
s.required_ruby_version = '= 1.8.3'
|
70
|
-
|
71
|
-
s.files = FileList[
|
72
|
-
'[A-Z]*', 'setup.rb', '{bin,benchmark,examples,doc,lib,test,vendor}/**/*'
|
73
|
-
].exclude("_darcs").exclude("_darcs/**/*").exclude('**/*.log').to_a
|
74
|
-
|
75
|
-
s.require_path = 'lib'
|
76
|
-
s.autorequire = 'og'
|
77
|
-
|
78
|
-
s.has_rdoc = true
|
79
|
-
s.extra_rdoc_files = FileList['README', 'INSTALL', 'doc/tutorial.txt'].to_a
|
80
|
-
s.rdoc_options << '--main' << 'README' << '--title' << 'Og Documentation'
|
81
|
-
s.rdoc_options << '--all' << '--inline-source'
|
82
|
-
|
83
|
-
s.author = 'George Moschovitis'
|
84
|
-
s.email = 'gm@navel.gr'
|
85
|
-
s.homepage = 'http://www.nitrohq.com'
|
86
|
-
s.rubyforge_project = 'nitro'
|
87
|
-
end
|
88
|
-
|
89
|
-
Rake::GemPackageTask.new(spec) do |pkg|
|
90
|
-
pkg.package_dir = 'dist'
|
91
|
-
pkg.need_zip = true
|
92
|
-
pkg.need_tar = true
|
93
|
-
end
|
94
|
-
|
95
|
-
# Manual install (not recommended).
|
96
|
-
|
97
|
-
task :install do
|
98
|
-
ruby 'install.rb'
|
99
|
-
end
|
100
|
-
|
101
|
-
# Release files to Rubyforge.
|
102
|
-
# The code for this task provided by Florian Gross.
|
103
|
-
|
104
|
-
desc "Publish the release files to RubyForge."
|
105
|
-
task :publish => [:package] do
|
106
|
-
files = ['gem', 'tgz', 'zip'].map { |ext| "dist/#{Release}.#{ext}" }
|
107
|
-
|
108
|
-
if RubyForgeProject then
|
109
|
-
require 'net/http'
|
110
|
-
require 'open-uri'
|
111
|
-
|
112
|
-
changes = ''
|
113
|
-
if File.exist?('doc/RELEASES') then
|
114
|
-
changes_re = /^== \s+ Version \s+ #{Regexp.quote(Version)} \s*
|
115
|
-
(.+?) (?:==|\Z)/mx
|
116
|
-
changes = File.read('doc/RELEASES')[changes_re, 1] || ''
|
117
|
-
end
|
118
|
-
|
119
|
-
project_uri = "http://rubyforge.org/projects/#{RubyForgeProject}/"
|
120
|
-
project_data = open(project_uri) { |data| data.read }
|
121
|
-
group_id = project_data[/[?&]group_id=(\d+)/, 1]
|
122
|
-
raise "Couldn't get group id" unless group_id
|
123
|
-
|
124
|
-
print "#{RubyForgeUser}@rubyforge.org's password: "
|
125
|
-
password = STDIN.gets.chomp
|
126
|
-
|
127
|
-
login_response = Net::HTTP.start('rubyforge.org', 80) do |http|
|
128
|
-
data = [
|
129
|
-
"login=1",
|
130
|
-
"form_loginname=#{RubyForgeUser}",
|
131
|
-
"form_pw=#{password}"
|
132
|
-
].join("&")
|
133
|
-
http.post('/account/login.php', data)
|
134
|
-
end
|
135
|
-
|
136
|
-
cookie = login_response['set-cookie']
|
137
|
-
raise 'Login failed' unless cookie
|
138
|
-
headers = { 'Cookie' => cookie }
|
139
|
-
|
140
|
-
release_uri = "http://rubyforge.org/frs/admin/?group_id=#{group_id}"
|
141
|
-
release_data = open(release_uri, headers) { |data| data.read }
|
142
|
-
package_id = release_data[/[?&]package_id=(\d+)/, 1]
|
143
|
-
raise "Couldn't get package id" unless package_id
|
144
|
-
|
145
|
-
first_file = true
|
146
|
-
release_id = ""
|
147
|
-
|
148
|
-
files.each do |filename|
|
149
|
-
basename = File.basename(filename)
|
150
|
-
file_ext = File.extname(filename)
|
151
|
-
file_data = File.open(filename, "rb") { |file| file.read }
|
152
|
-
|
153
|
-
puts "Releasing #{basename}..."
|
154
|
-
|
155
|
-
release_response = Net::HTTP.start('rubyforge.org', 80) do |http|
|
156
|
-
release_date = Time.now.strftime('%Y-%m-%d %H:%M')
|
157
|
-
type_map = {
|
158
|
-
'.zip' => '3000',
|
159
|
-
'.tgz' => '3110',
|
160
|
-
'.gz' => '3110',
|
161
|
-
'.gem' => '1400',
|
162
|
-
'.md5sum' => '8100'
|
163
|
-
}; type_map.default = '9999'
|
164
|
-
type = type_map[file_ext]
|
165
|
-
boundary = 'rubyqMY6QN9bp6e4kS21H4y0zxcvoor'
|
166
|
-
|
167
|
-
query_hash = if first_file then
|
168
|
-
{
|
169
|
-
'group_id' => group_id,
|
170
|
-
'package_id' => package_id,
|
171
|
-
'release_name' => Release,
|
172
|
-
'release_date' => release_date,
|
173
|
-
'type_id' => type,
|
174
|
-
'processor_id' => '8000', # Any
|
175
|
-
'release_notes' => '',
|
176
|
-
'release_changes' => changes,
|
177
|
-
'preformatted' => '1',
|
178
|
-
'submit' => '1'
|
179
|
-
}
|
180
|
-
else
|
181
|
-
{
|
182
|
-
'group_id' => group_id,
|
183
|
-
'release_id' => release_id,
|
184
|
-
'package_id' => package_id,
|
185
|
-
'step2' => '1',
|
186
|
-
'type_id' => type,
|
187
|
-
'processor_id' => '8000', # Any
|
188
|
-
'submit' => 'Add This File'
|
189
|
-
}
|
190
|
-
end
|
191
|
-
|
192
|
-
query = '?' + query_hash.map do |(name, value)|
|
193
|
-
[name, URI.encode(value)].join('=')
|
194
|
-
end.join('&')
|
195
|
-
|
196
|
-
data = [
|
197
|
-
"--" + boundary,
|
198
|
-
"Content-Disposition: form-data; name=\"userfile\"; filename=\"#{basename}\"",
|
199
|
-
"Content-Type: application/octet-stream",
|
200
|
-
"Content-Transfer-Encoding: binary",
|
201
|
-
"", file_data, ""
|
202
|
-
].join("\x0D\x0A")
|
203
|
-
|
204
|
-
release_headers = headers.merge(
|
205
|
-
'Content-Type' => "multipart/form-data; boundary=#{boundary}"
|
206
|
-
)
|
207
|
-
|
208
|
-
target = first_file ? '/frs/admin/qrs.php' : '/frs/admin/editrelease.php'
|
209
|
-
http.post(target + query, data, release_headers)
|
210
|
-
end
|
211
|
-
|
212
|
-
if first_file then
|
213
|
-
release_id = release_response.body[/release_id=(\d+)/, 1]
|
214
|
-
raise("Couldn't get release id") unless release_id
|
215
|
-
end
|
216
|
-
|
217
|
-
first_file = false
|
218
|
-
end
|
219
|
-
end
|
220
|
-
end
|