after_party 1.5 → 1.6
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/lib/after_party/models/active_record/task_record.rb +5 -4
- data/lib/after_party/models/mongoid/task_record.rb +8 -7
- data/lib/after_party/models/task_recorder.rb +19 -19
- data/lib/after_party/railtie.rb +1 -2
- data/lib/generators/install/install_generator.rb +1 -1
- data/lib/generators/task/task_generator.rb +20 -9
- data/lib/generators/task/templates/deploy.txt.erb +12 -0
- data/lib/tasks/deploy_task_runner.rake +1 -1
- metadata +94 -11
- data/lib/generators/task/templates/deploy.rake +0 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4ba992ece7afc7b3d5a32af6981e2c9250efce5a
|
|
4
|
+
data.tar.gz: a3c28824c4383fa35e3d8c0053860a1545ec5356
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 088508e0d93bf7441c1f5d6a3c6746125f11e5c8d101e778aa7e97c92a116afa04c6d9524fef2c2ddcf97c8247d25dd7089f30e28900dde430c537412bd6464f
|
|
7
|
+
data.tar.gz: 74306e9dc1ae8dadb07b56a5b8a3479228ac1dc4f83b84889ecb4e092ded4da41f3585c36dfa0019362dbdcd870c1db829f6311c58143ea638dbbc9c10068007
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
module AfterParty
|
|
2
|
+
class TaskRecord < ActiveRecord::Base
|
|
3
|
+
def self.completed_task?(version)
|
|
4
|
+
all.any?{|t| t.version == version}
|
|
5
|
+
end
|
|
4
6
|
end
|
|
5
|
-
|
|
6
7
|
end
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
module AfterParty
|
|
2
|
+
class TaskRecord
|
|
3
|
+
include Mongoid::Document
|
|
4
|
+
include Mongoid::Timestamps
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
field :version, type: String
|
|
6
7
|
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
def self.completed_task?(version)
|
|
10
|
+
all.any?{|t| t.version == version}
|
|
11
|
+
end
|
|
10
12
|
end
|
|
11
|
-
|
|
12
13
|
end
|
|
13
14
|
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
+
module AfterParty
|
|
2
|
+
class TaskRecorder
|
|
3
|
+
include ActiveModel::Naming
|
|
4
|
+
attr_reader :filename, :timestamp, :task_name
|
|
1
5
|
|
|
6
|
+
FILE_MASK = File.join(Rails.root, "lib/tasks/deployment/*.rake")
|
|
2
7
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
8
|
+
def self.pending_files
|
|
9
|
+
Dir[FILE_MASK].collect{ |f| TaskRecorder.new(f) }.select{ |f| f.pending? }.sort{ |x,y| x.timestamp <=> y.timestamp }
|
|
10
|
+
end
|
|
6
11
|
|
|
7
|
-
|
|
12
|
+
def initialize(filename='')
|
|
13
|
+
@filename = filename
|
|
14
|
+
parse_filename
|
|
15
|
+
end
|
|
8
16
|
|
|
9
|
-
|
|
10
|
-
Dir[FILE_MASK].collect{ |f| TaskRecorder.new(f) }.select{ |f| f.pending? }.sort{ |x,y| x.timestamp <=> y.timestamp }
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def initialize(filename='')
|
|
14
|
-
@filename = filename
|
|
15
|
-
parse_filename
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def pending?
|
|
17
|
+
def pending?
|
|
19
18
|
timestamp && !TaskRecord.completed_task?(timestamp)
|
|
20
|
-
|
|
19
|
+
end
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
def parse_filename
|
|
22
|
+
/(\d+)_(.+)\.rake/.match(Pathname(@filename).basename.to_s)
|
|
23
|
+
@timestamp = $1
|
|
24
|
+
@task_name = $2
|
|
25
|
+
end
|
|
26
26
|
end
|
|
27
27
|
end
|
data/lib/after_party/railtie.rb
CHANGED
|
@@ -1,27 +1,38 @@
|
|
|
1
1
|
require 'date'
|
|
2
|
+
|
|
2
3
|
module AfterParty
|
|
3
4
|
module Generators
|
|
4
5
|
class TaskGenerator < Rails::Generators::Base
|
|
5
|
-
source_root
|
|
6
|
-
argument
|
|
7
|
-
class_option
|
|
6
|
+
source_root(File.expand_path('../templates', __FILE__))
|
|
7
|
+
argument(:name, type: :string)
|
|
8
|
+
class_option(
|
|
9
|
+
:description,
|
|
10
|
+
type: :string,
|
|
11
|
+
description: 'Include a description'
|
|
12
|
+
)
|
|
8
13
|
|
|
9
14
|
def copy_deploy_task
|
|
10
|
-
template
|
|
15
|
+
template(
|
|
16
|
+
'deploy.txt.erb',
|
|
17
|
+
"lib/tasks/deployment/#{timestamp}_#{file_name}.rake"
|
|
18
|
+
)
|
|
11
19
|
end
|
|
12
20
|
|
|
13
21
|
private
|
|
22
|
+
|
|
14
23
|
def file_name
|
|
15
24
|
name.underscore
|
|
16
25
|
end
|
|
17
26
|
|
|
18
27
|
def task_description
|
|
19
|
-
|
|
28
|
+
line = 'Deployment task: '
|
|
29
|
+
return line + file_name if options.description.blank?
|
|
30
|
+
line + options.description
|
|
20
31
|
end
|
|
21
32
|
|
|
22
33
|
def timestamp
|
|
23
|
-
@timestamp ||= Time.now.utc.strftime(
|
|
34
|
+
@timestamp ||= Time.now.utc.strftime('%Y%m%d%H%M%S')
|
|
24
35
|
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
36
|
+
end # class TaskGenerator
|
|
37
|
+
end # module Generators
|
|
38
|
+
end # module AfterParty
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
namespace :after_party do
|
|
2
|
+
desc '<%= task_description %>'
|
|
3
|
+
task <%= file_name %>: :environment do
|
|
4
|
+
puts "Running deploy task '<%= file_name %>'"
|
|
5
|
+
|
|
6
|
+
# Put your task implementation HERE.
|
|
7
|
+
|
|
8
|
+
# Update task as completed. If you remove the line below, the task will
|
|
9
|
+
# run with every deploy (or every time you call after_party:run).
|
|
10
|
+
AfterParty::TaskRecord.create version: '<%= timestamp %>'
|
|
11
|
+
end # task :<%= file_name %>
|
|
12
|
+
end # namespace :after_party
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
namespace :after_party do
|
|
2
2
|
desc "runs (in order) all pending after_party deployment tasks, if they have not run yet against the current db."
|
|
3
3
|
task :run => :environment do
|
|
4
|
-
tasks = TaskRecorder.pending_files.map {|f| "after_party:#{f.task_name}"}
|
|
4
|
+
tasks = AfterParty::TaskRecorder.pending_files.map {|f| "after_party:#{f.task_name}"}
|
|
5
5
|
|
|
6
6
|
tasks.each {|t| Rake::Task[t].invoke}
|
|
7
7
|
|
metadata
CHANGED
|
@@ -1,15 +1,99 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: after_party
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '1.
|
|
4
|
+
version: '1.6'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Steve Mitchell
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
12
|
-
dependencies:
|
|
11
|
+
date: 2015-10-01 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: activerecord
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rspec
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rspec-rails
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '2.0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '2.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: generator_spec
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: factory_girl_rails
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: sqlite3
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
13
97
|
description: Automated post-deploy tasks for Ruby/Rails. Your deployment is the party.
|
|
14
98
|
This is the after party
|
|
15
99
|
email: thestevemitchell@gmail.com
|
|
@@ -17,20 +101,20 @@ executables: []
|
|
|
17
101
|
extensions: []
|
|
18
102
|
extra_rdoc_files: []
|
|
19
103
|
files:
|
|
104
|
+
- lib/after_party.rb
|
|
20
105
|
- lib/after_party/active_record.rb
|
|
21
106
|
- lib/after_party/models/active_record/task_record.rb
|
|
22
107
|
- lib/after_party/models/mongoid/task_record.rb
|
|
23
108
|
- lib/after_party/models/task_recorder.rb
|
|
24
109
|
- lib/after_party/mongoid.rb
|
|
25
110
|
- lib/after_party/railtie.rb
|
|
26
|
-
- lib/
|
|
111
|
+
- lib/generators/install/USAGE
|
|
27
112
|
- lib/generators/install/install_generator.rb
|
|
28
113
|
- lib/generators/install/templates/after_party.rb
|
|
29
114
|
- lib/generators/install/templates/migration.rb
|
|
30
|
-
- lib/generators/install/USAGE
|
|
31
|
-
- lib/generators/task/task_generator.rb
|
|
32
|
-
- lib/generators/task/templates/deploy.rake
|
|
33
115
|
- lib/generators/task/USAGE
|
|
116
|
+
- lib/generators/task/task_generator.rb
|
|
117
|
+
- lib/generators/task/templates/deploy.txt.erb
|
|
34
118
|
- lib/tasks/deploy_task_runner.rake
|
|
35
119
|
homepage: http://github.com/theSteveMitchell/after_party
|
|
36
120
|
licenses:
|
|
@@ -42,20 +126,19 @@ require_paths:
|
|
|
42
126
|
- lib
|
|
43
127
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
44
128
|
requirements:
|
|
45
|
-
- -
|
|
129
|
+
- - ">="
|
|
46
130
|
- !ruby/object:Gem::Version
|
|
47
131
|
version: '0'
|
|
48
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
49
133
|
requirements:
|
|
50
|
-
- -
|
|
134
|
+
- - ">="
|
|
51
135
|
- !ruby/object:Gem::Version
|
|
52
136
|
version: '0'
|
|
53
137
|
requirements: []
|
|
54
138
|
rubyforge_project:
|
|
55
|
-
rubygems_version: 2.
|
|
139
|
+
rubygems_version: 2.4.6
|
|
56
140
|
signing_key:
|
|
57
141
|
specification_version: 4
|
|
58
142
|
summary: A rails engine that manages deploy tasks and versions using activeRecord
|
|
59
143
|
or mongoid
|
|
60
144
|
test_files: []
|
|
61
|
-
has_rdoc:
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
namespace :after_party do
|
|
2
|
-
|
|
3
|
-
desc "<%= task_description %>"
|
|
4
|
-
task :<%= file_name %> => :environment do
|
|
5
|
-
Dir[Rails.root.join("lib/after_party/*.rb")].each {|f| require f}
|
|
6
|
-
puts "running deploy task '<%= file_name %>'"
|
|
7
|
-
|
|
8
|
-
# put your task implementation here
|
|
9
|
-
|
|
10
|
-
# update task as completed. If you remove the line below, the task will run with every deploy (or every time you call after_party:run)
|
|
11
|
-
TaskRecord.create :version => '<%= timestamp %>'
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
end
|