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
|
+
|