Hongli Lai (Phusion) (author)
Sat Apr 18 11:07:29 -0700 2009
passenger / DEVELOPERS.TXT
100644 92 lines (67 sloc) 2.483 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
= Developers information
 
== Required software
 
The tests need the following software installed:
 
* All the usual Phusion Passenger dependencies.
* Ruby on Rails 2.0.1 (*exactly* 2.0.1)
* rspec >= 1.1.2
* mime-types >= 1.15
* daemon_controller (only for running the Nginx integration test). Install
  with: gem install FooBarWidget-daemon_controller -s http://gems.github.com
 
The following software is optional:
 
* RCov, for code coverage
* RDoc, for generating HTML Ruby API documentation
* Doxygen, for generating HTML C++ API documentation
* dot (part of Graphviz), for generating diagrams in HTML API documentation
* The font "Bitstream Vera Sans", used in the class diagrams. See http://www.gnome.org/fonts
* AsciiDoc >= 8.2.5, for converting various doc/*.txt documents to HTML
 
== Compiling Phusion Passenger
 
Run the following command to compile everything:
 
 rake
 
== Directory structure
 
The most important directories are:
[ lib/phusion_passenger ]
  The source code for the spawn server, which is written in Ruby.
[ ext/phusion_passenger ]
  Native extensions for Ruby, used by the spawn server.
[ ext/apache2 ]
  The Phusion Passenger Apache 2 module (mod_passenger).
[ bin ]
  Executables.
[ doc ]
  Various documentation.
[ test ]
  Unit tests and integration tests.
[ test/support ]
  Support/utility code, used in the tests.
[ test/stub ]
  Stub code, used in the tests.
 
Less important directories:
[ lib/rake ]
  Rake tasks.
[ ext/boost ]
  A stripped-down and customized version of the Boost C++ library
  (www.boost.org).
[ ext/oxt ]
  The "OS eXtensions for boosT" library, which provides various important
  functionality necessary for writing robust server software. It provides
  things like support for interruptable system calls and portable backtraces
  for C++. Boost was modified to make use of the functionality provided by OXT.
[ benchmark ]
  Benchmark tools.
[ misc ]
  Miscellaneous tools.
 
== Tests
 
Run all tests:
 
 rake
 
Run just the tests for the Apache 2 module:
 
 rake test:apache2
 
Run just the unit tests for the Ruby spawn server:
 
 rake test:ruby
 
Run just the integration tests:
 
 rake test:integration
 
*Note*: some tests, such as the ones that test privilege lowering, require
root privileges. Those will only be run if Rake is run as root.
 
== Documentation
 
Various developer documents can be found in 'doc/*.html'.
 
The Ruby part's API reference is located in 'doc/rdoc/'.
The C++ part's API reference is located in 'doc/cxxapi/'.