og 0.29.0 → 0.30.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|