class Rabbitmq < Formula desc "Messaging broker" homepage "https://www.rabbitmq.com" url "https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/rabbitmq-server-generic-unix-3.6.9.tar.xz" sha256 "012e8efbd0f40c086030803c92fea2e3af37b8d1515a553896fb5c1f3960bc40" revision 1 bottle :unneeded # Incompatible with Erlang/OTP 20.0 # See upstream issue from 23 Jun 2017 https://github.com/rabbitmq/rabbitmq-server/issues/1272 depends_on "erlang@19" def install # Install the base files prefix.install Dir["*"] # Setup the lib files (var/"lib/rabbitmq").mkpath (var/"log/rabbitmq").mkpath # Correct SYS_PREFIX for things like rabbitmq-plugins inreplace sbin/"rabbitmq-defaults" do |s| s.gsub! "SYS_PREFIX=${RABBITMQ_HOME}", "SYS_PREFIX=#{HOMEBREW_PREFIX}" erlang = Formula["erlang@19"] s.gsub! /^ERL_DIR=$/, "ERL_DIR=#{erlang.opt_bin}/" s.gsub! "CLEAN_BOOT_FILE=start_clean", "CLEAN_BOOT_FILE=#{erlang.opt_lib/"erlang/bin/start_clean"}" s.gsub! "SASL_BOOT_FILE=start_sasl", "SASL_BOOT_FILE=#{erlang.opt_lib/"erlang/bin/start_clean"}" end # Set RABBITMQ_HOME in rabbitmq-env inreplace sbin/"rabbitmq-env", 'RABBITMQ_HOME="$(rmq_realpath "${RABBITMQ_SCRIPTS_DIR}/..")"', "RABBITMQ_HOME=#{prefix}" # Create the rabbitmq-env.conf file rabbitmq_env_conf = etc/"rabbitmq/rabbitmq-env.conf" rabbitmq_env_conf.write rabbitmq_env unless rabbitmq_env_conf.exist? # Enable plugins - management web UI and visualiser; STOMP, MQTT, AMQP 1.0 protocols enabled_plugins_path = etc/"rabbitmq/enabled_plugins" enabled_plugins_path.write "[rabbitmq_management,rabbitmq_management_visualiser,rabbitmq_stomp,rabbitmq_amqp1_0,rabbitmq_mqtt]." unless enabled_plugins_path.exist? # Extract rabbitmqadmin and install to sbin # use it to generate, then install the bash completion file system "/usr/bin/unzip", "-qq", "-j", "#{prefix}/plugins/rabbitmq_management-#{version}.ez", "rabbitmq_management-#{version}/priv/www/cli/rabbitmqadmin" sbin.install "rabbitmqadmin" (sbin/"rabbitmqadmin").chmod 0755 (bash_completion/"rabbitmqadmin.bash").write Utils.popen_read("#{sbin}/rabbitmqadmin --bash-completion") end def caveats; <<-EOS.undent Management Plugin enabled by default at http://localhost:15672 EOS end def rabbitmq_env; <<-EOS.undent CONFIG_FILE=#{etc}/rabbitmq/rabbitmq NODE_IP_ADDRESS=127.0.0.1 NODENAME=rabbit@localhost EOS end plist_options :manual => "rabbitmq-server" def plist; <<-EOS.undent Label #{plist_name} Program #{opt_sbin}/rabbitmq-server RunAtLoad EnvironmentVariables PATH #{HOMEBREW_PREFIX}/sbin:/usr/bin:/bin:#{HOMEBREW_PREFIX}/bin CONF_ENV_FILE #{etc}/rabbitmq/rabbitmq-env.conf EOS end test do ENV["RABBITMQ_MNESIA_BASE"] = testpath/"var/lib/rabbitmq/mnesia" system sbin/"rabbitmq-server", "-detached" system sbin/"rabbitmqctl", "status" system sbin/"rabbitmqctl", "stop" end end