daemon-kit 0.1.8pre → 0.1.8rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +1 -1
- data/daemon-kit.gemspec +3 -2
- data/lib/daemon_kit/application.rb +43 -0
- data/lib/daemon_kit/config.rb +1 -1
- data/lib/daemon_kit/initializer.rb +1 -1
- data/lib/daemon_kit/tasks/framework.rake +7 -9
- data/lib/daemon_kit.rb +1 -1
- data/lib/generators/daemon_kit/app/templates/Gemfile +1 -1
- data/lib/generators/daemon_kit/app/templates/config/boot.rb +2 -2
- data/lib/generators/daemon_kit/app/templates/script/destroy +1 -0
- data/lib/generators/daemon_kit/app/templates/script/generate +1 -0
- data/lib/generators/daemon_kit/capistrano/templates/config/deploy/logrotate.erb +13 -0
- data/lib/generators/daemon_kit/capistrano/templates/config/deploy.rb.tt +14 -0
- metadata +3 -2
    
        data/README.rdoc
    CHANGED
    
    | @@ -9,7 +9,7 @@ | |
| 9 9 |  | 
| 10 10 | 
             
            Daemon Kit aims to simplify creating Ruby daemons by providing a sound application skeleton (through a generator), task specific generators (jabber bot, etc) and robust environment management code.
         | 
| 11 11 |  | 
| 12 | 
            -
            Using simple built-in generators it is easy to  | 
| 12 | 
            +
            Using simple built-in generators it is easy to create evented and non-evented daemons that perform a multitude of different tasks.
         | 
| 13 13 |  | 
| 14 14 | 
             
            Supported generators:
         | 
| 15 15 |  | 
    
        data/daemon-kit.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{daemon-kit}
         | 
| 8 | 
            -
              s.version = "0.1. | 
| 8 | 
            +
              s.version = "0.1.8rc1"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = ["kenneth.kalmer@gmail.com"]
         | 
| 12 | 
            -
              s.date = %q{2010- | 
| 12 | 
            +
              s.date = %q{2010-04-13}
         | 
| 13 13 | 
             
              s.default_executable = %q{daemon-kit}
         | 
| 14 14 | 
             
              s.description = %q{daemon-kit aims to simplify creating Ruby daemons by providing a sound application skeleton (through a generator), task specific generators (jabber bot, etc) and robust environment management code.}
         | 
| 15 15 | 
             
              s.email = %q{kenneth.kalmer@gmail.com}
         | 
| @@ -138,6 +138,7 @@ Gem::Specification.new do |s| | |
| 138 138 | 
             
                 "lib/generators/daemon_kit/capistrano/templates/Capfile",
         | 
| 139 139 | 
             
                 "lib/generators/daemon_kit/capistrano/templates/USAGE",
         | 
| 140 140 | 
             
                 "lib/generators/daemon_kit/capistrano/templates/config/deploy.rb.tt",
         | 
| 141 | 
            +
                 "lib/generators/daemon_kit/capistrano/templates/config/deploy/logrotate.erb",
         | 
| 141 142 | 
             
                 "lib/generators/daemon_kit/capistrano/templates/config/deploy/production.rb.tt",
         | 
| 142 143 | 
             
                 "lib/generators/daemon_kit/capistrano/templates/config/deploy/staging.rb.tt",
         | 
| 143 144 | 
             
                 "lib/generators/daemon_kit/capistrano/templates/config/environments/staging.rb",
         | 
| @@ -101,6 +101,49 @@ module DaemonKit | |
| 101 101 | 
             
                  def exit!( code = 0 )
         | 
| 102 102 | 
             
                  end
         | 
| 103 103 |  | 
| 104 | 
            +
                  # http://gist.github.com/304739
         | 
| 105 | 
            +
                  #
         | 
| 106 | 
            +
                  # Stolen from Unicorn::Util
         | 
| 107 | 
            +
                  #
         | 
| 108 | 
            +
                  # This reopens ALL logfiles in the process that have been rotated
         | 
| 109 | 
            +
                  # using logrotate(8) (without copytruncate) or similar tools.
         | 
| 110 | 
            +
                  # A +File+ object is considered for reopening if it is:
         | 
| 111 | 
            +
                  #   1) opened with the O_APPEND and O_WRONLY flags
         | 
| 112 | 
            +
                  #   2) opened with an absolute path (starts with "/")
         | 
| 113 | 
            +
                  #   3) the current open file handle does not match its original open path
         | 
| 114 | 
            +
                  #   4) unbuffered (as far as userspace buffering goes, not O_SYNC)
         | 
| 115 | 
            +
                  # Returns the number of files reopened
         | 
| 116 | 
            +
                  def reopen_logs
         | 
| 117 | 
            +
                    nr = 0
         | 
| 118 | 
            +
                    append_flags = File::WRONLY | File::APPEND
         | 
| 119 | 
            +
                    DaemonKit.logger.info "Rotating logs" if DaemonKit.logger
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                    #logs = [STDOUT, STDERR]
         | 
| 122 | 
            +
                    #logs.each do |fp|
         | 
| 123 | 
            +
                    ObjectSpace.each_object(File) do |fp|
         | 
| 124 | 
            +
                      next if fp.closed?
         | 
| 125 | 
            +
                      next unless (fp.sync && fp.path[0..0] == "/")
         | 
| 126 | 
            +
                      next unless (fp.fcntl(Fcntl::F_GETFL) & append_flags) == append_flags
         | 
| 127 | 
            +
             | 
| 128 | 
            +
                      begin
         | 
| 129 | 
            +
                        a, b = fp.stat, File.stat(fp.path)
         | 
| 130 | 
            +
                        next if a.ino == b.ino && a.dev == b.dev
         | 
| 131 | 
            +
                      rescue Errno::ENOENT
         | 
| 132 | 
            +
                      end
         | 
| 133 | 
            +
             | 
| 134 | 
            +
                      open_arg = 'a'
         | 
| 135 | 
            +
                      if fp.respond_to?(:external_encoding) && enc = fp.external_encoding
         | 
| 136 | 
            +
                        open_arg << ":#{enc.to_s}"
         | 
| 137 | 
            +
                        enc = fp.internal_encoding and open_arg << ":#{enc.to_s}"
         | 
| 138 | 
            +
                      end
         | 
| 139 | 
            +
                      DaemonKit.logger.info "Rotating path: #{fp.path}" if DaemonKit.logger
         | 
| 140 | 
            +
                      fp.reopen(fp.path, open_arg)
         | 
| 141 | 
            +
                      fp.sync = true
         | 
| 142 | 
            +
                      nr += 1
         | 
| 143 | 
            +
                    end # each_object
         | 
| 144 | 
            +
                    nr
         | 
| 145 | 
            +
                  end
         | 
| 146 | 
            +
             | 
| 104 147 | 
             
                  protected
         | 
| 105 148 |  | 
| 106 149 | 
             
                  def parse_arguments( args )
         | 
    
        data/lib/daemon_kit/config.rb
    CHANGED
    
    | @@ -64,7 +64,7 @@ module DaemonKit | |
| 64 64 | 
             
                    #end
         | 
| 65 65 | 
             
                    if @data.respond_to?( method_name.to_s )
         | 
| 66 66 | 
             
                      return @data.send( method_name.to_s )
         | 
| 67 | 
            -
                    elsif @ | 
| 67 | 
            +
                    elsif @data.respond_to?( method_name.to_s.gsub(/\-/, '_') )
         | 
| 68 68 | 
             
                      return @data.send( method_name.to_s.gsub(/\-/, '_') )
         | 
| 69 69 | 
             
                    end
         | 
| 70 70 | 
             
                  end
         | 
| @@ -13,16 +13,15 @@ namespace :daemon_kit do | |
| 13 13 | 
             
                  version ||= kit.version
         | 
| 14 14 |  | 
| 15 15 | 
             
                  unless kit
         | 
| 16 | 
            -
                    puts "No daemon_kit gem #{version} is installed.  Do 'gem list  | 
| 16 | 
            +
                    puts "No daemon_kit gem #{version} is installed.  Do 'gem list daemon-kit' to see what you have available."
         | 
| 17 17 | 
             
                    exit
         | 
| 18 18 | 
             
                  end
         | 
| 19 19 |  | 
| 20 20 | 
             
                  puts "Freezing the gem for DaemonKit #{kit.version}"
         | 
| 21 | 
            -
                   | 
| 22 | 
            -
                  mkdir_p "vendor/daemon_kit"
         | 
| 21 | 
            +
                  mkdir_p "vendor"
         | 
| 23 22 |  | 
| 24 23 | 
             
                  begin
         | 
| 25 | 
            -
                    chdir("vendor | 
| 24 | 
            +
                    chdir("vendor") do
         | 
| 26 25 | 
             
                      kit.dependencies.select { |g| deps.include? g.name }.each do |g|
         | 
| 27 26 | 
             
                        Gem::GemRunner.new.run(["unpack", g.name, "--version", g.version_requirements.to_s])
         | 
| 28 27 | 
             
                        mv(Dir.glob("#{g.name}*").first, g.name)
         | 
| @@ -32,7 +31,7 @@ namespace :daemon_kit do | |
| 32 31 | 
             
                      FileUtils.mv(Dir.glob("daemon-kit*").first, "daemon-kit")
         | 
| 33 32 | 
             
                    end
         | 
| 34 33 | 
             
                  rescue Exception
         | 
| 35 | 
            -
                    rm_rf "vendor/ | 
| 34 | 
            +
                    rm_rf "vendor/daemon-kit"
         | 
| 36 35 | 
             
                    raise
         | 
| 37 36 | 
             
                  end
         | 
| 38 37 | 
             
                end
         | 
| @@ -44,10 +43,9 @@ namespace :daemon_kit do | |
| 44 43 | 
             
                  commits = "http://github.com/api/v1/yaml/kennethkalmer/daemon-kit/commits/master"
         | 
| 45 44 | 
             
                  url     = "http://github.com/kennethkalmer/daemon-kit/zipball/master"
         | 
| 46 45 |  | 
| 47 | 
            -
                  rm_rf   "vendor/ | 
| 48 | 
            -
                  mkdir_p "vendor/daemon_kit"
         | 
| 46 | 
            +
                  rm_rf   "vendor/daemon-kit"
         | 
| 49 47 |  | 
| 50 | 
            -
                  chdir 'vendor | 
| 48 | 
            +
                  chdir 'vendor' do
         | 
| 51 49 | 
             
                    latest_revision = YAML.load(open(commits))["commits"].first["id"]
         | 
| 52 50 |  | 
| 53 51 | 
             
                    puts "Downloading DaemonKit from #{url}"
         | 
| @@ -120,6 +118,6 @@ namespace :daemon_kit do | |
| 120 118 | 
             
            end
         | 
| 121 119 |  | 
| 122 120 | 
             
            def copy_framework_template( *args )
         | 
| 123 | 
            -
              src_dir = File.join(DaemonKit.framework_root, ' | 
| 121 | 
            +
              src_dir = File.join(DaemonKit.framework_root, 'lib', 'generators', 'daemon_kit', 'app', 'templates')
         | 
| 124 122 | 
             
              cp File.join( src_dir, *args ), File.join( DaemonKit.root, *args )
         | 
| 125 123 | 
             
            end
         | 
    
        data/lib/daemon_kit.rb
    CHANGED
    
    | @@ -13,7 +13,7 @@ $:.unshift( File.dirname(__FILE__).to_absolute_path ) unless | |
| 13 13 | 
             
              $:.include?( File.dirname(__FILE__).to_absolute_path )
         | 
| 14 14 |  | 
| 15 15 | 
             
            module DaemonKit
         | 
| 16 | 
            -
              VERSION = '0.1. | 
| 16 | 
            +
              VERSION = '0.1.8rc1'
         | 
| 17 17 |  | 
| 18 18 | 
             
              autoload :Initializer,    'daemon_kit/initializer'
         | 
| 19 19 | 
             
              autoload :Application,    'daemon_kit/application'
         | 
| @@ -25,7 +25,7 @@ module DaemonKit | |
| 25 25 | 
             
                end
         | 
| 26 26 |  | 
| 27 27 | 
             
                def vendor_kit?
         | 
| 28 | 
            -
                  File.exists?( "#{DAEMON_ROOT}/vendor/ | 
| 28 | 
            +
                  File.exists?( "#{DAEMON_ROOT}/vendor/daemon-kit" )
         | 
| 29 29 | 
             
                end
         | 
| 30 30 | 
             
              end
         | 
| 31 31 |  | 
| @@ -38,7 +38,7 @@ module DaemonKit | |
| 38 38 |  | 
| 39 39 | 
             
              class VendorBoot < Boot
         | 
| 40 40 | 
             
                def load_initializer
         | 
| 41 | 
            -
                  require "#{DAEMON_ROOT}/vendor/ | 
| 41 | 
            +
                  require "#{DAEMON_ROOT}/vendor/daemon-kit/lib/daemon_kit/initializer"
         | 
| 42 42 | 
             
                end
         | 
| 43 43 | 
             
              end
         | 
| 44 44 |  | 
| @@ -41,6 +41,9 @@ end | |
| 41 41 | 
             
            # Hook into capistrano's events
         | 
| 42 42 | 
             
            before "deploy:update_code", "deploy:check"
         | 
| 43 43 |  | 
| 44 | 
            +
            # Setup log rotation support with every deploy (safe)
         | 
| 45 | 
            +
            #after 'deploy:symlink', 'deploy:logrotate'
         | 
| 46 | 
            +
             | 
| 44 47 | 
             
            # Create some tasks related to deployment
         | 
| 45 48 | 
             
            namespace :deploy do
         | 
| 46 49 |  | 
| @@ -50,4 +53,15 @@ namespace :deploy do | |
| 50 53 | 
             
                  puts "Current revision: " + out.chomp
         | 
| 51 54 | 
             
                end
         | 
| 52 55 | 
             
              end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              desc "Install log rotation script on server"
         | 
| 58 | 
            +
              task :logrotate do
         | 
| 59 | 
            +
                require 'erb'
         | 
| 60 | 
            +
                upload_path = "#{shared_path}/system/logrotate"
         | 
| 61 | 
            +
                template = File.read("config/deploy/logrotate.erb")
         | 
| 62 | 
            +
                file = ERB.new(template).result(binding)
         | 
| 63 | 
            +
                put file, upload_path, :mode => 0644
         | 
| 64 | 
            +
                run "if [ -e /etc/logrotate.d ]; then sudo cp #{shared_path}/system/logrotate /etc/logrotate.d/#{name}; fi"
         | 
| 65 | 
            +
              end
         | 
| 66 | 
            +
             | 
| 53 67 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: daemon-kit
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.8rc1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - kenneth.kalmer@gmail.com
         | 
| @@ -9,7 +9,7 @@ autorequire: | |
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 |  | 
| 12 | 
            -
            date: 2010- | 
| 12 | 
            +
            date: 2010-04-13 00:00:00 +02:00
         | 
| 13 13 | 
             
            default_executable: daemon-kit
         | 
| 14 14 | 
             
            dependencies: 
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -171,6 +171,7 @@ files: | |
| 171 171 | 
             
            - lib/generators/daemon_kit/capistrano/templates/Capfile
         | 
| 172 172 | 
             
            - lib/generators/daemon_kit/capistrano/templates/USAGE
         | 
| 173 173 | 
             
            - lib/generators/daemon_kit/capistrano/templates/config/deploy.rb.tt
         | 
| 174 | 
            +
            - lib/generators/daemon_kit/capistrano/templates/config/deploy/logrotate.erb
         | 
| 174 175 | 
             
            - lib/generators/daemon_kit/capistrano/templates/config/deploy/production.rb.tt
         | 
| 175 176 | 
             
            - lib/generators/daemon_kit/capistrano/templates/config/deploy/staging.rb.tt
         | 
| 176 177 | 
             
            - lib/generators/daemon_kit/capistrano/templates/config/environments/staging.rb
         |