passenger 2.2.8 → 2.2.9

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (64) hide show
  1. data/NEWS +56 -0
  2. data/bin/passenger-install-nginx-module +2 -2
  3. data/doc/Users guide Apache.html +43 -4
  4. data/doc/Users guide Nginx.html +43 -4
  5. data/doc/cxxapi/Bucket_8h-source.html +1 -1
  6. data/doc/cxxapi/Configuration_8h-source.html +1 -1
  7. data/doc/cxxapi/DirectoryMapper_8h-source.html +1 -1
  8. data/doc/cxxapi/Hooks_8h-source.html +1 -1
  9. data/doc/cxxapi/annotated.html +1 -1
  10. data/doc/cxxapi/classHooks-members.html +1 -1
  11. data/doc/cxxapi/classHooks.html +1 -1
  12. data/doc/cxxapi/classPassenger_1_1DirectoryMapper-members.html +1 -1
  13. data/doc/cxxapi/classPassenger_1_1DirectoryMapper.html +1 -1
  14. data/doc/cxxapi/classes.html +1 -1
  15. data/doc/cxxapi/definitions_8h-source.html +1 -1
  16. data/doc/cxxapi/files.html +1 -1
  17. data/doc/cxxapi/functions.html +1 -1
  18. data/doc/cxxapi/functions_func.html +1 -1
  19. data/doc/cxxapi/graph_legend.html +1 -1
  20. data/doc/cxxapi/group__Configuration.html +1 -1
  21. data/doc/cxxapi/group__Core.html +1 -1
  22. data/doc/cxxapi/group__Hooks.html +1 -1
  23. data/doc/cxxapi/group__Support.html +1 -1
  24. data/doc/cxxapi/main.html +1 -1
  25. data/doc/cxxapi/modules.html +1 -1
  26. data/doc/rdoc/classes/PhusionPassenger.html +1 -1
  27. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput.html +247 -0
  28. data/doc/rdoc/classes/PhusionPassenger/Utils/RewindableInput/Tempfile.html +120 -0
  29. data/doc/rdoc/created.rid +1 -1
  30. data/doc/rdoc/files/DEVELOPERS_TXT.html +1 -1
  31. data/doc/rdoc/files/README.html +1 -1
  32. data/doc/rdoc/files/ext/phusion_passenger/native_support_c.html +1 -1
  33. data/doc/rdoc/files/lib/phusion_passenger/abstract_installer_rb.html +1 -1
  34. data/doc/rdoc/files/lib/phusion_passenger/abstract_request_handler_rb.html +1 -1
  35. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_collection_rb.html +1 -1
  36. data/doc/rdoc/files/lib/phusion_passenger/abstract_server_rb.html +1 -1
  37. data/doc/rdoc/files/lib/phusion_passenger/admin_tools/control_process_rb.html +1 -1
  38. data/doc/rdoc/files/lib/phusion_passenger/admin_tools_rb.html +1 -1
  39. data/doc/rdoc/files/lib/phusion_passenger/application_rb.html +1 -1
  40. data/doc/rdoc/files/lib/phusion_passenger/console_text_template_rb.html +1 -1
  41. data/doc/rdoc/files/lib/phusion_passenger/constants_rb.html +1 -1
  42. data/doc/rdoc/files/lib/phusion_passenger/dependencies_rb.html +1 -1
  43. data/doc/rdoc/files/lib/phusion_passenger/events_rb.html +1 -1
  44. data/doc/rdoc/files/lib/phusion_passenger/exceptions_rb.html +1 -1
  45. data/doc/rdoc/files/lib/phusion_passenger/html_template_rb.html +1 -1
  46. data/doc/rdoc/files/lib/phusion_passenger/message_channel_rb.html +1 -1
  47. data/doc/rdoc/files/lib/phusion_passenger/packaging_rb.html +1 -1
  48. data/doc/rdoc/files/lib/phusion_passenger/platform_info_rb.html +1 -1
  49. data/doc/rdoc/files/lib/phusion_passenger/rack/application_spawner_rb.html +1 -1
  50. data/doc/rdoc/files/lib/phusion_passenger/rack/request_handler_rb.html +1 -1
  51. data/doc/rdoc/files/lib/phusion_passenger/railz/application_spawner_rb.html +1 -1
  52. data/doc/rdoc/files/lib/phusion_passenger/railz/cgi_fixed_rb.html +1 -1
  53. data/doc/rdoc/files/lib/phusion_passenger/railz/framework_spawner_rb.html +1 -1
  54. data/doc/rdoc/files/lib/phusion_passenger/railz/request_handler_rb.html +1 -1
  55. data/doc/rdoc/files/lib/phusion_passenger/simple_benchmarking_rb.html +1 -1
  56. data/doc/rdoc/files/lib/phusion_passenger/spawn_manager_rb.html +1 -1
  57. data/doc/rdoc/files/lib/phusion_passenger/utils/rewindable_input_rb.html +100 -0
  58. data/doc/rdoc/files/lib/phusion_passenger/utils_rb.html +1 -1
  59. data/doc/rdoc/files/lib/phusion_passenger/wsgi/application_spawner_rb.html +1 -1
  60. data/doc/rdoc/files/misc/rake/extensions_rb.html +1 -1
  61. data/ext/common/Version.h +1 -1
  62. data/lib/phusion_passenger/constants.rb +1 -1
  63. data/lib/phusion_passenger/railz/application_spawner.rb +19 -4
  64. metadata +5 -2
data/NEWS CHANGED
@@ -1,3 +1,59 @@
1
+ Release 2.2.9
2
+ -------------
3
+
4
+ * Fixed compatibility with Rails 3.
5
+ Actually, previous Phusion Passenger releases were already compatible
6
+ with Rails 3, depending on the spawn method that would be invoked. Here's
7
+ the story:
8
+
9
+ Since Phusion Passenger 2.2.8, when the file config.ru exists, Phusion
10
+ Passenger will treat the app as a Rack app, not as a Rails app. This is
11
+ in contrast to earlier versions which gave Rails detection more priority
12
+ than Rack detection. Phusion Passenger loads Rack apps and Rails apps in
13
+ different ways. The Rails loader was not compatible with Rails 3, which
14
+ is what we've fixed in this release.
15
+
16
+ That said, a Rails 3 app would have worked out-of-the-box on Phusion
17
+ Passenger 2.2.8 as well because Rails 3 apps include a config.ru file
18
+ by default, causing Phusion Passenger 2.2.8 to use the Rack loader.
19
+ Earlier versions of Phusion Passenger would just completely bail out
20
+ because they'd use the Rails loader.
21
+
22
+ That said, with 2.2.9 there are still some caveats:
23
+ - Smart spawning (the mechanism with which REE's 33% memory reduction
24
+ is implemented) is *not* supported for Rack apps. This means that if
25
+ you want to utilize smart spawning with Rails 3, then you should
26
+ remove your config.ru file.
27
+ - Rails 3 depends on Rack 1.1.0. You must have Rack 1.1.0 installed as
28
+ a gem, even if you've bundled it with the gem bundler. This is because
29
+ Phusion Passenger itself depends on Rack.
30
+
31
+ Both of these caveats are temporary. We have plans to solve both of these
32
+ properly in the future.
33
+ * What's up with the Gem Bundler?
34
+ There has been some reports that Phusion Passenger is not compatible with
35
+ Yehuda Katz's gem bundler (http://github.com/wycats/bundler). This might
36
+ have been true for an earlier version of the gem bundler, but the latest
37
+ version seems to work fine. Please note that you need to insert the
38
+ following snippet in config/preinitializer.rb, as instructed by the gem
39
+ bundler's README:
40
+
41
+ require "#{RAILS_ROOT}/vendor/gems/environment"
42
+
43
+ The Rails::Boot monkey patching code as posted at
44
+ http://yehudakatz.com/2009/11/03/using-the-new-gem-bundler-today/
45
+ does not seem to be required anymore.
46
+ * Fixed support for ActiveRecord subclasses that connect to another database.
47
+ ActiveRecord subclasses that connect to a database other than the default
48
+ one did not have their connection correctly cleared after forking.
49
+ This can result in weird errors along the lines of "Lost connection to
50
+ MySQL server during query". Issue #429.
51
+ * [Nginx] Fixed PCRE URL.
52
+ passenger-install-nginx-module downloads PCRE 7.8 if PCRE is not already
53
+ installed. However PCRE 7.8 has been removed from their FTP server,
54
+ so we've updated the URL to point to the latest version, 8.0.
55
+
56
+
1
57
  Release 2.2.8
2
58
  -------------
3
59
 
@@ -149,8 +149,8 @@ private
149
149
  new_screen
150
150
  color_puts "<banner>PCRE (required by Nginx) not installed, downloading it...</banner>"
151
151
 
152
- basename = "pcre-7.8.tar.gz"
153
- dirname = "pcre-7.8"
152
+ basename = "pcre-8.00.tar.gz"
153
+ dirname = "pcre-8.00"
154
154
  url = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/#{basename}"
155
155
  File.unlink("/tmp/#{basename}") rescue nil
156
156
  FileUtils.rm_rf("/tmp/#{dirname}")
@@ -3425,7 +3425,20 @@ Passenger is creating a new worker process. Phusion Passenger provides the API
3425
3425
  call <tt>PhusionPassenger.on_event(:starting_worker_process)</tt> to do so. So you
3426
3426
  could insert the following code in your <em>environment.rb</em>:</p></div>
3427
3427
  <div class="listingblock">
3428
- <div class="content"></div></div>
3428
+ <div class="content"><!-- Generator: GNU source-highlight 2.11.1
3429
+ by Lorenzo Bettini
3430
+ http://www.lorenzobettini.it
3431
+ http://www.gnu.org/software/src-highlite -->
3432
+ <pre><tt><span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="font-weight: bold"><span style="color: #0000FF">defined</span></span><span style="color: #990000">?(</span>PhusionPassenger<span style="color: #990000">)</span>
3433
+ PhusionPassenger<span style="color: #990000">.</span>on_event<span style="color: #990000">(:</span>starting_worker_process<span style="color: #990000">)</span> <span style="font-weight: bold"><span style="color: #0000FF">do</span></span> <span style="color: #990000">|</span>forked<span style="color: #990000">|</span>
3434
+ <span style="font-weight: bold"><span style="color: #0000FF">if</span></span> forked
3435
+ <span style="font-style: italic"><span style="color: #9A1900"># We're in smart spawning mode.</span></span>
3436
+ <span style="color: #990000">...</span> code to reestablish socket connections here <span style="color: #990000">...</span>
3437
+ <span style="font-weight: bold"><span style="color: #0000FF">else</span></span>
3438
+ <span style="font-style: italic"><span style="color: #9A1900"># We're in conservative spawning mode. We don't need to do anything.</span></span>
3439
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
3440
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
3441
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span></tt></pre></div></div>
3429
3442
  <div class="paragraph"><p>Note that Phusion Passenger automatically reestablishes the connection to the
3430
3443
  database upon creating a new worker process, which is why you normally do not
3431
3444
  encounter any database issues when using smart spawning mode.</p></div>
@@ -3505,7 +3518,20 @@ Memcached is forced to handle this as an error.</p></div>
3505
3518
  <div class="paragraph"><p>Worker process 2 now has its own, separate communication channel with Memcached.
3506
3519
  The code in <em>environment.rb</em> looks like this:</p></div>
3507
3520
  <div class="listingblock">
3508
- <div class="content"></div></div>
3521
+ <div class="content"><!-- Generator: GNU source-highlight 2.11.1
3522
+ by Lorenzo Bettini
3523
+ http://www.lorenzobettini.it
3524
+ http://www.gnu.org/software/src-highlite -->
3525
+ <pre><tt><span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="font-weight: bold"><span style="color: #0000FF">defined</span></span><span style="color: #990000">?(</span>PhusionPassenger<span style="color: #990000">)</span>
3526
+ PhusionPassenger<span style="color: #990000">.</span>on_event<span style="color: #990000">(:</span>starting_worker_process<span style="color: #990000">)</span> <span style="font-weight: bold"><span style="color: #0000FF">do</span></span> <span style="color: #990000">|</span>forked<span style="color: #990000">|</span>
3527
+ <span style="font-weight: bold"><span style="color: #0000FF">if</span></span> forked
3528
+ <span style="font-style: italic"><span style="color: #9A1900"># We're in smart spawning mode.</span></span>
3529
+ reestablish_connection_to_memcached
3530
+ <span style="font-weight: bold"><span style="color: #0000FF">else</span></span>
3531
+ <span style="font-style: italic"><span style="color: #9A1900"># We're in conservative spawning mode. We don't need to do anything.</span></span>
3532
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
3533
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
3534
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span></tt></pre></div></div>
3509
3535
  <h4 id="_example_2_log_file_sharing_not_harmful">12.3.2. Example 2: Log file sharing (not harmful)</h4>
3510
3536
  <div class="paragraph"><p>There are also cases in which unintential file descriptor sharing is not harmful.
3511
3537
  One such case is log file file descriptor sharing. Even if two processes write
@@ -3522,7 +3548,20 @@ then those threads will no longer be running in newly created worker process.
3522
3548
  You need to revive them when a new worker process is created. Use the
3523
3549
  <tt>:starting_worker_process</tt> event that Phusion Passenger provides, like this:</p></div>
3524
3550
  <div class="listingblock">
3525
- <div class="content"></div></div>
3551
+ <div class="content"><!-- Generator: GNU source-highlight 2.11.1
3552
+ by Lorenzo Bettini
3553
+ http://www.lorenzobettini.it
3554
+ http://www.gnu.org/software/src-highlite -->
3555
+ <pre><tt><span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="font-weight: bold"><span style="color: #0000FF">defined</span></span><span style="color: #990000">?(</span>PhusionPassenger<span style="color: #990000">)</span>
3556
+ PhusionPassenger<span style="color: #990000">.</span>on_event<span style="color: #990000">(:</span>starting_worker_process<span style="color: #990000">)</span> <span style="font-weight: bold"><span style="color: #0000FF">do</span></span> <span style="color: #990000">|</span>forked<span style="color: #990000">|</span>
3557
+ <span style="font-weight: bold"><span style="color: #0000FF">if</span></span> forked
3558
+ <span style="font-style: italic"><span style="color: #9A1900"># We're in smart spawning mode.</span></span>
3559
+ <span style="color: #990000">...</span> code to revive threads here <span style="color: #990000">...</span>
3560
+ <span style="font-weight: bold"><span style="color: #0000FF">else</span></span>
3561
+ <span style="font-style: italic"><span style="color: #9A1900"># We're in conservative spawning mode. We don't need to do anything.</span></span>
3562
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
3563
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
3564
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span></tt></pre></div></div>
3526
3565
  <h3 id="_smart_spawning_gotcha_3_code_load_order">12.5. Smart spawning gotcha #3: code load order</h3>
3527
3566
  <div class="paragraph"><p>This gotcha is only applicable to the <em>smart</em> spawn method, not the <em>smart-lv2</em>
3528
3567
  spawn method.</p></div>
@@ -3542,7 +3581,7 @@ has no effect.</p></div>
3542
3581
  </div>
3543
3582
  <div id="footer">
3544
3583
  <div id="footer-text">
3545
- Last updated 2009-12-15 11:58:38 PDT
3584
+ Last updated 2010-01-08 11:24:06 CEST
3546
3585
  </div>
3547
3586
  </div>
3548
3587
  </body>
@@ -2103,7 +2103,20 @@ Passenger is creating a new worker process. Phusion Passenger provides the API
2103
2103
  call <tt>PhusionPassenger.on_event(:starting_worker_process)</tt> to do so. So you
2104
2104
  could insert the following code in your <em>environment.rb</em>:</p></div>
2105
2105
  <div class="listingblock">
2106
- <div class="content"></div></div>
2106
+ <div class="content"><!-- Generator: GNU source-highlight 2.11.1
2107
+ by Lorenzo Bettini
2108
+ http://www.lorenzobettini.it
2109
+ http://www.gnu.org/software/src-highlite -->
2110
+ <pre><tt><span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="font-weight: bold"><span style="color: #0000FF">defined</span></span><span style="color: #990000">?(</span>PhusionPassenger<span style="color: #990000">)</span>
2111
+ PhusionPassenger<span style="color: #990000">.</span>on_event<span style="color: #990000">(:</span>starting_worker_process<span style="color: #990000">)</span> <span style="font-weight: bold"><span style="color: #0000FF">do</span></span> <span style="color: #990000">|</span>forked<span style="color: #990000">|</span>
2112
+ <span style="font-weight: bold"><span style="color: #0000FF">if</span></span> forked
2113
+ <span style="font-style: italic"><span style="color: #9A1900"># We're in smart spawning mode.</span></span>
2114
+ <span style="color: #990000">...</span> code to reestablish socket connections here <span style="color: #990000">...</span>
2115
+ <span style="font-weight: bold"><span style="color: #0000FF">else</span></span>
2116
+ <span style="font-style: italic"><span style="color: #9A1900"># We're in conservative spawning mode. We don't need to do anything.</span></span>
2117
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
2118
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
2119
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span></tt></pre></div></div>
2107
2120
  <div class="paragraph"><p>Note that Phusion Passenger automatically reestablishes the connection to the
2108
2121
  database upon creating a new worker process, which is why you normally do not
2109
2122
  encounter any database issues when using smart spawning mode.</p></div>
@@ -2183,7 +2196,20 @@ Memcached is forced to handle this as an error.</p></div>
2183
2196
  <div class="paragraph"><p>Worker process 2 now has its own, separate communication channel with Memcached.
2184
2197
  The code in <em>environment.rb</em> looks like this:</p></div>
2185
2198
  <div class="listingblock">
2186
- <div class="content"></div></div>
2199
+ <div class="content"><!-- Generator: GNU source-highlight 2.11.1
2200
+ by Lorenzo Bettini
2201
+ http://www.lorenzobettini.it
2202
+ http://www.gnu.org/software/src-highlite -->
2203
+ <pre><tt><span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="font-weight: bold"><span style="color: #0000FF">defined</span></span><span style="color: #990000">?(</span>PhusionPassenger<span style="color: #990000">)</span>
2204
+ PhusionPassenger<span style="color: #990000">.</span>on_event<span style="color: #990000">(:</span>starting_worker_process<span style="color: #990000">)</span> <span style="font-weight: bold"><span style="color: #0000FF">do</span></span> <span style="color: #990000">|</span>forked<span style="color: #990000">|</span>
2205
+ <span style="font-weight: bold"><span style="color: #0000FF">if</span></span> forked
2206
+ <span style="font-style: italic"><span style="color: #9A1900"># We're in smart spawning mode.</span></span>
2207
+ reestablish_connection_to_memcached
2208
+ <span style="font-weight: bold"><span style="color: #0000FF">else</span></span>
2209
+ <span style="font-style: italic"><span style="color: #9A1900"># We're in conservative spawning mode. We don't need to do anything.</span></span>
2210
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
2211
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
2212
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span></tt></pre></div></div>
2187
2213
  <h4 id="_example_2_log_file_sharing_not_harmful">10.3.2. Example 2: Log file sharing (not harmful)</h4>
2188
2214
  <div class="paragraph"><p>There are also cases in which unintential file descriptor sharing is not harmful.
2189
2215
  One such case is log file file descriptor sharing. Even if two processes write
@@ -2200,7 +2226,20 @@ then those threads will no longer be running in newly created worker process.
2200
2226
  You need to revive them when a new worker process is created. Use the
2201
2227
  <tt>:starting_worker_process</tt> event that Phusion Passenger provides, like this:</p></div>
2202
2228
  <div class="listingblock">
2203
- <div class="content"></div></div>
2229
+ <div class="content"><!-- Generator: GNU source-highlight 2.11.1
2230
+ by Lorenzo Bettini
2231
+ http://www.lorenzobettini.it
2232
+ http://www.gnu.org/software/src-highlite -->
2233
+ <pre><tt><span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="font-weight: bold"><span style="color: #0000FF">defined</span></span><span style="color: #990000">?(</span>PhusionPassenger<span style="color: #990000">)</span>
2234
+ PhusionPassenger<span style="color: #990000">.</span>on_event<span style="color: #990000">(:</span>starting_worker_process<span style="color: #990000">)</span> <span style="font-weight: bold"><span style="color: #0000FF">do</span></span> <span style="color: #990000">|</span>forked<span style="color: #990000">|</span>
2235
+ <span style="font-weight: bold"><span style="color: #0000FF">if</span></span> forked
2236
+ <span style="font-style: italic"><span style="color: #9A1900"># We're in smart spawning mode.</span></span>
2237
+ <span style="color: #990000">...</span> code to revive threads here <span style="color: #990000">...</span>
2238
+ <span style="font-weight: bold"><span style="color: #0000FF">else</span></span>
2239
+ <span style="font-style: italic"><span style="color: #9A1900"># We're in conservative spawning mode. We don't need to do anything.</span></span>
2240
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
2241
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span>
2242
+ <span style="font-weight: bold"><span style="color: #0000FF">end</span></span></tt></pre></div></div>
2204
2243
  <h3 id="_smart_spawning_gotcha_3_code_load_order">10.5. Smart spawning gotcha #3: code load order</h3>
2205
2244
  <div class="paragraph"><p>This gotcha is only applicable to the <em>smart</em> spawn method, not the <em>smart-lv2</em>
2206
2245
  spawn method.</p></div>
@@ -2220,7 +2259,7 @@ has no effect.</p></div>
2220
2259
  </div>
2221
2260
  <div id="footer">
2222
2261
  <div id="footer-text">
2223
- Last updated 2009-12-15 11:58:38 PDT
2262
+ Last updated 2010-01-08 11:24:06 CEST
2224
2263
  </div>
2225
2264
  </div>
2226
2265
  </body>
@@ -107,7 +107,7 @@
107
107
  <a name="l00086"></a>00086
108
108
  <a name="l00087"></a>00087 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_BUCKET_H_ */</span>
109
109
  </pre></div></div>
110
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
110
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:56 2010 for Passenger by&nbsp;
111
111
  <a href="http://www.doxygen.org/index.html">
112
112
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
113
113
  </body>
@@ -425,7 +425,7 @@
425
425
  <a name="l00404"></a>00404
426
426
  <a name="l00405"></a>00405 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_CONFIGURATION_H_ */</span>
427
427
  </pre></div></div>
428
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
428
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:56 2010 for Passenger by&nbsp;
429
429
  <a href="http://www.doxygen.org/index.html">
430
430
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
431
431
  </body>
@@ -316,7 +316,7 @@
316
316
  <a name="l00295"></a>00295 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_DIRECTORY_MAPPER_H_ */</span>
317
317
  <a name="l00296"></a>00296
318
318
  </pre></div></div>
319
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
319
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:56 2010 for Passenger by&nbsp;
320
320
  <a href="http://www.doxygen.org/index.html">
321
321
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
322
322
  </body>
@@ -65,7 +65,7 @@
65
65
  <a name="l00044"></a>00044 <span class="preprocessor"></span>
66
66
  <a name="l00045"></a>00045 <span class="preprocessor">#endif </span><span class="comment">/* _PASSENGER_HOOKS_H_ */</span>
67
67
  </pre></div></div>
68
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
68
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:56 2010 for Passenger by&nbsp;
69
69
  <a href="http://www.doxygen.org/index.html">
70
70
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
71
71
  </body>
@@ -27,7 +27,7 @@
27
27
  <tr><td class="indexkey"><a class="el" href="classHooks.html">Hooks</a></td><td class="indexvalue">Apache hook functions, wrapped in a class </td></tr>
28
28
  </table>
29
29
  </div>
30
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
30
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
31
31
  <a href="http://www.doxygen.org/index.html">
32
32
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
33
33
  </body>
@@ -28,7 +28,7 @@
28
28
  <tr class="memlist"><td><a class="el" href="classHooks.html#d6cca64be8a9075b4b92efdb4d9020a5">startBlockingModAutoIndex</a>(request_rec *r)</td><td><a class="el" href="classHooks.html">Hooks</a></td><td><code> [inline]</code></td></tr>
29
29
  <tr class="memlist"><td><a class="el" href="classHooks.html#e3091c57c95b2f8269f566099802f0ec">startBlockingModDir</a>(request_rec *r)</td><td><a class="el" href="classHooks.html">Hooks</a></td><td><code> [inline]</code></td></tr>
30
30
  </table></div>
31
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
31
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
32
32
  <a href="http://www.doxygen.org/index.html">
33
33
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
34
34
  </body>
@@ -148,7 +148,7 @@ So in <a class="el" href="classHooks.html#e3091c57c95b2f8269f566099802f0ec" titl
148
148
  <hr>The documentation for this class was generated from the following file:<ul>
149
149
  <li>Hooks.cpp</ul>
150
150
  </div>
151
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
151
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
152
152
  <a href="http://www.doxygen.org/index.html">
153
153
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
154
154
  </body>
@@ -30,7 +30,7 @@
30
30
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1DirectoryMapper.html#f5091e3cef3878e160e5d3b2181d82fb">getEnvironment</a>()</td><td><a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a></td><td><code> [inline]</code></td></tr>
31
31
  <tr class="memlist"><td><a class="el" href="classPassenger_1_1DirectoryMapper.html#ef969f27622fb215990a870076648aa1">getPublicDirectory</a>()</td><td><a class="el" href="classPassenger_1_1DirectoryMapper.html">Passenger::DirectoryMapper</a></td><td><code> [inline]</code></td></tr>
32
32
  </table></div>
33
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
33
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
34
34
  <a href="http://www.doxygen.org/index.html">
35
35
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
36
36
  </body>
@@ -251,7 +251,7 @@ Returns an empty string if the document root of the HTTP request cannot be deter
251
251
  <hr>The documentation for this class was generated from the following file:<ul>
252
252
  <li><a class="el" href="DirectoryMapper_8h-source.html">DirectoryMapper.h</a></ul>
253
253
  </div>
254
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
254
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
255
255
  <a href="http://www.doxygen.org/index.html">
256
256
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
257
257
  </body>
@@ -28,7 +28,7 @@
28
28
  </td><td><a class="el" href="classPassenger_1_1DirectoryMapper.html">DirectoryMapper</a> (Passenger)&nbsp;&nbsp;&nbsp;</td><td><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&nbsp;&nbsp;H&nbsp;&nbsp;</div></td></tr></table>
29
29
  </td><td><a class="el" href="classHooks.html">Hooks</a>&nbsp;&nbsp;&nbsp;</td></tr></table><p><div class="qindex"><a class="qindex" href="#letter_D">D</a>&nbsp;|&nbsp;<a class="qindex" href="#letter_H">H</a></div><p>
30
30
  </div>
31
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
31
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
32
32
  <a href="http://www.doxygen.org/index.html">
33
33
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
34
34
  </body>
@@ -25,7 +25,7 @@
25
25
  <a name="l00004"></a>00004 <span class="comment">@defgroup Support Apache-independent support classes and function</span>
26
26
  <a name="l00005"></a>00005 <span class="comment">*/</span>
27
27
  </pre></div></div>
28
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:56 2010 for Passenger by&nbsp;
29
29
  <a href="http://www.doxygen.org/index.html">
30
30
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
31
31
  </body>
@@ -29,7 +29,7 @@
29
29
  <tr><td class="indexkey"><b>Hooks.h</b> <a href="Hooks_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
30
30
  </table>
31
31
  </div>
32
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
32
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
33
33
  <a href="http://www.doxygen.org/index.html">
34
34
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
35
35
  </body>
@@ -53,7 +53,7 @@ Here is a list of all documented class members with links to the class documenta
53
53
  : <a class="el" href="classHooks.html#e3091c57c95b2f8269f566099802f0ec">Hooks</a>
54
54
  </ul>
55
55
  </div>
56
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
56
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
57
57
  <a href="http://www.doxygen.org/index.html">
58
58
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
59
59
  </body>
@@ -53,7 +53,7 @@
53
53
  : <a class="el" href="classHooks.html#e3091c57c95b2f8269f566099802f0ec">Hooks</a>
54
54
  </ul>
55
55
  </div>
56
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
56
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
57
57
  <a href="http://www.doxygen.org/index.html">
58
58
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
59
59
  </body>
@@ -79,7 +79,7 @@ A purple dashed arrow is used if a class is contained or used by another class.
79
79
  A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
80
80
  </ul>
81
81
  </div>
82
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
82
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
83
83
  <a href="http://www.doxygen.org/index.html">
84
84
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
85
85
  </body>
@@ -204,7 +204,7 @@ Apache module commands array.
204
204
  </div>
205
205
  </div><p>
206
206
  </div>
207
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
207
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
208
208
  <a href="http://www.doxygen.org/index.html">
209
209
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
210
210
  </body>
@@ -41,7 +41,7 @@ Collaboration diagram for Core Apache-related classes and functions:</div>
41
41
 
42
42
  </table>
43
43
  </div>
44
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
44
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
45
45
  <a href="http://www.doxygen.org/index.html">
46
46
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
47
47
  </body>
@@ -32,7 +32,7 @@ Collaboration diagram for Apache hooks:</div>
32
32
  <tr><td></td></tr>
33
33
  </table>
34
34
  </div>
35
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
35
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
36
36
  <a href="http://www.doxygen.org/index.html">
37
37
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
38
38
  </body>
@@ -20,7 +20,7 @@
20
20
  <tr><td></td></tr>
21
21
  </table>
22
22
  </div>
23
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
23
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
24
24
  <a href="http://www.doxygen.org/index.html">
25
25
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
26
26
  </body>
data/doc/cxxapi/main.html CHANGED
@@ -19,7 +19,7 @@
19
19
  <h1>Passenger Documentation</h1>
20
20
  <p>
21
21
  </div>
22
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
22
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:56 2010 for Passenger by&nbsp;
23
23
  <a href="http://www.doxygen.org/index.html">
24
24
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
25
25
  </body>
@@ -25,7 +25,7 @@
25
25
  <li><a class="el" href="group__Support.html">Apache-independent support classes and function</a>
26
26
  </ul>
27
27
  </div>
28
- <hr size="1"><address style="text-align: right;"><small>Generated on Tue Dec 15 17:41:30 2009 for Passenger by&nbsp;
28
+ <hr size="1"><address style="text-align: right;"><small>Generated on Fri Jan 8 11:42:57 2010 for Passenger by&nbsp;
29
29
  <a href="http://www.doxygen.org/index.html">
30
30
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
31
31
  </body>
@@ -135,7 +135,7 @@ Class <a href="PhusionPassenger/VersionNotFound.html" class="link">PhusionPassen
135
135
  <tr valign='top'>
136
136
  <td class="attr-name">VERSION_STRING</td>
137
137
  <td>=</td>
138
- <td class="attr-value">'2.2.8'</td>
138
+ <td class="attr-value">'2.2.9'</td>
139
139
  </tr>
140
140
  <tr valign='top'>
141
141
  <td>&nbsp;</td>
@@ -0,0 +1,247 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html>
6
+ <head>
7
+ <title>Class: PhusionPassenger::Utils::RewindableInput</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
10
+
11
+ <script language="JavaScript" type="text/javascript">
12
+ // <![CDATA[
13
+
14
+ function toggleSource( id )
15
+ {
16
+ var elem
17
+ var link
18
+
19
+ if( document.getElementById )
20
+ {
21
+ elem = document.getElementById( id )
22
+ link = document.getElementById( "l_" + id )
23
+ }
24
+ else if ( document.all )
25
+ {
26
+ elem = eval( "document.all." + id )
27
+ link = eval( "document.all.l_" + id )
28
+ }
29
+ else
30
+ return false;
31
+
32
+ if( elem.style.display == "block" )
33
+ {
34
+ elem.style.display = "none"
35
+ link.innerHTML = "show source"
36
+ }
37
+ else
38
+ {
39
+ elem.style.display = "block"
40
+ link.innerHTML = "hide source"
41
+ }
42
+ }
43
+
44
+ function openCode( url )
45
+ {
46
+ window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
47
+ }
48
+ // ]]>
49
+ </script>
50
+ </head>
51
+
52
+ <body>
53
+ <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
54
+ <td class="file-title"><span class="file-title-prefix">Class</span><br />PhusionPassenger::Utils::RewindableInput</td>
55
+ <td align="right">
56
+ <table cellspacing="0" cellpadding="2">
57
+ <tr valign="top">
58
+ <td>In:</td>
59
+ <td>
60
+ <a href="../../../files/lib/phusion_passenger/utils/rewindable_input_rb.html">lib/phusion_passenger/utils/rewindable_input.rb</a>
61
+ </td>
62
+ </tr>
63
+ <tr>
64
+ <td>Parent:</td>
65
+ <td>
66
+ Object
67
+ </td>
68
+ </tr>
69
+ </table>
70
+ </td>
71
+ </tr>
72
+ </table>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+ <div id="content">
77
+
78
+ <div class="description"><p>
79
+ Class which can make any <a href="../../IO.html">IO</a> object rewindable,
80
+ including non-rewindable ones. It does this by buffering the data into a
81
+ tempfile, which is rewindable.
82
+ </p>
83
+ <p>
84
+ rack.input is required to be rewindable, so if your input stream <a
85
+ href="../../IO.html">IO</a> is non-rewindable by nature (e.g. a pipe or a
86
+ socket) then you can wrap it in an object of this class to easily make it
87
+ rewindable.
88
+ </p>
89
+ <p>
90
+ Don&#8216;t forget to call <a
91
+ href="RewindableInput.html#M000100">#close</a> when you&#8216;re done. This
92
+ frees up temporary resources that <a
93
+ href="RewindableInput.html">RewindableInput</a> uses, though it does
94
+ <b>not</b> <a href="RewindableInput.html#M000100">close</a> the original <a
95
+ href="../../IO.html">IO</a> object.
96
+ </p>
97
+ </div>
98
+
99
+
100
+
101
+ <div class="sectiontitle">Methods</div>
102
+ <ul>
103
+ <li><a href="#M000100">close</a></li>
104
+ <li><a href="#M000098">each</a></li>
105
+ <li><a href="#M000096">gets</a></li>
106
+ <li><a href="#M000095">new</a></li>
107
+ <li><a href="#M000097">read</a></li>
108
+ <li><a href="#M000099">rewind</a></li>
109
+ </ul>
110
+
111
+
112
+
113
+ <div class="sectiontitle">Classes and Modules</div>
114
+ Class <a href="RewindableInput/Tempfile.html" class="link">PhusionPassenger::Utils::RewindableInput::Tempfile</a><br />
115
+
116
+
117
+
118
+
119
+ <div class="sectiontitle">Public Class methods</div>
120
+ <div class="method">
121
+ <div class="title">
122
+ <a name="M000095"></a><b>new</b>(io)
123
+ </div>
124
+ <div class="sourcecode">
125
+ <p class="source-link">[ <a href="javascript:toggleSource('M000095_source')" id="l_M000095_source">show source</a> ]</p>
126
+ <div id="M000095_source" class="dyn-source">
127
+ <pre>
128
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils/rewindable_input.rb, line 18</span>
129
+ 18: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">io</span>)
130
+ 19: <span class="ruby-ivar">@io</span> = <span class="ruby-identifier">io</span>
131
+ 20: <span class="ruby-ivar">@rewindable_io</span> = <span class="ruby-keyword kw">nil</span>
132
+ 21: <span class="ruby-ivar">@unlinked</span> = <span class="ruby-keyword kw">false</span>
133
+ 22: <span class="ruby-keyword kw">end</span>
134
+ </pre>
135
+ </div>
136
+ </div>
137
+ </div>
138
+ <div class="sectiontitle">Public Instance methods</div>
139
+ <div class="method">
140
+ <div class="title">
141
+ <a name="M000100"></a><b>close</b>()
142
+ </div>
143
+ <div class="description">
144
+ <p>
145
+ Closes this <a href="RewindableInput.html">RewindableInput</a> object
146
+ without closing the originally wrapped <a href="../../IO.html">IO</a>
147
+ oject. Cleans up any temporary resources that this <a
148
+ href="RewindableInput.html">RewindableInput</a> has created.
149
+ </p>
150
+ <p>
151
+ This method may be called multiple times. It does nothing on subsequent
152
+ calls.
153
+ </p>
154
+ </div>
155
+ <div class="sourcecode">
156
+ <p class="source-link">[ <a href="javascript:toggleSource('M000100_source')" id="l_M000100_source">show source</a> ]</p>
157
+ <div id="M000100_source" class="dyn-source">
158
+ <pre>
159
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils/rewindable_input.rb, line 49</span>
160
+ 49: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>
161
+ 50: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@rewindable_io</span>
162
+ 51: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@unlinked</span>
163
+ 52: <span class="ruby-ivar">@rewindable_io</span>.<span class="ruby-identifier">close</span>
164
+ 53: <span class="ruby-keyword kw">else</span>
165
+ 54: <span class="ruby-ivar">@rewindable_io</span>.<span class="ruby-identifier">close!</span>
166
+ 55: <span class="ruby-keyword kw">end</span>
167
+ 56: <span class="ruby-ivar">@rewindable_io</span> = <span class="ruby-keyword kw">nil</span>
168
+ 57: <span class="ruby-keyword kw">end</span>
169
+ 58: <span class="ruby-keyword kw">end</span>
170
+ </pre>
171
+ </div>
172
+ </div>
173
+ </div>
174
+ <div class="method">
175
+ <div class="title">
176
+ <a name="M000098"></a><b>each</b>(&amp;block)
177
+ </div>
178
+ <div class="sourcecode">
179
+ <p class="source-link">[ <a href="javascript:toggleSource('M000098_source')" id="l_M000098_source">show source</a> ]</p>
180
+ <div id="M000098_source" class="dyn-source">
181
+ <pre>
182
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils/rewindable_input.rb, line 34</span>
183
+ 34: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
184
+ 35: <span class="ruby-identifier">make_rewindable</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@rewindable_io</span>
185
+ 36: <span class="ruby-ivar">@rewindable_io</span>.<span class="ruby-identifier">each</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
186
+ 37: <span class="ruby-keyword kw">end</span>
187
+ </pre>
188
+ </div>
189
+ </div>
190
+ </div>
191
+ <div class="method">
192
+ <div class="title">
193
+ <a name="M000096"></a><b>gets</b>()
194
+ </div>
195
+ <div class="sourcecode">
196
+ <p class="source-link">[ <a href="javascript:toggleSource('M000096_source')" id="l_M000096_source">show source</a> ]</p>
197
+ <div id="M000096_source" class="dyn-source">
198
+ <pre>
199
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils/rewindable_input.rb, line 24</span>
200
+ 24: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">gets</span>
201
+ 25: <span class="ruby-identifier">make_rewindable</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@rewindable_io</span>
202
+ 26: <span class="ruby-ivar">@rewindable_io</span>.<span class="ruby-identifier">gets</span>
203
+ 27: <span class="ruby-keyword kw">end</span>
204
+ </pre>
205
+ </div>
206
+ </div>
207
+ </div>
208
+ <div class="method">
209
+ <div class="title">
210
+ <a name="M000097"></a><b>read</b>(*args)
211
+ </div>
212
+ <div class="sourcecode">
213
+ <p class="source-link">[ <a href="javascript:toggleSource('M000097_source')" id="l_M000097_source">show source</a> ]</p>
214
+ <div id="M000097_source" class="dyn-source">
215
+ <pre>
216
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils/rewindable_input.rb, line 29</span>
217
+ 29: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
218
+ 30: <span class="ruby-identifier">make_rewindable</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@rewindable_io</span>
219
+ 31: <span class="ruby-ivar">@rewindable_io</span>.<span class="ruby-identifier">read</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
220
+ 32: <span class="ruby-keyword kw">end</span>
221
+ </pre>
222
+ </div>
223
+ </div>
224
+ </div>
225
+ <div class="method">
226
+ <div class="title">
227
+ <a name="M000099"></a><b>rewind</b>()
228
+ </div>
229
+ <div class="sourcecode">
230
+ <p class="source-link">[ <a href="javascript:toggleSource('M000099_source')" id="l_M000099_source">show source</a> ]</p>
231
+ <div id="M000099_source" class="dyn-source">
232
+ <pre>
233
+ <span class="ruby-comment cmt"># File lib/phusion_passenger/utils/rewindable_input.rb, line 39</span>
234
+ 39: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">rewind</span>
235
+ 40: <span class="ruby-identifier">make_rewindable</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@rewindable_io</span>
236
+ 41: <span class="ruby-ivar">@rewindable_io</span>.<span class="ruby-identifier">rewind</span>
237
+ 42: <span class="ruby-keyword kw">end</span>
238
+ </pre>
239
+ </div>
240
+ </div>
241
+ </div>
242
+ </div>
243
+
244
+ </div>
245
+
246
+ </body>
247
+ </html>