necktie 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,12 @@
1
+ 1.0.4 (2009-11-4)
2
+ * When used with -U option and no other argument, necktie command updates the
3
+ local repo but does not run any task.
4
+ * Introduced -R option which you can use to checkout specific reference (tag,
5
+ commit, tree).
6
+ * cap necktie task broken up into separate stages, now runs deploy:web:disable
7
+ before running necktie:upgrade.
8
+ * Added syslog messages.
9
+
1
10
  1.0.3 (2009-11-2)
2
11
  * Added Necktie::Version.
3
12
  * Added gem clean to rubygems task (examples).
data/README.rdoc CHANGED
@@ -44,6 +44,7 @@ or necktie.rb), with a list of tasks. For example:
44
44
  FileList["gems/*.gem"].each do |gem|
45
45
  install_gem gem
46
46
  end
47
+ sh "gem clean"
47
48
  end
48
49
 
49
50
  desc "Setup and start Nginx"
data/example/Necktie CHANGED
@@ -10,3 +10,5 @@ task :environment do
10
10
  ps = Necktie.env == "staging" ? "\\e[0;34mSTAGE\\e[m \\w $ " : "\\e[0;31mLIVE\\e[m \\w $ "
11
11
  append profile, "PS1=\"#{ps}\"\n" unless read(profile)["PS1=\"#{ps}\""]
12
12
  end
13
+
14
+ task :default=>:app
@@ -1,4 +1,5 @@
1
1
  require "rake"
2
+ require "syslog"
2
3
 
3
4
  module Necktie
4
5
  class Application < Rake::Application #:nodoc:
@@ -9,17 +10,17 @@ module Necktie
9
10
  @rakefiles = ["Necktie", "necktie", "Necktie.rb", "necktie.rb"]
10
11
  options.nosearch = true
11
12
  options.env = "production"
13
+ @syslog = Syslog.open("necktie")
12
14
  end
13
15
 
14
16
  def run
15
17
  standard_exception_handling do
16
18
  init "necktie"
17
- puts "(#{options.env})"
18
19
  repo = File.expand_path("~/.necktie")
19
20
  if File.exist?(repo)
20
21
  Dir.chdir repo do
21
22
  puts "Pulling latest updates to #{repo} ..."
22
- sh "git pull origin #{ENV["BRANCH"] || "master"}", :verbose=>false
23
+ sh "git pull origin master", :verbose=>false
23
24
  end if options.pull
24
25
  else
25
26
  options.git_url or fail "Need to set Git URL: use --source command line option"
@@ -27,8 +28,14 @@ module Necktie
27
28
  sh "git clone #{options.git_url} #{repo.inspect}", :verbose=>false
28
29
  end
29
30
  Dir.chdir repo do
31
+ sh "git checkout #{options.ref}" if options.ref
32
+ @sha = `git rev-parse --verify HEAD --short`.strip
33
+ puts "(in #{Dir.pwd}, head is #{@sha}, environment is #{options.env})"
34
+ syslog :info, "environment is #{options.env}"
35
+
30
36
  load_rakefile
31
- top_level
37
+ top_level unless options.pull && ARGV.empty?
38
+ syslog :info, "done"
32
39
  end
33
40
  end
34
41
  end
@@ -43,6 +50,9 @@ module Necktie
43
50
  ['--source', '-S GIT_URL', "Git URL to your Necktie repository",
44
51
  lambda { |value| options.git_url = value }
45
52
  ],
53
+ ['--ref', '-R REF', "Checkout specific reference (commit, tag, tree)",
54
+ lambda { |value| options.ref = value }
55
+ ],
46
56
  ['--update', '-U', "Update .necktie directory (git pull)",
47
57
  lambda { |value| options.pull = true }
48
58
  ],
@@ -131,10 +141,27 @@ module Necktie
131
141
  load_imports
132
142
  end
133
143
 
144
+ def syslog(level, message)
145
+ @syslog.send level, "[#{@sha}] #{message.strip.gsub(/%/, '%%')}" # syslog(3) freaks on % (printf)
146
+ end
147
+
134
148
  end
135
149
 
136
150
  # Returns the environment name (set using -e command line option).
137
151
  def self.env
138
152
  Rake.application.options.env
139
153
  end
154
+
155
+ end
156
+
157
+
158
+ class Rake::Task #:nodoc:
159
+ alias :execute_without_syslog :execute
160
+ def execute(args=nil)
161
+ application.syslog :info, "execute: #{name}"
162
+ execute_without_syslog args
163
+ rescue
164
+ application.syslog :err, "#{$!.backtrace.first}: #{$!.class}: #{$!}"
165
+ raise
166
+ end
140
167
  end
@@ -1,13 +1,36 @@
1
+ # cap necktie task
1
2
  Capistrano::Configuration.instance.load do
2
- desc "Run necktie on all servers (you can use HOSTS or RAILS env vars)"
3
- task :necktie do
4
- fail "You need to set :necktie_url, <git_url>" unless necktie_url
5
- spec = Gem::Specification.load(File.expand_path("../../necktie.gemspec", File.dirname(__FILE__)))
6
- gem_spec = Gem::SourceIndex.from_installed_gems.find_name(spec.name, spec.version).last
7
- gem_file = File.join(Gem.dir, "cache", gem_spec.file_name)
8
- upload gem_file, File.basename(gem_file), :via=>:scp
9
- sudo "gem install #{File.basename(gem_file)}"
10
- tasks = ENV["ROLES"].to_s.split(",") # ROLES => task names
11
- sudo "necktie --source #{necktie_url} --update --environment #{fetch(:rails_env, "production")} #{tasks.join(" ")} --trace"
3
+ namespace :necktie do
4
+ desc "[internal] Install necktie on remote server"
5
+ task :install do
6
+ spec = Gem::Specification.load(File.expand_path("../../necktie.gemspec", File.dirname(__FILE__)))
7
+ gem_spec = Gem::SourceIndex.from_installed_gems.find_name(spec.name, spec.version).last
8
+ gem_file = File.join(Gem.dir, "cache", gem_spec.file_name)
9
+ upload gem_file, File.basename(gem_file), :via=>:scp
10
+ sudo "gem install #{File.basename(gem_file)}"
11
+ end
12
+
13
+ desc "[internal] Pull updates from Git"
14
+ task :pull do
15
+ fail "You need to set :necktie_url, <git_url>" unless necktie_url
16
+ sudo "necktie --source #{necktie_url} --update"
17
+ end
18
+
19
+ desc "[internal] Run necktie upgrade"
20
+ task :upgrade do # run necktime
21
+ tasks = ENV["ROLES"].to_s.split(",") # ROLES => task names
22
+ sudo "necktie --environment #{fetch(:rails_env, "production")} #{tasks.join(" ")}"
23
+ end
24
+
25
+ desc "Run necktie on all servers (you can use HOSTS or RAILS env vars)"
26
+ task :default do
27
+ fail "You need to set :necktie_url, <git_url>" unless necktie_url
28
+ install
29
+ pull
30
+ upgrade
31
+ end
32
+
33
+ before "necktie:upgrade", "deploy:web:disable"
34
+ after "necktie:upgrade", "deploy:web:enable"
12
35
  end
13
36
  end
data/lib/necktie.rb CHANGED
@@ -17,7 +17,10 @@ end
17
17
  module Necktie
18
18
  # Version number.
19
19
  module Version
20
- STRING = Gem::Specification.load(File.expand_path("../necktie.gemspec", File.dirname(__FILE__))).version.to_s.freeze
21
- MAJOR, MINOR, PATCH = STRING.split(".").map { |i| i.to_i }
20
+ version = Gem::Specification.load(File.expand_path("../necktie.gemspec", File.dirname(__FILE__))).version.to_s.split(".").map { |i| i.to_i }
21
+ MAJOR = version[0]
22
+ MINOR = version[1]
23
+ PATCH = version[2]
24
+ STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
22
25
  end
23
26
  end
data/necktie.gemspec CHANGED
@@ -1,17 +1,17 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "necktie"
3
- spec.version = "1.0.3"
3
+ spec.version = "1.0.4"
4
4
  spec.author = "Assaf Arkin"
5
5
  spec.email = "assaf@labnotes.org"
6
6
  spec.homepage = "http://github.com/assaf/necktie"
7
7
  spec.summary = "Dress to impress"
8
- spec.description = "Configure your servers remotely using Ruby and Git"
8
+ spec.description = "Configure your servers using Ruby and Git"
9
9
 
10
10
  spec.files = Dir["{bin,lib,vendor,example}/**/*", "CHANGELOG", "README.rdoc", "necktie.gemspec"]
11
11
  spec.executable = "necktie"
12
12
 
13
13
  spec.has_rdoc = true
14
- spec.extra_rdoc_files = 'README.rdoc', 'CHANGELOG'
15
- spec.rdoc_options = '--title', 'Necktie', '--main', 'README.rdoc',
16
- '--webcvs', 'http://github.com/assaf/necktie'
14
+ spec.extra_rdoc_files = "README.rdoc", "CHANGELOG"
15
+ spec.rdoc_options = "--title", "Necktie #{spec.version}", "--main", "README.rdoc",
16
+ "--webcvs", "http://github.com/assaf/#{spec.name}"
17
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: necktie
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Assaf Arkin
@@ -9,11 +9,11 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-02 00:00:00 -08:00
12
+ date: 2009-11-04 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description: Configure your servers remotely using Ruby and Git
16
+ description: Configure your servers using Ruby and Git
17
17
  email: assaf@labnotes.org
18
18
  executables:
19
19
  - necktie
@@ -243,8 +243,8 @@ files:
243
243
  - example/gems/unicorn-0.93.3.gem
244
244
  - example/Necktie
245
245
  - example/tasks/app.rb
246
- - example/tasks/current.rb
247
246
  - example/tasks/db.rb
247
+ - example/tasks/deploy.rb
248
248
  - CHANGELOG
249
249
  - README.rdoc
250
250
  - necktie.gemspec
@@ -255,7 +255,7 @@ licenses: []
255
255
  post_install_message:
256
256
  rdoc_options:
257
257
  - --title
258
- - Necktie
258
+ - Necktie 1.0.4
259
259
  - --main
260
260
  - README.rdoc
261
261
  - --webcvs
File without changes