nitro 0.15.0 → 0.16.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +218 -0
- data/INSTALL +3 -0
- data/README +4 -2
- data/Rakefile +150 -8
- data/benchmark/bench.rb +1 -1
- data/doc/AUTHORS +2 -8
- data/doc/RELEASES +63 -1
- data/examples/ajax/controller.rb +2 -2
- data/examples/ajax/public/index.xhtml +3 -1
- data/examples/ajax/run.rb +3 -3
- data/examples/blog/README +8 -0
- data/examples/blog/cache/entriesadmintrue +3 -0
- data/examples/blog/run.rb +38 -40
- data/examples/blog/src/blog.rb +2 -1
- data/examples/blog/src/controller.rb +40 -20
- data/examples/blog/src/mailer.rb +2 -2
- data/examples/blog/src/models/blog.rb +2 -1
- data/examples/blog/src/models/content.rb +4 -33
- data/examples/blog/src/views/error.xhtml +1 -1
- data/examples/blog/src/xsl/style.xsl +1 -1
- data/examples/blog/test/tc_blog.rb +43 -0
- data/examples/flash/run.rb +2 -2
- data/examples/no_xsl_blog/lib/blog.rb +1 -1
- data/examples/no_xsl_blog/lib/blog/controller.rb +26 -17
- data/examples/no_xsl_blog/lib/blog/model.rb +3 -3
- data/examples/no_xsl_blog/lib/blog/template.rb +1 -1
- data/examples/no_xsl_blog/lib/content.rb +3 -7
- data/examples/no_xsl_blog/run.rb +34 -34
- data/examples/tiny/public/deep/dir/hello.xhtml +2 -0
- data/examples/tiny/run.rb +2 -2
- data/examples/wee_style/run.rb +5 -3
- data/examples/why_wiki/run.rb +5 -3
- data/install.rb +1 -1
- data/lib/nitro.rb +10 -9
- data/lib/nitro/adapters/cgi.rb +27 -2
- data/lib/nitro/adapters/fastcgi.rb +6 -2
- data/lib/nitro/adapters/webrick.rb +11 -9
- data/lib/nitro/buffering.rb +2 -2
- data/lib/nitro/builders/atom.rb +78 -0
- data/lib/nitro/builders/form.rb +2 -2
- data/lib/nitro/builders/rss.rb +4 -4
- data/lib/nitro/builders/table.rb +2 -2
- data/lib/nitro/builders/xhtml.rb +5 -8
- data/lib/nitro/builders/xml.rb +38 -14
- data/lib/nitro/caching.rb +2 -2
- data/lib/nitro/caching/actions.rb +2 -2
- data/lib/nitro/caching/fragments.rb +2 -2
- data/lib/nitro/caching/invalidation.rb +2 -28
- data/lib/nitro/caching/output.rb +3 -3
- data/lib/nitro/caching/stores.rb +4 -4
- data/lib/nitro/conf.rb +11 -6
- data/lib/nitro/context.rb +2 -2
- data/lib/nitro/controller.rb +12 -7
- data/lib/nitro/cookie.rb +2 -2
- data/lib/nitro/dispatcher.rb +33 -40
- data/lib/nitro/environment.rb +1 -1
- data/lib/nitro/localization.rb +5 -7
- data/lib/nitro/mail.rb +2 -2
- data/lib/nitro/markup.rb +5 -5
- data/lib/nitro/output.rb +2 -2
- data/lib/nitro/part.rb +8 -5
- data/lib/nitro/render.rb +46 -45
- data/lib/nitro/request.rb +7 -6
- data/lib/nitro/response.rb +14 -5
- data/lib/nitro/routing.rb +2 -2
- data/lib/nitro/runner.rb +57 -17
- data/lib/nitro/scaffold.rb +14 -8
- data/lib/nitro/session.rb +7 -4
- data/lib/nitro/session/drb.rb +2 -2
- data/lib/nitro/session/drbserver.rb +2 -2
- data/lib/nitro/session/memory.rb +2 -2
- data/lib/nitro/shaders.rb +8 -7
- data/lib/nitro/simple.rb +4 -1
- data/lib/nitro/template.rb +8 -8
- data/lib/nitro/testing.rb +6 -0
- data/lib/nitro/testing/assertions.rb +102 -0
- data/lib/nitro/testing/context.rb +52 -0
- data/lib/nitro/testing/testcase.rb +55 -0
- data/lib/nitro/ui/pager.rb +3 -3
- data/lib/nitro/ui/popup.rb +8 -13
- data/lib/nitro/ui/tabs.rb +4 -10
- data/lib/nitro/uri.rb +7 -7
- data/proto/doc/README +1 -0
- data/proto/public/cgi.rb +5 -0
- data/proto/run.rb +2 -4
- data/test/nitro/adapters/tc_cgi.rb +1 -1
- data/test/nitro/adapters/tc_webrick.rb +1 -2
- data/test/nitro/builders/tc_atom.rb +26 -0
- data/test/nitro/builders/tc_rss.rb +3 -2
- data/test/nitro/builders/tc_table.rb +1 -1
- data/test/nitro/builders/tc_xhtml.rb +4 -3
- data/test/nitro/builders/tc_xml.rb +7 -7
- data/test/nitro/tc_context.rb +1 -1
- data/test/nitro/tc_controller.rb +5 -3
- data/test/nitro/tc_dispatcher.rb +19 -18
- data/test/nitro/tc_localization.rb +1 -1
- data/test/nitro/tc_mail.rb +1 -1
- data/test/nitro/tc_session.rb +1 -1
- data/test/nitro/tc_template.rb +1 -1
- data/test/nitro/tc_uri.rb +3 -4
- data/test/nitro/ui/tc_pager.rb +7 -7
- data/test/public/blog/inc1.xhtml +2 -0
- data/test/public/blog/inc2.xhtml +1 -0
- data/test/public/blog/list.xhtml +3 -0
- metadata +180 -203
- data/examples/blog/cache/entriesadmin +0 -12
- data/lib/nitro/cluster.rb +0 -218
- data/lib/nitro/component.rb +0 -15
- data/lib/nitro/filters.rb +0 -215
- data/lib/nitro/ui/date-select.rb +0 -69
- data/test/nitro/tc_filters.rb +0 -111
data/CHANGELOG
CHANGED
@@ -1,3 +1,221 @@
|
|
1
|
+
18-04-2005 George Moschovitis <gm@navel.gr>
|
2
|
+
|
3
|
+
* small fixes to make tests pass again.
|
4
|
+
|
5
|
+
17-04-2005 George Moschovitis <gm@navel.gr>
|
6
|
+
|
7
|
+
* examples/blog/: updated.
|
8
|
+
|
9
|
+
* lib/nitro/render.rb: check again for action_template method.
|
10
|
+
|
11
|
+
* test/nitro/builders/tc_atom.rb: introduced.
|
12
|
+
|
13
|
+
* lib/nitro/builders/atom.rb: introduced.
|
14
|
+
(#build_atom): first implementation.
|
15
|
+
|
16
|
+
* lib/nitro/builders/xml.rb: added print alias,
|
17
|
+
use '!' postfix in default methods to avoid method namespace polution.
|
18
|
+
(#processing_instruction): added.
|
19
|
+
|
20
|
+
16-04-2005 George Moschovitis <gm@navel.gr>
|
21
|
+
|
22
|
+
* now developing on UBUNTU Linux.
|
23
|
+
|
24
|
+
15-04-2005 George Moschovitis <gm@navel.gr>
|
25
|
+
|
26
|
+
* examples/no_xsl_blog/*: converted to make compaitble
|
27
|
+
with latest code.
|
28
|
+
|
29
|
+
* ../cleanup.rb: implemented.
|
30
|
+
|
31
|
+
* lib/nitro/controller.rb: improved DEF_FILE calculation to handle
|
32
|
+
more cases.
|
33
|
+
|
34
|
+
* examples/blog/*: yeah, with the latest aspects fixes
|
35
|
+
the example works again,
|
36
|
+
converted XmlController to latest code.
|
37
|
+
invalidate cache on deletes.
|
38
|
+
|
39
|
+
* test/*: fixes to make the tests pass.
|
40
|
+
|
41
|
+
14-04-2005 George Moschovitis <gm@navel.gr>
|
42
|
+
|
43
|
+
* examples/*: dont use controller.
|
44
|
+
|
45
|
+
* lib/nitro/controller.rb: removed [jamesb].
|
46
|
+
|
47
|
+
* examples/blog/src/models/content.rb: removed obsolete code.
|
48
|
+
|
49
|
+
13-04-2005 George Moschovitis <gm@navel.gr>
|
50
|
+
|
51
|
+
* examples/blog/*: converted to use aspects.
|
52
|
+
|
53
|
+
* lib/nitro/render.rb (#compile_action): replaced filter chains
|
54
|
+
with advice generation.
|
55
|
+
|
56
|
+
* lib/nitro/controller.rb: use aspects instead of filters,
|
57
|
+
dont include Filtering.
|
58
|
+
|
59
|
+
12-04-2005 Kostas Nasis <kostas@nasis.com>
|
60
|
+
|
61
|
+
* misc aesthetic fixes.
|
62
|
+
|
63
|
+
* lib/nitro/markup.rb: small fixes.
|
64
|
+
|
65
|
+
12-04-2005 George Moschovitis <gm@navel.gr>
|
66
|
+
|
67
|
+
* examples/*: small fixes in docs.
|
68
|
+
|
69
|
+
* push_docs.rb: introduced.
|
70
|
+
|
71
|
+
* Rakefile: changed rdoc dir,
|
72
|
+
added Florian Gross's gems updater [flgr],
|
73
|
+
many fixes to make the updater work.
|
74
|
+
|
75
|
+
* releases.rb: utility to help with new releases,
|
76
|
+
cool, it uploads documentation.
|
77
|
+
|
78
|
+
* INSTALL: small update [ilias].
|
79
|
+
|
80
|
+
11-04-2005 George Moschovitis <gm@navel.gr>
|
81
|
+
|
82
|
+
* created new public SVN repository, to allow for easier
|
83
|
+
patching by the community.
|
84
|
+
|
85
|
+
* examples/no_xsl_blog/*: small ns fixes. [james_b]
|
86
|
+
|
87
|
+
10-04-2005 George Moschovitis <gm@navel.gr>
|
88
|
+
|
89
|
+
* lib/nitro/render.rb: new encoding for action/template methods.
|
90
|
+
|
91
|
+
* lib/nitro/shaders.rb (XSLTShader#process): add a critical Logger.debug to
|
92
|
+
give better info on the developer on template errors.
|
93
|
+
|
94
|
+
* lib/adapters/webrick.rb: no stupid logging by default on Unix.
|
95
|
+
|
96
|
+
* lib/nitro/dispatcher.rb (#controller_class_for): changed reloading algo,
|
97
|
+
improved reloading to reload superclasses,
|
98
|
+
improved reloading to remove actions,
|
99
|
+
even more fixes to the reloader.
|
100
|
+
|
101
|
+
* lib/nitro/conf.rb (#mount): added support for mounting other sites.
|
102
|
+
$nitro_environment: holds the configuration.
|
103
|
+
|
104
|
+
09-04-2005 George Moschovitis <gm@navel.gr>
|
105
|
+
|
106
|
+
* test/og/tc_sqlserver.rb: check if sqlserver exists.
|
107
|
+
* test/*: small fixes to pass again.
|
108
|
+
|
109
|
+
* examples/ajax/*: small improvement.
|
110
|
+
|
111
|
+
* lib/nitro/runner.rb (Nitro##run): added this elegant helper.
|
112
|
+
|
113
|
+
* proto/public/scaffold: added.
|
114
|
+
|
115
|
+
* examples/blog/*: works without API,
|
116
|
+
content_type works again,
|
117
|
+
use the new runner.
|
118
|
+
|
119
|
+
* lib/nitro/dispatcher.rb: removed the concept of API from the dispatcher,
|
120
|
+
will be implemented with controller reuse.
|
121
|
+
|
122
|
+
* examples/blog/src/controller.rb (XmlController): introduced.
|
123
|
+
|
124
|
+
* lib/nitro/render.rb (#compile_action): better error reporting,
|
125
|
+
removed concept of API.
|
126
|
+
|
127
|
+
* lib/nitro/response.rb (#add_cookie): made more flexible.
|
128
|
+
|
129
|
+
* lib/nitro/testing/assertions.rb (#assert_has_cookie): implemented,
|
130
|
+
(#assert_has_no_cookie): implemented,
|
131
|
+
(#assert_cookie_equal): implemented.
|
132
|
+
|
133
|
+
* lib/nitro/testing/context.rb (Response): added more helpers.
|
134
|
+
|
135
|
+
08-04-2005 George Moschovitis <gm@navel.gr>
|
136
|
+
|
137
|
+
* hack-fixed dynamic require bug that used to fuckup RDoc.
|
138
|
+
|
139
|
+
* Rakefile: fixed VERSION bug,
|
140
|
+
removed flexob, extensions, ruby-breakpointer dependencies [james_b],
|
141
|
+
bumped required Ruby version.
|
142
|
+
|
143
|
+
* lib/nitro/testing/testcase.rb: include Nitro by default.
|
144
|
+
|
145
|
+
* test/*: many fixes to work again.
|
146
|
+
|
147
|
+
* MAJOR: changed the namespace from N to Nitro.
|
148
|
+
|
149
|
+
* examples/no_xsl_blog/*: some small improvements, synced with blog
|
150
|
+
example.
|
151
|
+
|
152
|
+
* lib/nitro/ui/*: updated some code (will be removed soon).
|
153
|
+
|
154
|
+
* lib/nitro/ui/date-select.rb: removed.
|
155
|
+
|
156
|
+
* lib/nitro.rb: include Glue in the Nitro namespace.
|
157
|
+
|
158
|
+
* lib/nitro/cluster.rb: removed.
|
159
|
+
|
160
|
+
07-04-2005 George Moschovitis <gm@navel.gr>
|
161
|
+
|
162
|
+
* lib/nitro/testing/assertions.rb:
|
163
|
+
(#assert_redirect): implemented.
|
164
|
+
(#assert_no_redirect): implemented.
|
165
|
+
(#assert_session_has): implemented.
|
166
|
+
(#assert_session_has_no): implemented.
|
167
|
+
use implicit context
|
168
|
+
(#assert_output_match): implemented.
|
169
|
+
(#assert_output_no_match): implemented.
|
170
|
+
(#assert_status_ok): implemented.
|
171
|
+
use format_msg: to make more flexible.
|
172
|
+
(#assert_session_equal): implemented.
|
173
|
+
|
174
|
+
* examples/blog/test/tc_blog.rb: introduced.
|
175
|
+
|
176
|
+
* lib/nitro/testing/context.rb: introduced.
|
177
|
+
(Request): added testing helpers.
|
178
|
+
(Response): added testing helpers.
|
179
|
+
(Context): override session.
|
180
|
+
|
181
|
+
* lib/nitro/render.rb: body alias for out.
|
182
|
+
|
183
|
+
* lib/nitro/adapters/cgi.rb: no socket lookup.
|
184
|
+
|
185
|
+
* lib/nitro/adapters/fcgi.rb: no socket lookup.
|
186
|
+
|
187
|
+
07-04-2005 James Britt <james_b@neurogami.com>
|
188
|
+
|
189
|
+
* investigated nasty cgi/testunit/flexmock bug.
|
190
|
+
|
191
|
+
06-04-2005 George Moschovitis <gm@navel.gr>
|
192
|
+
|
193
|
+
* lib/nitro/testing.rb: introduced.
|
194
|
+
|
195
|
+
* lib/nitro/testing/testcase.rb: introduced.
|
196
|
+
|
197
|
+
* lib/nitro/testing/assertions.rb: introduced.
|
198
|
+
|
199
|
+
05-04-2005 George Moschovitis <gm@navel.gr>
|
200
|
+
|
201
|
+
* lib/nitro/render.rb (#compile_action): keep old action in @parent_action_name.
|
202
|
+
|
203
|
+
* lib/nitro/shaders.rb: handle ' delimeters. [james_b]
|
204
|
+
|
205
|
+
* lib/nitro/template.rb: handle ' delimeters. [james_b]
|
206
|
+
|
207
|
+
* test/nitro/tc_controller.rb: added extra tests.
|
208
|
+
|
209
|
+
* integrated james' CGI patch.
|
210
|
+
|
211
|
+
05-04-2005 James Britt <james_b@neurogami.com>
|
212
|
+
|
213
|
+
* proto/public/cgi.rb: cgi runner.
|
214
|
+
|
215
|
+
* lib/nitro/adapters/cgi.rb: added support for standalone cgi.
|
216
|
+
|
217
|
+
* lib/nitro/runner.rb: added support for cgi.
|
218
|
+
|
1
219
|
04-04-2005 George Moschovitis <gm@navel.gr>
|
2
220
|
|
3
221
|
* bin/nitro: fix
|
data/INSTALL
CHANGED
data/README
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
= Nitro 0.
|
1
|
+
= Nitro 0.16.0 README
|
2
2
|
|
3
3
|
Nitro is an efficient, yet simple engine for developing professional Web
|
4
4
|
Applications using the Ruby language. Nitro aims to provide a robust
|
@@ -309,6 +309,9 @@ installed RubyGems on your system. Then run the following command:
|
|
309
309
|
|
310
310
|
gem install nitro
|
311
311
|
|
312
|
+
(make sure you have the latest stable versions of Ruby and RubyGems
|
313
|
+
installed)
|
314
|
+
|
312
315
|
Then try to run the examples/tiny Example application.
|
313
316
|
|
314
317
|
A tar.gz distribution is also available on http://www.rubyforge.com/projects/nitro
|
@@ -448,4 +451,3 @@ Nitro (http://www.rubyforge.com/projects/nitro) is copyrighted free
|
|
448
451
|
software created and maintained by George Moschovitis (mailto:gm@navel.gr)
|
449
452
|
and released under the standard BSD Licence. For details consult
|
450
453
|
the file LICENCE.
|
451
|
-
|
data/Rakefile
CHANGED
@@ -6,6 +6,29 @@ require 'rake/rdoctask'
|
|
6
6
|
require 'rake/testtask'
|
7
7
|
require 'rake/gempackagetask'
|
8
8
|
|
9
|
+
# Initialize some variables.
|
10
|
+
|
11
|
+
readme = File.read('README')
|
12
|
+
Release = (readme[/^= (.+) README$/, 1] || 'unknown').downcase.tr(" ", "-")
|
13
|
+
Name = Release[/\D+/].sub(/\-+$/, '') || 'unknown'
|
14
|
+
Version = Release[/[\d.]+/] || 'unknown'
|
15
|
+
|
16
|
+
AuthorName, AuthorMail = 'George Moschovitis', 'gm@navel.gr'
|
17
|
+
RubyVersion = '1.8.2'
|
18
|
+
|
19
|
+
# Description = (readme[/README\s+(.+?)\n\n/m, 1] || "unknown").gsub(/\s+/, " ")
|
20
|
+
# Summary = Description[/^.+?>/] || "unknown"
|
21
|
+
|
22
|
+
# DocFiles = %w(README NEWS TODO COPYING GPL)
|
23
|
+
# RDocFiles = DocFiles - %w(GPL)
|
24
|
+
RDocOpts = ["--inline-source", "--line-numbers","--title", Name ]
|
25
|
+
# AdditionalFiles = DocFiles + %w(setup.rb)
|
26
|
+
VersionFile = MainFile = File.join("lib", Name + '.rb')
|
27
|
+
|
28
|
+
RubyForgeProject = Name
|
29
|
+
RubyForgeUser = 'gmosx'
|
30
|
+
Homepage = "http://#{RubyForgeProject}.rubyforge.org/"
|
31
|
+
|
9
32
|
task :default => :package
|
10
33
|
|
11
34
|
# Run the tests.
|
@@ -28,7 +51,7 @@ end
|
|
28
51
|
|
29
52
|
Rake::RDocTask.new do |rd|
|
30
53
|
rd.main = 'README'
|
31
|
-
rd.rdoc_dir = '
|
54
|
+
rd.rdoc_dir = 'rdoc'
|
32
55
|
rd.rdoc_files.include('README', 'INSTALL', 'doc/config.txt', 'doc/tutorial.txt', 'lib/**/*.rb')
|
33
56
|
rd.options << '--all --inline-source'
|
34
57
|
end
|
@@ -38,7 +61,7 @@ end
|
|
38
61
|
spec = Gem::Specification.new do |s|
|
39
62
|
s.name = 'nitro'
|
40
63
|
if File.read('lib/nitro.rb') =~ /Version\s+=\s+'(\d+\.\d+\.\d+)'/
|
41
|
-
|
64
|
+
s.version = $1
|
42
65
|
else
|
43
66
|
raise 'No version found'
|
44
67
|
end
|
@@ -47,13 +70,11 @@ spec = Gem::Specification.new do |s|
|
|
47
70
|
'Nitro provides everything you need to develop real-world, scalable ' +
|
48
71
|
'web applications.'
|
49
72
|
|
50
|
-
s.add_dependency 'glue', "= #{
|
51
|
-
s.add_dependency 'og', "= #{
|
52
|
-
s.add_dependency 'ruby-breakpoint', '>= 0.5'
|
53
|
-
s.add_dependency 'extensions', '>= 0.5'
|
54
|
-
s.add_dependency 'flexmock', '>= 0.0.3'
|
73
|
+
s.add_dependency 'glue', "= #{s.version}"
|
74
|
+
s.add_dependency 'og', "= #{s.version}"
|
75
|
+
# s.add_dependency 'ruby-breakpoint', '>= 0.5'
|
55
76
|
|
56
|
-
s.required_ruby_version = '>= 1.8.
|
77
|
+
s.required_ruby_version = '>= 1.8.2'
|
57
78
|
|
58
79
|
s.files = FileList[
|
59
80
|
'[A-Z]*', 'install.rb', '{bin,benchmark,examples,doc,proto,lib,test,vendor}/**/*'
|
@@ -90,3 +111,124 @@ end
|
|
90
111
|
task :install do
|
91
112
|
ruby 'install.rb'
|
92
113
|
end
|
114
|
+
|
115
|
+
# Release files to Rubyforge.
|
116
|
+
# The code for this task provided by Florian Gross.
|
117
|
+
|
118
|
+
desc "Publish the release files to RubyForge."
|
119
|
+
task :publish => [:package] do
|
120
|
+
files = ['gem', 'tgz', 'zip'].map { |ext| "dist/#{Release}.#{ext}" }
|
121
|
+
|
122
|
+
if RubyForgeProject then
|
123
|
+
require 'net/http'
|
124
|
+
require 'open-uri'
|
125
|
+
|
126
|
+
changes = ''
|
127
|
+
if File.exist?('doc/RELEASES') then
|
128
|
+
changes_re = /^== \s+ Version \s+ #{Regexp.quote(Version)} \s*
|
129
|
+
(.+?) (?:==|\Z)/mx
|
130
|
+
changes = File.read('doc/RELEASES')[changes_re, 1] || ''
|
131
|
+
end
|
132
|
+
|
133
|
+
project_uri = "http://rubyforge.org/projects/#{RubyForgeProject}/"
|
134
|
+
project_data = open(project_uri) { |data| data.read }
|
135
|
+
group_id = project_data[/[?&]group_id=(\d+)/, 1]
|
136
|
+
raise "Couldn't get group id" unless group_id
|
137
|
+
|
138
|
+
print "#{RubyForgeUser}@rubyforge.org's password: "
|
139
|
+
password = STDIN.gets.chomp
|
140
|
+
|
141
|
+
login_response = Net::HTTP.start('rubyforge.org', 80) do |http|
|
142
|
+
data = [
|
143
|
+
"login=1",
|
144
|
+
"form_loginname=#{RubyForgeUser}",
|
145
|
+
"form_pw=#{password}"
|
146
|
+
].join("&")
|
147
|
+
http.post('/account/login.php', data)
|
148
|
+
end
|
149
|
+
|
150
|
+
cookie = login_response['set-cookie']
|
151
|
+
raise 'Login failed' unless cookie
|
152
|
+
headers = { 'Cookie' => cookie }
|
153
|
+
|
154
|
+
release_uri = "http://rubyforge.org/frs/admin/?group_id=#{group_id}"
|
155
|
+
release_data = open(release_uri, headers) { |data| data.read }
|
156
|
+
package_id = release_data[/[?&]package_id=(\d+)/, 1]
|
157
|
+
raise "Couldn't get package id" unless package_id
|
158
|
+
|
159
|
+
first_file = true
|
160
|
+
release_id = ""
|
161
|
+
|
162
|
+
files.each do |filename|
|
163
|
+
basename = File.basename(filename)
|
164
|
+
file_ext = File.extname(filename)
|
165
|
+
file_data = File.open(filename, "rb") { |file| file.read }
|
166
|
+
|
167
|
+
puts "Releasing #{basename}..."
|
168
|
+
|
169
|
+
release_response = Net::HTTP.start('rubyforge.org', 80) do |http|
|
170
|
+
release_date = Time.now.strftime('%Y-%m-%d %H:%M')
|
171
|
+
type_map = {
|
172
|
+
'.zip' => '3000',
|
173
|
+
'.tgz' => '3110',
|
174
|
+
'.gz' => '3110',
|
175
|
+
'.gem' => '1400',
|
176
|
+
'.md5sum' => '8100'
|
177
|
+
}; type_map.default = '9999'
|
178
|
+
type = type_map[file_ext]
|
179
|
+
boundary = 'rubyqMY6QN9bp6e4kS21H4y0zxcvoor'
|
180
|
+
|
181
|
+
query_hash = if first_file then
|
182
|
+
{
|
183
|
+
'group_id' => group_id,
|
184
|
+
'package_id' => package_id,
|
185
|
+
'release_name' => Release,
|
186
|
+
'release_date' => release_date,
|
187
|
+
'type_id' => type,
|
188
|
+
'processor_id' => '8000', # Any
|
189
|
+
'release_notes' => '',
|
190
|
+
'release_changes' => changes,
|
191
|
+
'preformatted' => '1',
|
192
|
+
'submit' => '1'
|
193
|
+
}
|
194
|
+
else
|
195
|
+
{
|
196
|
+
'group_id' => group_id,
|
197
|
+
'release_id' => release_id,
|
198
|
+
'package_id' => package_id,
|
199
|
+
'step2' => '1',
|
200
|
+
'type_id' => type,
|
201
|
+
'processor_id' => '8000', # Any
|
202
|
+
'submit' => 'Add This File'
|
203
|
+
}
|
204
|
+
end
|
205
|
+
|
206
|
+
query = '?' + query_hash.map do |(name, value)|
|
207
|
+
[name, URI.encode(value)].join('=')
|
208
|
+
end.join('&')
|
209
|
+
|
210
|
+
data = [
|
211
|
+
"--" + boundary,
|
212
|
+
"Content-Disposition: form-data; name=\"userfile\"; filename=\"#{basename}\"",
|
213
|
+
"Content-Type: application/octet-stream",
|
214
|
+
"Content-Transfer-Encoding: binary",
|
215
|
+
"", file_data, ""
|
216
|
+
].join("\x0D\x0A")
|
217
|
+
|
218
|
+
release_headers = headers.merge(
|
219
|
+
'Content-Type' => "multipart/form-data; boundary=#{boundary}"
|
220
|
+
)
|
221
|
+
|
222
|
+
target = first_file ? '/frs/admin/qrs.php' : '/frs/admin/editrelease.php'
|
223
|
+
http.post(target + query, data, release_headers)
|
224
|
+
end
|
225
|
+
|
226
|
+
if first_file then
|
227
|
+
release_id = release_response.body[/release_id=(\d+)/, 1]
|
228
|
+
raise("Couldn't get release id") unless release_id
|
229
|
+
end
|
230
|
+
|
231
|
+
first_file = false
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
data/benchmark/bench.rb
CHANGED
data/doc/AUTHORS
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
MAIN DEVELOPER:
|
2
2
|
|
3
3
|
* George Moschovitis <gm@navel.gr>
|
4
|
-
Project leader, architecture and design,
|
4
|
+
Project leader, architecture and design, main coder,
|
5
5
|
documentation, maintainer.
|
6
6
|
|
7
7
|
IDEAS, ADDITIONAL CODING, SUPPORT:
|
@@ -9,14 +9,8 @@ IDEAS, ADDITIONAL CODING, SUPPORT:
|
|
9
9
|
* Anastasios Koutoumanos <ak@navel.gr>
|
10
10
|
Design, additional coding.
|
11
11
|
|
12
|
-
* Matt Bowen <matt.bowen@farweststeel.com>
|
13
|
-
Additional code and documentation.
|
14
|
-
|
15
12
|
* James Britt <james_b@neurogami.com>
|
16
|
-
|
17
|
-
|
18
|
-
* Thomas Quas <tquas@yahoo.com>
|
19
|
-
Ideas, bug reports, unit tests.
|
13
|
+
Additional code, design, bug reports.
|
20
14
|
|
21
15
|
* Kostas Nasis <kostas@nasis.com>
|
22
16
|
Ideas and bug reports.
|