j-cap-recipes 0.0.17 → 0.0.18
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +12 -14
- data/lib/j-cap-recipes/tasks/database.rake +1 -0
- data/lib/j-cap-recipes/tasks/db.rake +93 -21
- data/lib/j-cap-recipes/version.rb +1 -1
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: d80bea1e89b26980f0b32a653e182c71e050aff0
         | 
| 4 | 
            +
              data.tar.gz: a8d06234ff8e44182e449171f26e193ae4d0cfa5
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f7ef723ec30da2d92f0dbd01ebcc0c2fb56be446c71e40e6156aee5066329d76eef3d069247fbddf66ba794b6093262585ab07a609039331fdf15d278eecf25c
         | 
| 7 | 
            +
              data.tar.gz: 713eebf975e826769b0dcc5808133b6f9c3633e76135c67e3832682460255d3e834f878900dd2b6440f53ff86b0c4c9fcf7b2e06f60fa7284b47fa197ad5a5d9
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,27 +1,25 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                j-cap-recipes (0.0. | 
| 4 | 
            +
                j-cap-recipes (0.0.18)
         | 
| 5 5 |  | 
| 6 6 | 
             
            GEM
         | 
| 7 7 | 
             
              remote: https://rubygems.org/
         | 
| 8 8 | 
             
              specs:
         | 
| 9 | 
            -
                capistrano (3. | 
| 9 | 
            +
                capistrano (3.4.0)
         | 
| 10 10 | 
             
                  i18n
         | 
| 11 11 | 
             
                  rake (>= 10.0.0)
         | 
| 12 | 
            -
                  sshkit ( | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 12 | 
            +
                  sshkit (~> 1.3)
         | 
| 13 | 
            +
                colorize (0.7.5)
         | 
| 14 | 
            +
                i18n (0.7.0)
         | 
| 15 | 
            +
                net-scp (1.2.1)
         | 
| 15 16 | 
             
                  net-ssh (>= 2.6.5)
         | 
| 16 | 
            -
                net-ssh (2. | 
| 17 | 
            -
                rake (10. | 
| 18 | 
            -
                sshkit (1.1 | 
| 19 | 
            -
                   | 
| 20 | 
            -
                  net- | 
| 21 | 
            -
                   | 
| 22 | 
            -
                term-ansicolor (1.2.2)
         | 
| 23 | 
            -
                  tins (~> 0.8)
         | 
| 24 | 
            -
                tins (0.12.0)
         | 
| 17 | 
            +
                net-ssh (2.9.2)
         | 
| 18 | 
            +
                rake (10.4.2)
         | 
| 19 | 
            +
                sshkit (1.7.1)
         | 
| 20 | 
            +
                  colorize (>= 0.7.0)
         | 
| 21 | 
            +
                  net-scp (>= 1.1.2)
         | 
| 22 | 
            +
                  net-ssh (>= 2.8.0)
         | 
| 25 23 |  | 
| 26 24 | 
             
            PLATFORMS
         | 
| 27 25 | 
             
              ruby
         | 
| @@ -2,10 +2,10 @@ namespace :db do | |
| 2 2 | 
             
              desc 'PG backup'
         | 
| 3 3 | 
             
              task backup: [:environment, :load_config] do
         | 
| 4 4 | 
             
                #stamp the filename
         | 
| 5 | 
            -
                 | 
| 5 | 
            +
                dateformat = ENV['date-format'] || '%Y-%m-%d_%H-%M-%S'
         | 
| 6 | 
            +
                datestamp  = Time.now.strftime(dateformat)
         | 
| 6 7 |  | 
| 7 8 | 
             
                #create backups folder
         | 
| 8 | 
            -
                backup_dir = ENV['backup-path'] || Rails.root.join('db', 'backups')
         | 
| 9 9 | 
             
                mkdir_p(backup_dir)
         | 
| 10 10 |  | 
| 11 11 | 
             
                config        = ActiveRecord::Base.connection_config
         | 
| @@ -13,13 +13,13 @@ namespace :db do | |
| 13 13 | 
             
                backup_file   = File.join(backup_dir, "#{database_name}_#{datestamp}.dump")
         | 
| 14 14 |  | 
| 15 15 | 
             
                #dump the backup and zip it up
         | 
| 16 | 
            -
                dump_command | 
| 17 | 
            -
                dump_command += postgres_auth_options(config)
         | 
| 18 | 
            -
                dump_command += " > #{backup_file}"
         | 
| 16 | 
            +
                sh dump_command(config, database_name, backup_file)
         | 
| 19 17 |  | 
| 20 | 
            -
                 | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 18 | 
            +
                latest_file_name = File.join(backup_dir, "#{database_name}_latest.dump")
         | 
| 19 | 
            +
                if File.exist? latest_file_name
         | 
| 20 | 
            +
                  rm latest_file_name
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
                safe_ln backup_file, latest_file_name
         | 
| 23 23 | 
             
              end
         | 
| 24 24 |  | 
| 25 25 | 
             
              desc 'PG restore from the last backup file'
         | 
| @@ -33,13 +33,13 @@ namespace :db do | |
| 33 33 | 
             
                execute_task!('db:drop')
         | 
| 34 34 | 
             
                execute_task!('db:create')
         | 
| 35 35 |  | 
| 36 | 
            -
                 | 
| 37 | 
            -
                 | 
| 38 | 
            -
                restore_command += ' -O -c'
         | 
| 39 | 
            -
                sh "#{restore_command} || echo 'done'"
         | 
| 36 | 
            +
                command = db_restore_command(config, database_name, backup_file)
         | 
| 37 | 
            +
                sh "#{command} || echo 'done'"
         | 
| 40 38 | 
             
              end
         | 
| 41 39 |  | 
| 42 40 | 
             
              task :kill_postgres_connections => :environment do
         | 
| 41 | 
            +
                config = ActiveRecord::Base.connection_config
         | 
| 42 | 
            +
                next if config[:adapter] != "postgresql"
         | 
| 43 43 | 
             
                db_name = ActiveRecord::Base.connection.current_database
         | 
| 44 44 | 
             
                pid_column_name = if ActiveRecord::Base.connection.send(:postgresql_version) > 90200
         | 
| 45 45 | 
             
                  'pid'
         | 
| @@ -61,17 +61,89 @@ namespace :db do | |
| 61 61 | 
             
                end
         | 
| 62 62 | 
             
              end
         | 
| 63 63 |  | 
| 64 | 
            -
             | 
| 64 | 
            +
              desc 'Clean up old dumps'
         | 
| 65 | 
            +
              task :cleanup do
         | 
| 66 | 
            +
                dumps = FileList.new(File.join(backup_dir, '*.dump')).exclude(/_latest.dump$/)
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                if keep_versions > 0 && dumps.count >= keep_versions
         | 
| 69 | 
            +
                  puts "Keep #{keep_versions} dumps"
         | 
| 70 | 
            +
                  files = (dumps - dumps.last(keep_versions))
         | 
| 71 | 
            +
                  if files.any?
         | 
| 72 | 
            +
                    files.each do |f|
         | 
| 73 | 
            +
                      rm_r f
         | 
| 74 | 
            +
                    end
         | 
| 75 | 
            +
                  end
         | 
| 76 | 
            +
                end
         | 
| 65 77 |  | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 78 | 
            +
              end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
              def backup_dir
         | 
| 81 | 
            +
                @_backup_dir ||= ENV['backup-path'] || Rails.root.join('db', 'backups')
         | 
| 82 | 
            +
              end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
              def keep_versions
         | 
| 85 | 
            +
                @_keep_versions ||= ENV['ROTATE'].to_i
         | 
| 86 | 
            +
              end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
              def postgres_dump_command(config, database_name, backup_file)
         | 
| 89 | 
            +
                result  = "#{postgres_password(config)} pg_dump #{database_name} -w -F c"
         | 
| 90 | 
            +
                result += postgres_auth_options(config)
         | 
| 91 | 
            +
                result + " > #{backup_file}"
         | 
| 92 | 
            +
              end
         | 
| 93 | 
            +
             | 
| 94 | 
            +
              def mysql_dump_command(config, database_name, backup_file)
         | 
| 95 | 
            +
                result  = "mysqldump #{database_name} "
         | 
| 96 | 
            +
                result += mysql_auth_options(config)
         | 
| 97 | 
            +
                result + " > #{backup_file}"
         | 
| 98 | 
            +
              end
         | 
| 99 | 
            +
             | 
| 100 | 
            +
              def dump_command(config, database_name, backup_file)
         | 
| 101 | 
            +
                case config[:adapter]
         | 
| 102 | 
            +
                when /mysql/
         | 
| 103 | 
            +
                  mysql_dump_command(config, database_name, backup_file)
         | 
| 104 | 
            +
                when 'postgresql', 'pg'
         | 
| 105 | 
            +
                  postgres_dump_command(config, database_name, backup_file)
         | 
| 106 | 
            +
                end
         | 
| 107 | 
            +
              end
         | 
| 108 | 
            +
             | 
| 109 | 
            +
              def db_restore_command(config, database_name, backup_file)
         | 
| 110 | 
            +
                case config[:adapter]
         | 
| 111 | 
            +
                when /mysql/
         | 
| 112 | 
            +
                  mysql_restore_command(config, database_name, backup_file)
         | 
| 113 | 
            +
                when 'postgresql', 'pg'
         | 
| 114 | 
            +
                  postgres_restore_command(config, database_name, backup_file)
         | 
| 115 | 
            +
                end
         | 
| 116 | 
            +
              end
         | 
| 117 | 
            +
             | 
| 118 | 
            +
              def postgres_restore_command(config, database_name, backup_file)
         | 
| 119 | 
            +
                result = "#{postgres_password(config)} pg_restore -d #{database_name} -F c -w #{backup_file}"
         | 
| 120 | 
            +
                result += postgres_auth_options(config)
         | 
| 121 | 
            +
                result + ' -O -c'
         | 
| 122 | 
            +
              end
         | 
| 123 | 
            +
             | 
| 124 | 
            +
              def mysql_restore_command(config, database_name, backup_file)
         | 
| 125 | 
            +
                "mysql #{database_name} #{mysql_auth_options(config)} < #{backup_file}"
         | 
| 126 | 
            +
              end
         | 
| 127 | 
            +
             | 
| 128 | 
            +
              def postgres_password(config)
         | 
| 129 | 
            +
                "PGPASSWORD='#{config[:password]}'" if config[:password].present?
         | 
| 130 | 
            +
              end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
              def postgres_auth_options(config)
         | 
| 133 | 
            +
                command_options = ''
         | 
| 134 | 
            +
                command_options += " -h #{config[:host]}" if config[:host].present?
         | 
| 135 | 
            +
                command_options += " -U #{config[:username]}" if config[:username].present?
         | 
| 136 | 
            +
                command_options
         | 
| 137 | 
            +
              end
         | 
| 138 | 
            +
             | 
| 139 | 
            +
              def mysql_auth_options(config)
         | 
| 140 | 
            +
                command_options = ''
         | 
| 141 | 
            +
                command_options += "--password='#{config[:password]}'" if config[:password].present?
         | 
| 142 | 
            +
                command_options += " -h #{config[:host]}" if config[:host].present?
         | 
| 143 | 
            +
                command_options += " -u #{config[:username]}" if config[:username].present?
         | 
| 144 | 
            +
                command_options
         | 
| 145 | 
            +
              end
         | 
| 69 146 |  | 
| 70 | 
            -
            def postgres_auth_options(config)
         | 
| 71 | 
            -
              command_options = ''
         | 
| 72 | 
            -
              command_options += " -h #{config[:hostname]}" if config[:hostname].present?
         | 
| 73 | 
            -
              command_options += " -U #{config[:username]}" if config[:username].present?
         | 
| 74 | 
            -
              command_options
         | 
| 75 147 | 
             
            end
         | 
| 76 148 |  | 
| 77 149 | 
             
            #TODO: Use setting to get S3 credentials
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: j-cap-recipes
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.18
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Michael Nikitochkin
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-03-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -130,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 130 130 | 
             
                  version: '0'
         | 
| 131 131 | 
             
            requirements: []
         | 
| 132 132 | 
             
            rubyforge_project: 
         | 
| 133 | 
            -
            rubygems_version: 2.4. | 
| 133 | 
            +
            rubygems_version: 2.4.6
         | 
| 134 134 | 
             
            signing_key: 
         | 
| 135 135 | 
             
            specification_version: 4
         | 
| 136 136 | 
             
            summary: Capistrano 3 recipes for nginx, monit, rails log, setup, unicorn
         |