nitro 0.15.0 → 0.16.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/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.
|