require 'formula' class Mongodb < Formula homepage 'http://www.mongodb.org/' url 'http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-2.4.3.tgz' sha1 '9b9daa337c11789b832a9548bc2248d861e2ff6b' version '2.4.3-x86_64' depends_on :arch => :x86_64 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 (prefix+'mongod.conf').write mongodb_conf # Homebrew: it just works. # NOTE plist updated to use prefix/mongodb! mv bin/'mongod', prefix (bin/'mongod').write <<-EOS.undent #!/usr/bin/env ruby ARGV << '--config' << '#{etc}/mongod.conf' unless ARGV.find { |arg| arg =~ /^\s*\-\-config$/ or arg =~ /^\s*\-f$/ } exec "#{prefix}/mongod", *ARGV EOS # copy the config file to etc if this is the first install. etc.install prefix+'mongod.conf' unless File.exists? etc+"mongod.conf" end def mongodb_conf; <<-EOS.undent # Store data in #{var}/mongodb instead of the default /data/db dbpath = #{var}/mongodb # Append logs to #{var}/log/mongodb/mongo.log logpath = #{var}/log/mongodb/mongo.log logappend = true # Only accept local connections bind_ip = 127.0.0.1 EOS end plist_options :manual => "mongod" def plist; <<-EOS.undent Label #{plist_name} ProgramArguments #{opt_prefix}/mongod run --config #{etc}/mongod.conf RunAtLoad KeepAlive WorkingDirectory #{HOMEBREW_PREFIX} StandardErrorPath #{var}/log/mongodb/output.log StandardOutPath #{var}/log/mongodb/output.log HardResourceLimits NumberOfFiles 1024 SoftResourceLimits NumberOfFiles 1024 EOS end end