Class: Nginxtra::Actions::Install
- Inherits:
-
Object
- Object
- Nginxtra::Actions::Install
- Includes:
- Nginxtra::Action
- Defined in:
- lib/nginxtra/actions/install.rb
Overview
The Nginxtra::Actions::Install class encapsulates installing nginxtra so that nginx can be started and stopped automatically when the server is started or stopped.
Instance Method Summary collapse
-
#check_if_nginx_is_installed ⇒ Object
Look for nginx installation and fail if it exists (unless –ignore-nginx-check is passed).
-
#create_etc_script ⇒ Object
Create a script in the base directory which be symlinked to /etc/init.d/nginxtra and then used to start and stop nginxtra via update-rc.d.
-
#install ⇒ Object
Run the installation of nginxtra.
-
#should_install? ⇒ Boolean
Determine if the install should proceed.
-
#up_to_date ⇒ Object
Notify the user that installation should be up to date.
-
#update_last_install ⇒ Object
Mark the last installed version and last installed time (the former being used to determine if nginxtra has been installed yet).
Methods included from Nginxtra::Action
Instance Method Details
#check_if_nginx_is_installed ⇒ Object
Look for nginx installation and fail if it exists (unless –ignore-nginx-check is passed).
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/nginxtra/actions/install.rb', line 19 def check_if_nginx_is_installed return unless File.exists?("/etc/init.d/nginx") if @thor.["ignore-nginx-check"] @thor.say @thor.set_color("Detected nginx install, but ignoring!", :red, true) return end raise Nginxtra::Error::NginxDetected.new("Uninstall nginx before installing nginxtra", :header => "It appears nginx is already installed!", :message => "Since /etc/init.d/nginx exists, you might have an existing nginx installation that will conflict with nginxtra. If you want to install nginxtra alongside nginx (at your own risk), please include the --ignore-nginx-check option to bypass this check.") end |
#create_etc_script ⇒ Object
Create a script in the base directory which be symlinked to /etc/init.d/nginxtra and then used to start and stop nginxtra via update-rc.d.
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 |
# File 'lib/nginxtra/actions/install.rb', line 33 def create_etc_script filename = "etc.init.d.nginxtra" workingdir = File. "." @thor.inside Nginxtra::Config.base_dir do @thor.create_file filename, %{#!/bin/sh ### BEGIN INIT INFO # Provides: nginxtra # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts nginxtra, which is a wrapper around the nginx web server # Description: starts nginxtra which starts nginx using start-stop-daemon ### END INIT INFO export GEM_HOME="#{ENV["GEM_HOME"]}" export GEM_PATH="#{ENV["GEM_PATH"]}" #{Nginxtra::Config.ruby_path} "#{File.join Nginxtra::Config.gem_dir, "bin/nginxtra"}" "$1" --basedir="#{Nginxtra::Config.base_dir}" --config="#{Nginxtra::Config.loaded_config_path}" --workingdir="#{workingdir}" --non-interactive }, :force => true @thor.chmod filename, 0755 end run! %{#{sudo true}rm /etc/init.d/nginxtra} if File.exists? "/etc/init.d/nginxtra" run! %{#{sudo true}ln -s "#{File.join Nginxtra::Config.base_dir, filename}" /etc/init.d/nginxtra} run! %{#{sudo true}update-rc.d nginxtra defaults} end |
#install ⇒ Object
Run the installation of nginxtra.
10 11 12 13 14 15 |
# File 'lib/nginxtra/actions/install.rb', line 10 def install return up_to_date unless should_install? check_if_nginx_is_installed create_etc_script update_last_install end |
#should_install? ⇒ Boolean
Determine if the install should proceed. This will be true if the force option was used, or if this version of nginxtra differs from the last version installed.
78 79 80 81 |
# File 'lib/nginxtra/actions/install.rb', line 78 def should_install? return true if force? Nginxtra::Status[:last_install_version] != Nginxtra::Config.version end |
#up_to_date ⇒ Object
Notify the user that installation should be up to date.
63 64 65 |
# File 'lib/nginxtra/actions/install.rb', line 63 def up_to_date @thor.say "nginxtra installation is up to date" end |
#update_last_install ⇒ Object
Mark the last installed version and last installed time (the former being used to determine if nginxtra has been installed yet).
70 71 72 73 |
# File 'lib/nginxtra/actions/install.rb', line 70 def update_last_install Nginxtra::Status[:last_install_version] = Nginxtra::Config.version Nginxtra::Status[:last_install_time] = Time.now end |