Sha256: 26c986311bfd4dd3deb6f7663ca43cae4f6cb9e42c4f418eaa3bdee1ea970a92

Contents?: true

Size: 1.96 KB

Versions: 19

Compression:

Stored size: 1.96 KB

Contents

module Nginxtra
  module Actions
    # The Nginxtra::Actions::Compile class encapsulates starting nginx
    # with the specified configuration file.  It also makes sure that
    # nginx has been compiled with the correct options.
    class Start
      include Nginxtra::Action

      # First, ensure nginx has been compiled, then make sure
      # configuration is correct, and finally start nginx and note the
      # start time.
      def start
        without_force do
          compile
        end

        return no_need_to_start unless should_start?
        save_config_files
        start_nginx
        update_last_start
      end

      # Invoke nginx compilation, to ensure it is up to date.
      def compile
        Nginxtra::Actions::Compile.new(@thor, @config).compile
      end

      # Save nginx config files to the proper config file path.
      def save_config_files
        files = @config.files
        raise Nginxtra::Error::InvalidConfig.new("Missing definition for nginx.conf", :header => "Missing definition for nginx.conf!", :message => "You must define your nginx.conf configuration in your nginxtra.conf.rb file.") unless files.include? "nginx.conf"

        @thor.inside Nginxtra::Config.config_dir do
          files.each do |filename|
            @thor.create_file filename, @config.file_contents(filename), :force => true
          end
        end
      end

      # Notify the user that nginx is already started.
      def no_need_to_start
        @thor.say "nginx is already started"
      end

      # Determine if we should even bother starting.  This returns
      # true if the user forced, or if nginx is already running.
      def should_start?
        return true if force?
        !Nginxtra::Config.nginx_running?
      end

      # Start nginx as a daemon.
      def start_nginx
        daemon :start
      end

      # Update the last nginx start time.
      def update_last_start
        Nginxtra::Status[:last_start_time] = Time.now
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
nginxtra-1.8.0.11 lib/nginxtra/actions/start.rb
nginxtra-1.8.0.10 lib/nginxtra/actions/start.rb
nginxtra-1.8.0.9 lib/nginxtra/actions/start.rb
nginxtra-1.6.3.9 lib/nginxtra/actions/start.rb
nginxtra-1.6.2.9 lib/nginxtra/actions/start.rb
nginxtra-1.6.1.9 lib/nginxtra/actions/start.rb
nginxtra-1.6.0.9 lib/nginxtra/actions/start.rb
nginxtra-1.4.7.9 lib/nginxtra/actions/start.rb
nginxtra-1.4.6.9 lib/nginxtra/actions/start.rb
nginxtra-1.4.5.9 lib/nginxtra/actions/start.rb
nginxtra-1.4.4.9 lib/nginxtra/actions/start.rb
nginxtra-1.4.3.9 lib/nginxtra/actions/start.rb
nginxtra-1.4.2.9 lib/nginxtra/actions/start.rb
nginxtra-1.4.1.9 lib/nginxtra/actions/start.rb
nginxtra-1.4.0.9 lib/nginxtra/actions/start.rb
nginxtra-1.4.0.8 lib/nginxtra/actions/start.rb
nginxtra-1.2.8.8 lib/nginxtra/actions/start.rb
nginxtra-1.2.7.8 lib/nginxtra/actions/start.rb
nginxtra-1.2.6.8 lib/nginxtra/actions/start.rb