geordi 0.1.0
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/.gitignore +5 -0
- data/Gemfile +4 -0
- data/README.md +10 -0
- data/Rakefile +2 -0
- data/bin/apache-site +2 -0
- data/bin/b +6 -0
- data/bin/dumple +56 -0
- data/bin/install-gems-remotely +11 -0
- data/bin/power-deploy +3 -0
- data/bin/power-rake +9 -0
- data/bin/remotify-local-branch +12 -0
- data/bin/remove-execute-flags +10 -0
- data/bin/shell-for +44 -0
- data/geordi.gemspec +21 -0
- metadata +89 -0
    
        data/Gemfile
    ADDED
    
    
    
        data/Rakefile
    ADDED
    
    
    
        data/bin/apache-site
    ADDED
    
    
    
        data/bin/b
    ADDED
    
    
    
        data/bin/dumple
    ADDED
    
    | @@ -0,0 +1,56 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            fail_gently = ARGV.include?("--fail-gently")
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            if ARGV.include?("-i")
         | 
| 6 | 
            +
              puts "*******************************************************"
         | 
| 7 | 
            +
              puts
         | 
| 8 | 
            +
              system("du -sh ~/dumps")
         | 
| 9 | 
            +
              puts
         | 
| 10 | 
            +
              puts "*******************************************************"
         | 
| 11 | 
            +
              exit
         | 
| 12 | 
            +
            end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            require "yaml"
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            config_path = 'config/database.yml'
         | 
| 17 | 
            +
            unless File.exist?(config_path) 
         | 
| 18 | 
            +
              if fail_gently
         | 
| 19 | 
            +
                puts "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"
         | 
| 20 | 
            +
                puts "*                                                             *"
         | 
| 21 | 
            +
                puts "*                                                             *"
         | 
| 22 | 
            +
                puts "*     Script is not called from inside a Rails project,       *"
         | 
| 23 | 
            +
                puts "*                                                             *"
         | 
| 24 | 
            +
                puts "*            THE DATABASE WILL NOT BE DUMPED.                 *"
         | 
| 25 | 
            +
                puts "*                                                             *"
         | 
| 26 | 
            +
                puts "*                                                             *"
         | 
| 27 | 
            +
                puts "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"
         | 
| 28 | 
            +
                sleep 5
         | 
| 29 | 
            +
                exit
         | 
| 30 | 
            +
              else
         | 
| 31 | 
            +
                raise "Call me from inside a Rails project."
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         | 
| 34 | 
            +
            config = YAML::load(File.open(config_path))
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            environment = ARGV.reject{ |arg| arg[0].chr == '-' }.first || 'production'
         | 
| 37 | 
            +
            config = config[environment] or raise "No production environment found. Please do `dumple [env_name]`"
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            dump_dir = "#{ENV['HOME']}/dumps"
         | 
| 40 | 
            +
            unless File.directory?(dump_dir)
         | 
| 41 | 
            +
              Dir.mkdir(dump_dir)
         | 
| 42 | 
            +
              system("chmod 700 #{dump_dir}")
         | 
| 43 | 
            +
            end
         | 
| 44 | 
            +
            dump_path = "#{dump_dir}/#{config['database']}_#{Time.now.strftime("%Y%m%d_%H%M%S")}.dump"
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            puts
         | 
| 47 | 
            +
            puts "Dumping database for environment \"#{environment}\"..."
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            system "mysqldump -u\"#{config['username']}\" -p\"#{config['password']}\" #{config['database']} -r #{dump_path}"
         | 
| 50 | 
            +
            system "chmod 600 #{dump_path}"
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            dump_size_kb = (File.size(dump_path) / 1024).round
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            puts "Dumped to #{dump_path} (#{dump_size_kb} KB)"
         | 
| 55 | 
            +
            puts
         | 
| 56 | 
            +
             | 
| @@ -0,0 +1,11 @@ | |
| 1 | 
            +
            #!/bin/sh
         | 
| 2 | 
            +
            if ls vendor/gems/*/*.gemspec > /dev/null 2>&1; then
         | 
| 3 | 
            +
              tar cf tmp/gemfiles_for_remote_install Gemfile Gemfile.lock vendor/gems/*/*.gemspec
         | 
| 4 | 
            +
            else
         | 
| 5 | 
            +
              tar cf tmp/gemfiles_for_remote_install Gemfile Gemfile.lock
         | 
| 6 | 
            +
            fi
         | 
| 7 | 
            +
            scp tmp/gemfiles_for_remote_install $1:~
         | 
| 8 | 
            +
            stty_orig=`stty -g`
         | 
| 9 | 
            +
            stty -echo
         | 
| 10 | 
            +
            ssh -t $1 "mkdir /tmp/install_gems; mv gemfiles_for_remote_install /tmp/install_gems; cd /tmp/install_gems; tar xf gemfiles_for_remote_install; bundle install; rm -rf /tmp/install_gems"
         | 
| 11 | 
            +
            stty $stty_orig
         | 
    
        data/bin/power-deploy
    ADDED
    
    
    
        data/bin/power-rake
    ADDED
    
    
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            branch = ARGV[0] or raise "Need the branch name as first argument"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            `git status`.include?('working directory clean') or raise 'Dirty working directory. Nothing was pushed.'
         | 
| 6 | 
            +
            `git checkout #{branch}`
         | 
| 7 | 
            +
            `git push origin #{branch}`
         | 
| 8 | 
            +
            `git config branch.#{branch}.remote origin`
         | 
| 9 | 
            +
            `git config branch.#{branch}.merge #{branch}`
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            puts "#{branch} is now tracking origin/#{branch}"
         | 
| 12 | 
            +
             | 
| @@ -0,0 +1,10 @@ | |
| 1 | 
            +
            #!/bin/sh
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            echo "Removing execute flags:"
         | 
| 4 | 
            +
            for pattern in *.rb *.html *.erb *.haml *.yml *.css *.sass *.rake *.png *.jpg *.gif *.pdf *.txt *.rdoc Rakefile VERSION README Capfile
         | 
| 5 | 
            +
            do
         | 
| 6 | 
            +
              echo "- $pattern"
         | 
| 7 | 
            +
              find . -name "$pattern" -exec chmod -x {} \;
         | 
| 8 | 
            +
            done
         | 
| 9 | 
            +
            echo "Done."
         | 
| 10 | 
            +
             | 
    
        data/bin/shell-for
    ADDED
    
    | @@ -0,0 +1,44 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            def quoted_text(line)
         | 
| 4 | 
            +
              line.match(/["'].*["']/).to_s.gsub(/["']/, '')
         | 
| 5 | 
            +
            end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            def read_deploy_files
         | 
| 8 | 
            +
              all_deploy_files = Dir["config/deploy/*.rb"]
         | 
| 9 | 
            +
              
         | 
| 10 | 
            +
              deploy_file = all_deploy_files.find do |file|
         | 
| 11 | 
            +
                file.match(/\/#{@stage}.rb$/)
         | 
| 12 | 
            +
              end  
         | 
| 13 | 
            +
              raise "Unknown stage: #{@stage}" unless deploy_file
         | 
| 14 | 
            +
              
         | 
| 15 | 
            +
              @specific = File.open(deploy_file).readlines
         | 
| 16 | 
            +
              @for_all = File.open("config/deploy.rb").readlines
         | 
| 17 | 
            +
            end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            def build_command
         | 
| 20 | 
            +
              path = quoted_text(@deploy_to) + "/current"
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              @command = "ssh #{quoted_text(@user)}@#{quoted_text(@server)}"
         | 
| 23 | 
            +
              @command += %( -t "cd #{path} && bash --login") unless path.match /#\{/
         | 
| 24 | 
            +
            end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            begin
         | 
| 27 | 
            +
              @stage = ARGV.shift
         | 
| 28 | 
            +
              
         | 
| 29 | 
            +
              raise "Usage: shell_for DEPLOYMENT_STAGE" unless @stage
         | 
| 30 | 
            +
              raise "Run me from inside a Rails project" unless File.exists?("config/deploy.rb")
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              read_deploy_files
         | 
| 33 | 
            +
              @user      = @specific.find{ |line| line =~ /^set :user, /}       || @for_all.find{ |line| line =~ /^set :user, / }
         | 
| 34 | 
            +
              @server    = @specific.find{ |line| line =~ /^server / }          || @for_all.find{ |line| line =~ /^server / }
         | 
| 35 | 
            +
              @deploy_to = @specific.find{ |line| line =~ /^set :deploy_to, /}  || @for_all.find{ |line| line =~ /^set :deploy_to, / }
         | 
| 36 | 
            +
              
         | 
| 37 | 
            +
              build_command
         | 
| 38 | 
            +
              
         | 
| 39 | 
            +
              exec @command
         | 
| 40 | 
            +
              
         | 
| 41 | 
            +
            rescue Exception => e
         | 
| 42 | 
            +
              $stderr.puts e.message
         | 
| 43 | 
            +
              exit 1
         | 
| 44 | 
            +
            end
         | 
    
        data/geordi.gemspec
    ADDED
    
    | @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            $:.push File.expand_path("../lib", __FILE__)
         | 
| 3 | 
            +
            require "geordi/version"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Gem::Specification.new do |s|
         | 
| 6 | 
            +
              s.name        = "geordi"
         | 
| 7 | 
            +
              s.version     = Geordi::VERSION
         | 
| 8 | 
            +
              s.platform    = Gem::Platform::RUBY
         | 
| 9 | 
            +
              s.authors     = ["Henning Koch"]
         | 
| 10 | 
            +
              s.email       = ["henning.koch@makandra.de"]
         | 
| 11 | 
            +
              s.homepage    = "http://makandra.com"
         | 
| 12 | 
            +
              s.summary     = 'Collection of command line tools used in our daily work with Ruby, Rails and Linux.'
         | 
| 13 | 
            +
              s.description = 'Collection of command line tools used in our daily work with Ruby, Rails and Linux.'
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              s.rubyforge_project = "geordi"
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              s.files         = `git ls-files`.split("\n")
         | 
| 18 | 
            +
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         | 
| 19 | 
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| 20 | 
            +
              s.require_paths = ["lib"]
         | 
| 21 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,89 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification 
         | 
| 2 | 
            +
            name: geordi
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            +
              hash: 27
         | 
| 5 | 
            +
              prerelease: false
         | 
| 6 | 
            +
              segments: 
         | 
| 7 | 
            +
              - 0
         | 
| 8 | 
            +
              - 1
         | 
| 9 | 
            +
              - 0
         | 
| 10 | 
            +
              version: 0.1.0
         | 
| 11 | 
            +
            platform: ruby
         | 
| 12 | 
            +
            authors: 
         | 
| 13 | 
            +
            - Henning Koch
         | 
| 14 | 
            +
            autorequire: 
         | 
| 15 | 
            +
            bindir: bin
         | 
| 16 | 
            +
            cert_chain: []
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            date: 2011-05-26 00:00:00 +02:00
         | 
| 19 | 
            +
            default_executable: 
         | 
| 20 | 
            +
            dependencies: []
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            description: Collection of command line tools used in our daily work with Ruby, Rails and Linux.
         | 
| 23 | 
            +
            email: 
         | 
| 24 | 
            +
            - henning.koch@makandra.de
         | 
| 25 | 
            +
            executables: 
         | 
| 26 | 
            +
            - apache-site
         | 
| 27 | 
            +
            - b
         | 
| 28 | 
            +
            - dumple
         | 
| 29 | 
            +
            - install-gems-remotely
         | 
| 30 | 
            +
            - power-deploy
         | 
| 31 | 
            +
            - power-rake
         | 
| 32 | 
            +
            - remotify-local-branch
         | 
| 33 | 
            +
            - remove-execute-flags
         | 
| 34 | 
            +
            - shell-for
         | 
| 35 | 
            +
            extensions: []
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            extra_rdoc_files: []
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            files: 
         | 
| 40 | 
            +
            - .gitignore
         | 
| 41 | 
            +
            - Gemfile
         | 
| 42 | 
            +
            - README.md
         | 
| 43 | 
            +
            - Rakefile
         | 
| 44 | 
            +
            - bin/apache-site
         | 
| 45 | 
            +
            - bin/b
         | 
| 46 | 
            +
            - bin/dumple
         | 
| 47 | 
            +
            - bin/install-gems-remotely
         | 
| 48 | 
            +
            - bin/power-deploy
         | 
| 49 | 
            +
            - bin/power-rake
         | 
| 50 | 
            +
            - bin/remotify-local-branch
         | 
| 51 | 
            +
            - bin/remove-execute-flags
         | 
| 52 | 
            +
            - bin/shell-for
         | 
| 53 | 
            +
            - geordi.gemspec
         | 
| 54 | 
            +
            has_rdoc: true
         | 
| 55 | 
            +
            homepage: http://makandra.com
         | 
| 56 | 
            +
            licenses: []
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            post_install_message: 
         | 
| 59 | 
            +
            rdoc_options: []
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            require_paths: 
         | 
| 62 | 
            +
            - lib
         | 
| 63 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         | 
| 64 | 
            +
              none: false
         | 
| 65 | 
            +
              requirements: 
         | 
| 66 | 
            +
              - - ">="
         | 
| 67 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 68 | 
            +
                  hash: 3
         | 
| 69 | 
            +
                  segments: 
         | 
| 70 | 
            +
                  - 0
         | 
| 71 | 
            +
                  version: "0"
         | 
| 72 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         | 
| 73 | 
            +
              none: false
         | 
| 74 | 
            +
              requirements: 
         | 
| 75 | 
            +
              - - ">="
         | 
| 76 | 
            +
                - !ruby/object:Gem::Version 
         | 
| 77 | 
            +
                  hash: 3
         | 
| 78 | 
            +
                  segments: 
         | 
| 79 | 
            +
                  - 0
         | 
| 80 | 
            +
                  version: "0"
         | 
| 81 | 
            +
            requirements: []
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            rubyforge_project: geordi
         | 
| 84 | 
            +
            rubygems_version: 1.3.7
         | 
| 85 | 
            +
            signing_key: 
         | 
| 86 | 
            +
            specification_version: 3
         | 
| 87 | 
            +
            summary: Collection of command line tools used in our daily work with Ruby, Rails and Linux.
         | 
| 88 | 
            +
            test_files: []
         | 
| 89 | 
            +
             |