public
Description: Merb Core: All you need. None you don't.
Homepage: http://www.merbivore.com
Clone URL: git://github.com/wycats/merb-core.git
merb-core / lib / merb-core / constants.rb
100644 64 lines (61 sloc) 2.942 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
# Most of this list is simply constants frozen for efficiency
# and lowered memory consumption. Every time Ruby VM comes
# across a string or a number or a regexp literal,
# new object is created.
#
# This means if you refer to the same string 6 times per request
# and your application takes 100 requests per second, there are
# 600 objects for weak MRI garbage collector to work on.
#
# GC cycles take up to 80% (!) time of request processing in
# some cases. Eventually Rubinius and maybe MRI 2.0 gonna
# improve this situation but at the moment, all commonly used
# strings, regexp and numbers used as constants so no extra
# objects created and VM just operate pointers.
module Merb
    module Const
    
    DEFAULT_SEND_FILE_OPTIONS = {
      :type => 'application/octet-stream'.freeze,
      :disposition => 'attachment'.freeze
    }.freeze
    
    SET_COOKIE = " %s=%s; path=/; expires=%s".freeze
    COOKIE_EXPIRATION_FORMAT = "%a, %d-%b-%Y %H:%M:%S GMT".freeze
    COOKIE_SPLIT = /[;,] */n.freeze
    COOKIE_REGEXP = /\s*(.+)=(.*)\s*/.freeze
    COOKIE_EXPIRED_TIME = Time.at(0).freeze
    HOUR = 60 * 60
    DAY = HOUR * 24
    WEEK = DAY * 7
    MULTIPART_REGEXP = /\Amultipart\/form-data.*boundary=\"?([^\";,]+)/n.freeze
    HTTP_COOKIE = 'HTTP_COOKIE'.freeze
    QUERY_STRING = 'QUERY_STRING'.freeze
    JSON_MIME_TYPE_REGEXP = %r{^application/json|^text/x-json}.freeze
    XML_MIME_TYPE_REGEXP = %r{^application/xml|^text/xml}.freeze
    FORM_URL_ENCODED_REGEXP = %r{^application/x-www-form-urlencoded}.freeze
    UPCASE_CONTENT_TYPE = 'CONTENT_TYPE'.freeze
    CONTENT_TYPE = "Content-Type".freeze
    DATE = 'Date'.freeze
    ETAG = 'ETag'.freeze
    LAST_MODIFIED = "Last-Modified".freeze
    SLASH = "/".freeze
    REQUEST_METHOD = "REQUEST_METHOD".freeze
    GET = "GET".freeze
    POST = "POST".freeze
    HEAD = "HEAD".freeze
    CONTENT_LENGTH = "CONTENT_LENGTH".freeze
    HTTP_X_FORWARDED_FOR = "HTTP_X_FORWARDED_FOR".freeze
    HTTP_IF_MODIFIED_SINCE = "HTTP_IF_MODIFIED_SINCE".freeze
    HTTP_IF_NONE_MATCH = "HTTP_IF_NONE_MATCH".freeze
    UPLOAD_ID = "upload_id".freeze
    PATH_INFO = "PATH_INFO".freeze
    SCRIPT_NAME = "SCRIPT_NAME".freeze
    REQUEST_URI = "REQUEST_URI".freeze
    REQUEST_PATH = "REQUEST_PATH".freeze
    REMOTE_ADDR = "REMOTE_ADDR".freeze
    BREAK_TAG = "<br/>".freeze
    EMPTY_STRING = "".freeze
    NEWLINE = "\n".freeze
    DOUBLE_NEWLINE = "\n\n".freeze
    LOCATION = "Location".freeze
  end
end