forked from phusion/passenger
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DEVELOPERS.TXT
114 lines (90 loc) · 3.24 KB
/
DEVELOPERS.TXT
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
= Developers information
== Required software
The tests need the following software installed:
* All the usual Phusion Passenger dependencies.
* Ruby on Rails 1.2.x
* Ruby on Rails 2.0.x
* Ruby on Rails 2.2.x
* Ruby on Rails 2.3.x
* Ruby on Rails 3.0.x
* rspec >= 1.1.2
* mime-types >= 1.15
* sqlite3-ruby
* daemon_controller >= 1.0.0
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 apache
rake nginx
== 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 ]
Apache 2-specific source code.
[ ext/nginx ]
Nginx-specific source code.
[ ext/common ]
Source code shared by the Apache and Nginx modules.
[ bin ]
User executables.
[ helper-scripts ]
Scripts used during runtime, but not directly executed by the user.
[ 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:
[ 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.
[ dev ]
Tools for Phusion Passenger developers. Not used during production.
[ resources ]
Various resource files, used during production.
[ debian ]
Debian packaging files.
[ man ]
Man pages.
[ build ]
Rake tasks used by the build system.
== Tests
Run all tests:
rake test
Run only the unit tests for the C++ components:
rake test:cxx
Run just the unit tests for the Ruby spawn server:
rake test:ruby
Run just the integration tests:
rake test:integration # All integration tests.
rake test:integration:apache2 # Just integration tests for Apache 2.
rake test:integration:nginx # Just integration tests for Nginx.
Notes:
- Some tests, such as the ones that test privilege lowering, require
root privileges. Those will only be run if Rake is run as root.
- Some tests will be run against multiple Rails versions in order to
test compatibility. This can take a long time. If you want to test
against only a single Rails version, then set the environment variable
ONLY_RAILS_VERSION to one of the subdirectory names in
test/stub/rails_apps, e.g. 'export ONLY_RAILS_VERSION=2.3'
== 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/'.