s33r 0.4.2 → 0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/examples/cli/instant_download_server.rb +88 -0
- data/examples/cli/s3cli.rb +31 -52
- data/examples/cli/simple.rb +16 -6
- data/examples/fores33r/app/controllers/browser_controller.rb +12 -10
- data/examples/fores33r/app/helpers/application_helper.rb +2 -1
- data/examples/fores33r/app/views/browser/_upload.rhtml +1 -1
- data/examples/fores33r/app/views/browser/index.rhtml +4 -4
- data/examples/fores33r/config/environment.rb +5 -3
- data/examples/fores33r/log/development.log +2259 -0
- data/examples/fores33r/log/mongrel.log +59 -0
- data/examples/s3.yaml +2 -6
- data/lib/s33r/bucket.rb +103 -0
- data/lib/s33r/bucket_listing.rb +33 -76
- data/lib/s33r/client.rb +305 -446
- data/lib/s33r/networking.rb +197 -0
- data/lib/s33r/s33r_exception.rb +29 -18
- data/lib/s33r/s33r_http.rb +36 -18
- data/lib/s33r/s3_acl.rb +32 -52
- data/lib/s33r/s3_logging.rb +117 -0
- data/lib/s33r/s3_obj.rb +124 -69
- data/lib/s33r/utility.rb +447 -0
- data/test/cases/spec_acl.rb +10 -40
- data/test/cases/spec_bucket_listing.rb +12 -32
- data/test/cases/spec_logging.rb +47 -0
- data/test/cases/spec_networking.rb +11 -0
- data/test/cases/spec_s3_object.rb +44 -5
- data/test/cases/spec_utility.rb +264 -0
- data/test/files/acl.xml +0 -6
- data/test/files/config.yaml +5 -0
- data/test/files/logging_status_disabled.xml +3 -0
- data/test/files/logging_status_enabled.xml +7 -0
- data/test/test_setup.rb +7 -2
- metadata +16 -94
- data/examples/cli/acl_x.rb +0 -41
- data/examples/cli/logging_x.rb +0 -20
- data/examples/fores33r/README +0 -183
- data/html/classes/MIME.html +0 -120
- data/html/classes/MIME/InvalidContentType.html +0 -119
- data/html/classes/MIME/Type.html +0 -1173
- data/html/classes/MIME/Types.html +0 -566
- data/html/classes/Net.html +0 -108
- data/html/classes/Net/HTTPGenericRequest.html +0 -233
- data/html/classes/Net/HTTPResponse.html +0 -271
- data/html/classes/S33r.html +0 -986
- data/html/classes/S33r/BucketListing.html +0 -434
- data/html/classes/S33r/Client.html +0 -1575
- data/html/classes/S33r/LoggingResource.html +0 -222
- data/html/classes/S33r/NamedBucket.html +0 -693
- data/html/classes/S33r/OrderlyXmlMarkup.html +0 -165
- data/html/classes/S33r/S33rException.html +0 -124
- data/html/classes/S33r/S33rException/BucketListingMaxKeysError.html +0 -111
- data/html/classes/S33r/S33rException/BucketNotLogTargetable.html +0 -119
- data/html/classes/S33r/S33rException/InvalidBucketListing.html +0 -111
- data/html/classes/S33r/S33rException/InvalidPermission.html +0 -111
- data/html/classes/S33r/S33rException/InvalidS3GroupType.html +0 -111
- data/html/classes/S33r/S33rException/MalformedBucketName.html +0 -111
- data/html/classes/S33r/S33rException/MethodNotAvailable.html +0 -111
- data/html/classes/S33r/S33rException/MissingBucketName.html +0 -111
- data/html/classes/S33r/S33rException/MissingRequiredHeaders.html +0 -111
- data/html/classes/S33r/S33rException/MissingResource.html +0 -111
- data/html/classes/S33r/S33rException/S3FallenOver.html +0 -111
- data/html/classes/S33r/S33rException/TryingToPutEmptyResource.html +0 -117
- data/html/classes/S33r/S33rException/UnsupportedCannedACL.html +0 -111
- data/html/classes/S33r/S33rException/UnsupportedHTTPMethod.html +0 -111
- data/html/classes/S33r/S3ACL.html +0 -125
- data/html/classes/S33r/S3ACL/ACLDoc.html +0 -521
- data/html/classes/S33r/S3ACL/AmazonCustomer.html +0 -168
- data/html/classes/S33r/S3ACL/CanonicalUser.html +0 -212
- data/html/classes/S33r/S3ACL/Grant.html +0 -403
- data/html/classes/S33r/S3ACL/Grantee.html +0 -239
- data/html/classes/S33r/S3ACL/Group.html +0 -178
- data/html/classes/S33r/S3Object.html +0 -618
- data/html/classes/S33r/Sync.html +0 -152
- data/html/classes/XML.html +0 -202
- data/html/classes/XML/Document.html +0 -125
- data/html/classes/XML/Node.html +0 -124
- data/html/created.rid +0 -1
- data/html/files/CHANGELOG.html +0 -107
- data/html/files/MIT-LICENSE.html +0 -129
- data/html/files/README_txt.html +0 -259
- data/html/files/lib/s33r/bucket_listing_rb.html +0 -101
- data/html/files/lib/s33r/builder_rb.html +0 -108
- data/html/files/lib/s33r/client_rb.html +0 -111
- data/html/files/lib/s33r/core_rb.html +0 -113
- data/html/files/lib/s33r/libxml_extensions_rb.html +0 -101
- data/html/files/lib/s33r/libxml_loader_rb.html +0 -109
- data/html/files/lib/s33r/logging_rb.html +0 -108
- data/html/files/lib/s33r/mimetypes_rb.html +0 -120
- data/html/files/lib/s33r/named_bucket_rb.html +0 -101
- data/html/files/lib/s33r/s33r_exception_rb.html +0 -101
- data/html/files/lib/s33r/s33r_http_rb.html +0 -108
- data/html/files/lib/s33r/s3_acl_rb.html +0 -108
- data/html/files/lib/s33r/s3_obj_rb.html +0 -108
- data/html/files/lib/s33r/sync_rb.html +0 -101
- data/html/files/lib/s33r_rb.html +0 -101
- data/html/fr_class_index.html +0 -66
- data/html/fr_file_index.html +0 -44
- data/html/fr_method_index.html +0 -183
- data/html/index.html +0 -24
- data/html/rdoc-style.css +0 -208
- data/lib/s33r/core.rb +0 -296
- data/lib/s33r/logging.rb +0 -43
- data/lib/s33r/named_bucket.rb +0 -148
- data/lib/s33r/sync.rb +0 -13
- data/test/cases/spec_all_buckets.rb +0 -28
- data/test/cases/spec_client.rb +0 -101
- data/test/cases/spec_core.rb +0 -128
- data/test/cases/spec_namedbucket.rb +0 -46
- data/test/cases/spec_sync.rb +0 -34
- data/test/files/all_buckets.xml +0 -21
- data/test/files/client_config.yml +0 -5
- data/test/files/namedbucket_config.yml +0 -8
- data/test/files/namedbucket_config2.yml +0 -8
- data/test/test_bucket_setup.rb +0 -41
data/test/files/acl.xml
CHANGED
@@ -25,12 +25,6 @@
|
|
25
25
|
</Grantee>
|
26
26
|
<Permission>READ</Permission>
|
27
27
|
</Grant>
|
28
|
-
<Grant>
|
29
|
-
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="AmazonCustomerByEmail">
|
30
|
-
<EmailAddress>bingo@blinky.com</EmailAddress>
|
31
|
-
</Grantee>
|
32
|
-
<Permission>WRITE</Permission>
|
33
|
-
</Grant>
|
34
28
|
<Grant>
|
35
29
|
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
|
36
30
|
<URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>
|
data/test/test_setup.rb
CHANGED
@@ -4,14 +4,19 @@ require_gem 'rspec'
|
|
4
4
|
|
5
5
|
require File.dirname(__FILE__) + '/../lib/s33r'
|
6
6
|
include S33r
|
7
|
-
include S33r::
|
8
|
-
include S33r::Sync
|
7
|
+
include S33r::S3Exception
|
9
8
|
include S33r::S3ACL
|
9
|
+
include S33r::S3Logging
|
10
10
|
|
11
11
|
# set up some constants
|
12
12
|
module Testing
|
13
13
|
ACCESS_KEY = '44CF9590006BF252F707'
|
14
14
|
SECRET_ACCESS_KEY = 'OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV'
|
15
|
+
EMAIL = 'elliot@somedomain.com'
|
16
|
+
end
|
17
|
+
|
18
|
+
def load_test_xml(filename)
|
19
|
+
clean_xml(File.open(File.join(File.dirname(__FILE__), '/files', filename)).read)
|
15
20
|
end
|
16
21
|
|
17
22
|
# convenience for highlighting tasks
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: s33r
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-01-
|
6
|
+
version: "0.5"
|
7
|
+
date: 2007-01-17 00:00:00 +00:00
|
8
8
|
summary: A library for accessing Amazon S3
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -44,7 +44,6 @@ files:
|
|
44
44
|
- examples/fores33r/vendor
|
45
45
|
- examples/fores33r/public
|
46
46
|
- examples/fores33r/Rakefile
|
47
|
-
- examples/fores33r/README
|
48
47
|
- examples/fores33r/test/unit
|
49
48
|
- examples/fores33r/test/functional
|
50
49
|
- examples/fores33r/test/integration
|
@@ -73,6 +72,8 @@ files:
|
|
73
72
|
- examples/fores33r/tmp/cache
|
74
73
|
- examples/fores33r/tmp/sessions
|
75
74
|
- examples/fores33r/tmp/sockets
|
75
|
+
- examples/fores33r/log/development.log
|
76
|
+
- examples/fores33r/log/mongrel.log
|
76
77
|
- examples/fores33r/script/performance
|
77
78
|
- examples/fores33r/script/process
|
78
79
|
- examples/fores33r/script/breakpointer
|
@@ -116,38 +117,34 @@ files:
|
|
116
117
|
- examples/fores33r/public/javascripts/controls.js
|
117
118
|
- examples/fores33r/public/stylesheets/core.css
|
118
119
|
- examples/cli/simple.rb
|
119
|
-
- examples/cli/logging_x.rb
|
120
120
|
- examples/cli/s3cli.rb
|
121
|
-
- examples/cli/
|
121
|
+
- examples/cli/instant_download_server.rb
|
122
122
|
- lib/s33r
|
123
123
|
- lib/s33r.rb
|
124
124
|
- lib/s33r/bucket_listing.rb
|
125
125
|
- lib/s33r/libxml_loader.rb
|
126
|
-
- lib/s33r/
|
127
|
-
- lib/s33r/named_bucket.rb
|
126
|
+
- lib/s33r/utility.rb
|
128
127
|
- lib/s33r/s3_acl.rb
|
129
128
|
- lib/s33r/s3_obj.rb
|
130
129
|
- lib/s33r/builder.rb
|
131
|
-
- lib/s33r/
|
130
|
+
- lib/s33r/client.rb
|
132
131
|
- lib/s33r/libxml_extensions.rb
|
133
|
-
- lib/s33r/core.rb
|
134
132
|
- lib/s33r/s33r_http.rb
|
135
133
|
- lib/s33r/s33r_exception.rb
|
136
134
|
- lib/s33r/mimetypes.rb
|
137
|
-
- lib/s33r/
|
135
|
+
- lib/s33r/bucket.rb
|
136
|
+
- lib/s33r/networking.rb
|
137
|
+
- lib/s33r/s3_logging.rb
|
138
138
|
- test/files
|
139
139
|
- test/cases
|
140
|
-
- test/test_bucket_setup.rb
|
141
140
|
- test/test_setup.rb
|
142
141
|
- test/files/textfile.txt
|
143
142
|
- test/files/wave.jpg
|
144
|
-
- test/files/namedbucket_config2.yml
|
145
143
|
- test/files/bucket_listing2.xml
|
146
|
-
- test/files/
|
144
|
+
- test/files/config.yaml
|
147
145
|
- test/files/bucket_listing3.xml
|
148
146
|
- test/files/acl.xml
|
149
|
-
- test/files/
|
150
|
-
- test/files/client_config.yml
|
147
|
+
- test/files/logging_status_enabled.xml
|
151
148
|
- test/files/logging_acl.xml
|
152
149
|
- test/files/bucket_listing.xml
|
153
150
|
- test/files/bucket_listing_broken.xml
|
@@ -157,89 +154,14 @@ files:
|
|
157
154
|
- test/files/suspect_bucket_listing.xml
|
158
155
|
- test/files/acl_grant3.xml
|
159
156
|
- test/files/acl_grant4.xml
|
157
|
+
- test/files/logging_status_disabled.xml
|
160
158
|
- test/cases/spec_bucket_listing.rb
|
161
159
|
- test/cases/spec_s3_object.rb
|
162
|
-
- test/cases/
|
163
|
-
- test/cases/spec_core.rb
|
164
|
-
- test/cases/spec_sync.rb
|
165
|
-
- test/cases/spec_client.rb
|
160
|
+
- test/cases/spec_logging.rb
|
166
161
|
- test/cases/spec_acl.rb
|
167
162
|
- test/cases/spec_xml.rb
|
168
|
-
- test/cases/
|
169
|
-
-
|
170
|
-
- html/rdoc-style.css
|
171
|
-
- html/files
|
172
|
-
- html/classes
|
173
|
-
- html/fr_file_index.html
|
174
|
-
- html/fr_class_index.html
|
175
|
-
- html/fr_method_index.html
|
176
|
-
- html/index.html
|
177
|
-
- html/files/README_txt.html
|
178
|
-
- html/files/MIT-LICENSE.html
|
179
|
-
- html/files/CHANGELOG.html
|
180
|
-
- html/files/lib
|
181
|
-
- html/files/lib/s33r_rb.html
|
182
|
-
- html/files/lib/s33r
|
183
|
-
- html/files/lib/s33r/bucket_listing_rb.html
|
184
|
-
- html/files/lib/s33r/libxml_loader_rb.html
|
185
|
-
- html/files/lib/s33r/client_rb.html
|
186
|
-
- html/files/lib/s33r/named_bucket_rb.html
|
187
|
-
- html/files/lib/s33r/s3_acl_rb.html
|
188
|
-
- html/files/lib/s33r/s3_obj_rb.html
|
189
|
-
- html/files/lib/s33r/builder_rb.html
|
190
|
-
- html/files/lib/s33r/logging_rb.html
|
191
|
-
- html/files/lib/s33r/libxml_extensions_rb.html
|
192
|
-
- html/files/lib/s33r/core_rb.html
|
193
|
-
- html/files/lib/s33r/s33r_http_rb.html
|
194
|
-
- html/files/lib/s33r/s33r_exception_rb.html
|
195
|
-
- html/files/lib/s33r/mimetypes_rb.html
|
196
|
-
- html/files/lib/s33r/sync_rb.html
|
197
|
-
- html/classes/XML.html
|
198
|
-
- html/classes/XML
|
199
|
-
- html/classes/Net.html
|
200
|
-
- html/classes/Net
|
201
|
-
- html/classes/MIME.html
|
202
|
-
- html/classes/MIME
|
203
|
-
- html/classes/S33r.html
|
204
|
-
- html/classes/S33r
|
205
|
-
- html/classes/XML/Node.html
|
206
|
-
- html/classes/XML/Document.html
|
207
|
-
- html/classes/Net/HTTPGenericRequest.html
|
208
|
-
- html/classes/Net/HTTPResponse.html
|
209
|
-
- html/classes/MIME/Types.html
|
210
|
-
- html/classes/MIME/InvalidContentType.html
|
211
|
-
- html/classes/MIME/Type.html
|
212
|
-
- html/classes/S33r/Sync.html
|
213
|
-
- html/classes/S33r/S33rException.html
|
214
|
-
- html/classes/S33r/S33rException
|
215
|
-
- html/classes/S33r/S3ACL.html
|
216
|
-
- html/classes/S33r/S3ACL
|
217
|
-
- html/classes/S33r/LoggingResource.html
|
218
|
-
- html/classes/S33r/S3Object.html
|
219
|
-
- html/classes/S33r/NamedBucket.html
|
220
|
-
- html/classes/S33r/Client.html
|
221
|
-
- html/classes/S33r/BucketListing.html
|
222
|
-
- html/classes/S33r/OrderlyXmlMarkup.html
|
223
|
-
- html/classes/S33r/S33rException/MissingResource.html
|
224
|
-
- html/classes/S33r/S33rException/InvalidBucketListing.html
|
225
|
-
- html/classes/S33r/S33rException/BucketListingMaxKeysError.html
|
226
|
-
- html/classes/S33r/S33rException/MissingBucketName.html
|
227
|
-
- html/classes/S33r/S33rException/MalformedBucketName.html
|
228
|
-
- html/classes/S33r/S33rException/MissingRequiredHeaders.html
|
229
|
-
- html/classes/S33r/S33rException/MethodNotAvailable.html
|
230
|
-
- html/classes/S33r/S33rException/InvalidPermission.html
|
231
|
-
- html/classes/S33r/S33rException/InvalidS3GroupType.html
|
232
|
-
- html/classes/S33r/S33rException/S3FallenOver.html
|
233
|
-
- html/classes/S33r/S33rException/UnsupportedCannedACL.html
|
234
|
-
- html/classes/S33r/S33rException/TryingToPutEmptyResource.html
|
235
|
-
- html/classes/S33r/S33rException/UnsupportedHTTPMethod.html
|
236
|
-
- html/classes/S33r/S33rException/BucketNotLogTargetable.html
|
237
|
-
- html/classes/S33r/S3ACL/Group.html
|
238
|
-
- html/classes/S33r/S3ACL/CanonicalUser.html
|
239
|
-
- html/classes/S33r/S3ACL/AmazonCustomer.html
|
240
|
-
- html/classes/S33r/S3ACL/ACLDoc.html
|
241
|
-
- html/classes/S33r/S3ACL/Grantee.html
|
242
|
-
- html/classes/S33r/S3ACL/Grant.html
|
163
|
+
- test/cases/spec_utility.rb
|
164
|
+
- test/cases/spec_networking.rb
|
243
165
|
test_files: []
|
244
166
|
|
245
167
|
rdoc_options: []
|
data/examples/cli/acl_x.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
# Example of how to manipulate ACLs (see s3_acl.rb or rdoc for all ACL classes)
|
2
|
-
|
3
|
-
require File.join(File.dirname(__FILE__), '../../lib/s33r')
|
4
|
-
include S33r
|
5
|
-
include S33r::S3ACL
|
6
|
-
|
7
|
-
# initialise the client from a config file
|
8
|
-
# (see s3.yaml in examples directory)
|
9
|
-
c = Client.init('/home/ell/.s33r')
|
10
|
-
|
11
|
-
# bucket whose ACL we're going to manipulate
|
12
|
-
bucket = 'es-test'
|
13
|
-
|
14
|
-
# get the ACL for the bucket
|
15
|
-
acl = c.get_acl(bucket)
|
16
|
-
|
17
|
-
# add a new grant to the ACL (allow all users read access)
|
18
|
-
acl.add_grant(Grant.for_group(:all_users, :read))
|
19
|
-
|
20
|
-
# remove a grant from the ACL;
|
21
|
-
# note that s33r is able to compare existing grants in
|
22
|
-
# an ACL with newly-minted ones
|
23
|
-
acl.remove_grant(Grant.for_group(:authenticated_users, :read))
|
24
|
-
|
25
|
-
# put the ACL back
|
26
|
-
c.set_acl(acl, bucket)
|
27
|
-
|
28
|
-
# get the ACL for a resource inside the bucket
|
29
|
-
# and make it readable by a specific Amazon customer
|
30
|
-
resource = 'test'
|
31
|
-
|
32
|
-
# NB this method raises an error if the resource doesn't exist
|
33
|
-
acl = c.get_acl(bucket, resource)
|
34
|
-
|
35
|
-
# the email address you set here needs to be a valid Amazon customer
|
36
|
-
acl.add_grant(Grant.for_amazon_customer('elliot@example.com', :read))
|
37
|
-
p c.set_acl(acl, bucket, resource)
|
38
|
-
|
39
|
-
# short-hand for making a resource public
|
40
|
-
# c.make_public(bucket)
|
41
|
-
# c.make_public(bucket, resource)
|
data/examples/cli/logging_x.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# Example of how to set up logging on a bucket or resource.
|
2
|
-
|
3
|
-
require File.join(File.dirname(__FILE__), '../../lib/s33r')
|
4
|
-
include S33r
|
5
|
-
|
6
|
-
# initialise the client from a config file
|
7
|
-
# (see s3.yaml in examples directory)
|
8
|
-
c = Client.init('/home/ell/.s33r')
|
9
|
-
|
10
|
-
# Make a logging destination
|
11
|
-
# This sets the required ACLs on a bucket to make it writeable by the
|
12
|
-
# logging processes.
|
13
|
-
c.enable_log_target('my-logging-bucket')
|
14
|
-
|
15
|
-
# Set up logging for a bucket.
|
16
|
-
c.enable_logging('es-test', 'my-logging-bucket')
|
17
|
-
|
18
|
-
# Set up logging for a bucket with a custom log prefix.
|
19
|
-
# (Default prefix is the name of the bucket which has logging enabled + "'")
|
20
|
-
c.enable_logging('es-test2', 'my-logging-bucket', :prefix => 'special-logs-')
|
data/examples/fores33r/README
DELETED
@@ -1,183 +0,0 @@
|
|
1
|
-
== Welcome to Rails
|
2
|
-
|
3
|
-
Rails is a web-application and persistence framework that includes everything
|
4
|
-
needed to create database-backed web-applications according to the
|
5
|
-
Model-View-Control pattern of separation. This pattern splits the view (also
|
6
|
-
called the presentation) into "dumb" templates that are primarily responsible
|
7
|
-
for inserting pre-built data in between HTML tags. The model contains the
|
8
|
-
"smart" domain objects (such as Account, Product, Person, Post) that holds all
|
9
|
-
the business logic and knows how to persist themselves to a database. The
|
10
|
-
controller handles the incoming requests (such as Save New Account, Update
|
11
|
-
Product, Show Post) by manipulating the model and directing data to the view.
|
12
|
-
|
13
|
-
In Rails, the model is handled by what's called an object-relational mapping
|
14
|
-
layer entitled Active Record. This layer allows you to present the data from
|
15
|
-
database rows as objects and embellish these data objects with business logic
|
16
|
-
methods. You can read more about Active Record in
|
17
|
-
link:files/vendor/rails/activerecord/README.html.
|
18
|
-
|
19
|
-
The controller and view are handled by the Action Pack, which handles both
|
20
|
-
layers by its two parts: Action View and Action Controller. These two layers
|
21
|
-
are bundled in a single package due to their heavy interdependence. This is
|
22
|
-
unlike the relationship between the Active Record and Action Pack that is much
|
23
|
-
more separate. Each of these packages can be used independently outside of
|
24
|
-
Rails. You can read more about Action Pack in
|
25
|
-
link:files/vendor/rails/actionpack/README.html.
|
26
|
-
|
27
|
-
|
28
|
-
== Getting started
|
29
|
-
|
30
|
-
1. Start the web server: <tt>ruby script/server</tt> (run with --help for options)
|
31
|
-
2. Go to http://localhost:3000/ and get "Welcome aboard: You’re riding the Rails!"
|
32
|
-
3. Follow the guidelines to start developing your application
|
33
|
-
|
34
|
-
|
35
|
-
== Web servers
|
36
|
-
|
37
|
-
Rails uses the built-in web server in Ruby called WEBrick by default, so you don't
|
38
|
-
have to install or configure anything to play around.
|
39
|
-
|
40
|
-
If you have lighttpd installed, though, it'll be used instead when running script/server.
|
41
|
-
It's considerably faster than WEBrick and suited for production use, but requires additional
|
42
|
-
installation and currently only works well on OS X/Unix (Windows users are encouraged
|
43
|
-
to start with WEBrick). We recommend version 1.4.11 and higher. You can download it from
|
44
|
-
http://www.lighttpd.net.
|
45
|
-
|
46
|
-
If you want something that's halfway between WEBrick and lighttpd, we heartily recommend
|
47
|
-
Mongrel. It's a Ruby-based web server with a C-component (so it requires compilation) that
|
48
|
-
also works very well with Windows. See more at http://mongrel.rubyforge.org/.
|
49
|
-
|
50
|
-
But of course its also possible to run Rails with the premiere open source web server Apache.
|
51
|
-
To get decent performance, though, you'll need to install FastCGI. For Apache 1.3, you want
|
52
|
-
to use mod_fastcgi. For Apache 2.0+, you want to use mod_fcgid.
|
53
|
-
|
54
|
-
See http://wiki.rubyonrails.com/rails/pages/FastCGI for more information on FastCGI.
|
55
|
-
|
56
|
-
== Example for Apache conf
|
57
|
-
|
58
|
-
<VirtualHost *:80>
|
59
|
-
ServerName rails
|
60
|
-
DocumentRoot /path/application/public/
|
61
|
-
ErrorLog /path/application/log/server.log
|
62
|
-
|
63
|
-
<Directory /path/application/public/>
|
64
|
-
Options ExecCGI FollowSymLinks
|
65
|
-
AllowOverride all
|
66
|
-
Allow from all
|
67
|
-
Order allow,deny
|
68
|
-
</Directory>
|
69
|
-
</VirtualHost>
|
70
|
-
|
71
|
-
NOTE: Be sure that CGIs can be executed in that directory as well. So ExecCGI
|
72
|
-
should be on and ".cgi" should respond. All requests from 127.0.0.1 go
|
73
|
-
through CGI, so no Apache restart is necessary for changes. All other requests
|
74
|
-
go through FCGI (or mod_ruby), which requires a restart to show changes.
|
75
|
-
|
76
|
-
|
77
|
-
== Debugging Rails
|
78
|
-
|
79
|
-
Have "tail -f" commands running on both the server.log, production.log, and
|
80
|
-
test.log files. Rails will automatically display debugging and runtime
|
81
|
-
information to these files. Debugging info will also be shown in the browser
|
82
|
-
on requests from 127.0.0.1.
|
83
|
-
|
84
|
-
|
85
|
-
== Breakpoints
|
86
|
-
|
87
|
-
Breakpoint support is available through the script/breakpointer client. This
|
88
|
-
means that you can break out of execution at any point in the code, investigate
|
89
|
-
and change the model, AND then resume execution! Example:
|
90
|
-
|
91
|
-
class WeblogController < ActionController::Base
|
92
|
-
def index
|
93
|
-
@posts = Post.find_all
|
94
|
-
breakpoint "Breaking out from the list"
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
So the controller will accept the action, run the first line, then present you
|
99
|
-
with a IRB prompt in the breakpointer window. Here you can do things like:
|
100
|
-
|
101
|
-
Executing breakpoint "Breaking out from the list" at .../webrick_server.rb:16 in 'breakpoint'
|
102
|
-
|
103
|
-
>> @posts.inspect
|
104
|
-
=> "[#<Post:0x14a6be8 @attributes={\"title\"=>nil, \"body\"=>nil, \"id\"=>\"1\"}>,
|
105
|
-
#<Post:0x14a6620 @attributes={\"title\"=>\"Rails you know!\", \"body\"=>\"Only ten..\", \"id\"=>\"2\"}>]"
|
106
|
-
>> @posts.first.title = "hello from a breakpoint"
|
107
|
-
=> "hello from a breakpoint"
|
108
|
-
|
109
|
-
...and even better is that you can examine how your runtime objects actually work:
|
110
|
-
|
111
|
-
>> f = @posts.first
|
112
|
-
=> #<Post:0x13630c4 @attributes={"title"=>nil, "body"=>nil, "id"=>"1"}>
|
113
|
-
>> f.
|
114
|
-
Display all 152 possibilities? (y or n)
|
115
|
-
|
116
|
-
Finally, when you're ready to resume execution, you press CTRL-D
|
117
|
-
|
118
|
-
|
119
|
-
== Console
|
120
|
-
|
121
|
-
You can interact with the domain model by starting the console through script/console.
|
122
|
-
Here you'll have all parts of the application configured, just like it is when the
|
123
|
-
application is running. You can inspect domain models, change values, and save to the
|
124
|
-
database. Starting the script without arguments will launch it in the development environment.
|
125
|
-
Passing an argument will specify a different environment, like <tt>script/console production</tt>.
|
126
|
-
|
127
|
-
To reload your controllers and models after launching the console run <tt>reload!</tt>
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
== Description of contents
|
132
|
-
|
133
|
-
app
|
134
|
-
Holds all the code that's specific to this particular application.
|
135
|
-
|
136
|
-
app/controllers
|
137
|
-
Holds controllers that should be named like weblog_controller.rb for
|
138
|
-
automated URL mapping. All controllers should descend from
|
139
|
-
ActionController::Base.
|
140
|
-
|
141
|
-
app/models
|
142
|
-
Holds models that should be named like post.rb.
|
143
|
-
Most models will descend from ActiveRecord::Base.
|
144
|
-
|
145
|
-
app/views
|
146
|
-
Holds the template files for the view that should be named like
|
147
|
-
weblog/index.rhtml for the WeblogController#index action. All views use eRuby
|
148
|
-
syntax. This directory can also be used to keep stylesheets, images, and so on
|
149
|
-
that can be symlinked to public.
|
150
|
-
|
151
|
-
app/helpers
|
152
|
-
Holds view helpers that should be named like weblog_helper.rb.
|
153
|
-
|
154
|
-
app/apis
|
155
|
-
Holds API classes for web services.
|
156
|
-
|
157
|
-
config
|
158
|
-
Configuration files for the Rails environment, the routing map, the database, and other dependencies.
|
159
|
-
|
160
|
-
components
|
161
|
-
Self-contained mini-applications that can bundle together controllers, models, and views.
|
162
|
-
|
163
|
-
db
|
164
|
-
Contains the database schema in schema.rb. db/migrate contains all
|
165
|
-
the sequence of Migrations for your schema.
|
166
|
-
|
167
|
-
lib
|
168
|
-
Application specific libraries. Basically, any kind of custom code that doesn't
|
169
|
-
belong under controllers, models, or helpers. This directory is in the load path.
|
170
|
-
|
171
|
-
public
|
172
|
-
The directory available for the web server. Contains subdirectories for images, stylesheets,
|
173
|
-
and javascripts. Also contains the dispatchers and the default HTML files.
|
174
|
-
|
175
|
-
script
|
176
|
-
Helper scripts for automation and generation.
|
177
|
-
|
178
|
-
test
|
179
|
-
Unit and functional tests along with fixtures.
|
180
|
-
|
181
|
-
vendor
|
182
|
-
External libraries that the application depends on. Also includes the plugins subdirectory.
|
183
|
-
This directory is in the load path.
|