forked from Homebrew/legacy-homebrew
/
mongodb.rb
140 lines (120 loc) · 3.83 KB
/
mongodb.rb
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
require 'formula'
require 'hardware'
class Mongodb < Formula
homepage 'http://www.mongodb.org/'
packages = {
:x86_64 => {
:url => 'http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-1.8.1.tgz',
:md5 => 'e446ba61cc8898fa2ffd5046953155ca',
:version => '1.8.1-x86_64'
},
:i386 => {
:url => 'http://fastdl.mongodb.org/osx/mongodb-osx-i386-1.8.1.tgz',
:md5 => 'db95a601072feb3031f628dd39ca2446',
:version => '1.8.1-i386'
}
}
package = (Hardware.is_64_bit? and not ARGV.include? '--32bit') ? packages[:x86_64] : packages[:i386]
url package[:url]
md5 package[:md5]
version package[:version]
skip_clean :all
def options
[
['--32bit', 'Override arch detection and install the 32-bit version.'],
['--nojournal', 'Disable write-ahead logging (Journaling)'],
['--rest', 'Enable the REST Interface on the HTTP Status Page'],
]
end
def install
# Copy the prebuilt binaries to prefix
prefix.install Dir['*']
# Create the data and log directories under /var
(var+'mongodb').mkpath
(var+'log/mongodb').mkpath
# Write the configuration files and launchd script
(prefix+'mongod.conf').write mongodb_conf
(prefix+'org.mongodb.mongod.plist').write startup_plist
end
def caveats
s = ""
s += <<-EOS.undent
If this is your first install, automatically load on login with:
mkdir -p ~/Library/LaunchAgents
cp #{prefix}/org.mongodb.mongod.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
If this is an upgrade and you already have the org.mongodb.mongod.plist loaded:
launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
cp #{prefix}/org.mongodb.mongod.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
Or start it manually:
mongod run --config #{prefix}/mongod.conf
EOS
if ARGV.include? "--nojournal"
s += ""
s += <<-EOS.undent
Write Ahead logging (Journaling) has been disabled.
EOS
else
s += ""
s += <<-EOS.undent
MongoDB 1.8+ includes a feature for Write Ahead Logging (Journaling), which has been enabled by default.
This is not the default in production (Journaling is disabled); to disable journaling, use --nojournal.
EOS
end
return s
end
def mongodb_conf
conf = ""
conf += <<-EOS.undent
# Store data in #{var}/mongodb instead of the default /data/db
dbpath = #{var}/mongodb
# Only accept local connections
bind_ip = 127.0.0.1
EOS
if !ARGV.include? '--nojournal'
conf += <<-EOS.undent
# Enable Write Ahead Logging (not enabled by default in production deployments)
journal = true
EOS
end
if ARGV.include? '--rest'
conf += <<-EOS.undent
# Enable the REST interface on the HTTP Console (startup port + 1000)
rest = true
EOS
end
return conf
end
def startup_plist
return <<-EOS
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.mongodb.mongod</string>
<key>ProgramArguments</key>
<array>
<string>#{bin}/mongod</string>
<string>run</string>
<string>--config</string>
<string>#{prefix}/mongod.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>UserName</key>
<string>#{`whoami`.chomp}</string>
<key>WorkingDirectory</key>
<string>#{HOMEBREW_PREFIX}</string>
<key>StandardErrorPath</key>
<string>#{var}/log/mongodb/output.log</string>
<key>StandardOutPath</key>
<string>#{var}/log/mongodb/output.log</string>
</dict>
</plist>
EOS
end
end