tasklet 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/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 [name of plugin creator]
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Manifest ADDED
@@ -0,0 +1,17 @@
1
+ MIT-LICENSE
2
+ README
3
+ Rakefile
4
+ generators/tasklet_migration/USAGE
5
+ generators/tasklet_migration/tasklet_migration_generator.rb
6
+ generators/tasklet_migration/templates/create_tasklet_runs.rb
7
+ init.rb
8
+ install.rb
9
+ lib/tasklet.rb
10
+ lib/tasklet/tasklet.rb
11
+ lib/tasklet/tasklet_run.rb
12
+ rails/init.rb
13
+ tasks/tasklet_tasks.rake
14
+ test/tasklet_test.rb
15
+ test/test_helper.rb
16
+ uninstall.rb
17
+ Manifest
data/README ADDED
@@ -0,0 +1,15 @@
1
+ Tasklet
2
+ =======
3
+
4
+ Often when deploying a new release, some housekeeping tasks have to executed. But these tasks have to be executed only once, and ideally they are recorded somewhere, for deployments in other environments.
5
+
6
+
7
+ Example
8
+ =======
9
+
10
+ gem install tasklet
11
+ ./script generate tasklet_migration
12
+ rake db:migrate
13
+
14
+
15
+ Copyright (c) 2010 Alexander Gräfe, released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,34 @@
1
+ require 'rubygems'
2
+ require 'echoe'
3
+ require 'rake'
4
+ require 'rake/testtask'
5
+ require 'rake/rdoctask'
6
+
7
+ desc 'Default: run unit tests.'
8
+ task :default => :test
9
+
10
+ desc 'Test the tasklet plugin.'
11
+ Rake::TestTask.new(:test) do |t|
12
+ t.libs << 'lib'
13
+ t.libs << 'test'
14
+ t.pattern = 'test/**/*_test.rb'
15
+ t.verbose = true
16
+ end
17
+
18
+ desc 'Generate documentation for the tasklet plugin.'
19
+ Rake::RDocTask.new(:rdoc) do |rdoc|
20
+ rdoc.rdoc_dir = 'rdoc'
21
+ rdoc.title = 'Tasklet'
22
+ rdoc.options << '--line-numbers' << '--inline-source'
23
+ rdoc.rdoc_files.include('README')
24
+ rdoc.rdoc_files.include('lib/**/*.rb')
25
+ end
26
+
27
+ Echoe.new('tasklet', '0.1.0') do |p|
28
+ p.description = "Handle one-off maintenance tasks in a migration-like manner"
29
+ p.url = "http://github.com/rickenharp/tasklet"
30
+ p.author = "Alexander Gräfe"
31
+ p.email = "alexander.graefe@googlemail.com"
32
+ p.ignore_pattern = ["tmp/*", "script/*"]
33
+ p.development_dependencies = []
34
+ end
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Explain the generator
3
+
4
+ Example:
5
+ ./script/generate tasklet Thing
6
+
7
+ This will create:
8
+ what/will/it/create
@@ -0,0 +1,9 @@
1
+ class TaskletMigrationGenerator < Rails::Generator::Base
2
+ def manifest
3
+ record do |m|
4
+ # m.directory "lib"
5
+ # m.template 'README', "README"
6
+ m.migration_template('create_tasklet_runs.rb', 'db/migrate', :migration_file_name => 'create_tasklet_runs')
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ class CreateTaskletRuns < ActiveRecord::Migration
2
+ def self.up
3
+ create_table(:tasklet_runs, :id => false) do |t|
4
+ t.string :version
5
+ end
6
+ add_index :tasklet_runs, :version, :unique => true
7
+ end
8
+
9
+ def self.down
10
+ remove_index :tasklet_runs, :column => :version
11
+ drop_table :tasklet_runs
12
+ end
13
+ end
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ # Include hook code here
data/install.rb ADDED
@@ -0,0 +1 @@
1
+ # Install hook code here
@@ -0,0 +1,8 @@
1
+ class Tasklet
2
+ private
3
+
4
+ def rake(taskname)
5
+ Rake::Task[taskname].invoke
6
+ end
7
+
8
+ end
@@ -0,0 +1,2 @@
1
+ class TaskletRun < ActiveRecord::Base
2
+ end
data/lib/tasklet.rb ADDED
@@ -0,0 +1,2 @@
1
+ require 'tasklet/tasklet_run'
2
+ require 'tasklet/tasklet'
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'tasklet'
data/tasklet.gemspec ADDED
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{tasklet}
5
+ s.version = "0.1.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Alexander Gr\303\244fe"]
9
+ s.date = %q{2010-01-26}
10
+ s.description = %q{Handle one-off maintenance tasks in a migration-like manner}
11
+ s.email = %q{alexander.graefe@googlemail.com}
12
+ s.extra_rdoc_files = ["README", "lib/tasklet.rb", "lib/tasklet/tasklet.rb", "lib/tasklet/tasklet_run.rb", "tasks/tasklet_tasks.rake"]
13
+ s.files = ["MIT-LICENSE", "README", "Rakefile", "generators/tasklet_migration/USAGE", "generators/tasklet_migration/tasklet_migration_generator.rb", "generators/tasklet_migration/templates/create_tasklet_runs.rb", "init.rb", "install.rb", "lib/tasklet.rb", "lib/tasklet/tasklet.rb", "lib/tasklet/tasklet_run.rb", "rails/init.rb", "tasks/tasklet_tasks.rake", "test/tasklet_test.rb", "test/test_helper.rb", "uninstall.rb", "Manifest", "tasklet.gemspec"]
14
+ s.homepage = %q{http://github.com/rickenharp/tasklet}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Tasklet", "--main", "README"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{tasklet}
18
+ s.rubygems_version = %q{1.3.5}
19
+ s.summary = %q{Handle one-off maintenance tasks in a migration-like manner}
20
+ s.test_files = ["test/tasklet_test.rb", "test/test_helper.rb"]
21
+
22
+ if s.respond_to? :specification_version then
23
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
+ s.specification_version = 3
25
+
26
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
+ else
28
+ end
29
+ else
30
+ end
31
+ end
@@ -0,0 +1,38 @@
1
+ namespace :tasklet do
2
+ desc "run all outstanding tasklets"
3
+ task(:run => :environment) do
4
+ run_tasklets = TaskletRun.all.map(&:version)
5
+ tasklets = Dir.glob(File.join(RAILS_ROOT,"tasklets/[0-9]*.rb")).sort
6
+ tasklets.each do |tasklet|
7
+ basename = File.basename(tasklet)
8
+ if basename =~ /([0-9]{14})_(.*)\.rb/
9
+ timestamp = $1
10
+ classname = $2
11
+ next if run_tasklets.include?(timestamp)
12
+ require tasklet
13
+ begin
14
+ classname.classify.constantize.new.execute
15
+ TaskletRun.create(:version => timestamp)
16
+ rescue NameError => e
17
+ puts "#{basename} does not define #{classname.classify}"
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ desc "Shows outstanding tasklets"
24
+ task(:outstanding => :environment) do
25
+ puts "Outstanding tasklets:"
26
+ run_tasklets = TaskletRun.all.map(&:version)
27
+ tasklets = Dir.glob(File.join(RAILS_ROOT,"tasklets/[0-9]*.rb")).sort
28
+ tasklets.each do |tasklet|
29
+ basename = File.basename(tasklet)
30
+ if basename =~ /([0-9]{14})_(.*)\.rb/
31
+ timestamp = $1
32
+ classname = $2
33
+ next if run_tasklets.include?(timestamp)
34
+ puts basename
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class TaskletTest < ActiveSupport::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ require 'rubygems'
2
+ require 'active_support'
3
+ require 'active_support/test_case'
data/uninstall.rb ADDED
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tasklet
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - "Alexander Gr\xC3\xA4fe"
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-26 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Handle one-off maintenance tasks in a migration-like manner
17
+ email: alexander.graefe@googlemail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README
24
+ - lib/tasklet.rb
25
+ - lib/tasklet/tasklet.rb
26
+ - lib/tasklet/tasklet_run.rb
27
+ - tasks/tasklet_tasks.rake
28
+ files:
29
+ - MIT-LICENSE
30
+ - README
31
+ - Rakefile
32
+ - generators/tasklet_migration/USAGE
33
+ - generators/tasklet_migration/tasklet_migration_generator.rb
34
+ - generators/tasklet_migration/templates/create_tasklet_runs.rb
35
+ - init.rb
36
+ - install.rb
37
+ - lib/tasklet.rb
38
+ - lib/tasklet/tasklet.rb
39
+ - lib/tasklet/tasklet_run.rb
40
+ - rails/init.rb
41
+ - tasks/tasklet_tasks.rake
42
+ - test/tasklet_test.rb
43
+ - test/test_helper.rb
44
+ - uninstall.rb
45
+ - Manifest
46
+ - tasklet.gemspec
47
+ has_rdoc: true
48
+ homepage: http://github.com/rickenharp/tasklet
49
+ licenses: []
50
+
51
+ post_install_message:
52
+ rdoc_options:
53
+ - --line-numbers
54
+ - --inline-source
55
+ - --title
56
+ - Tasklet
57
+ - --main
58
+ - README
59
+ require_paths:
60
+ - lib
61
+ required_ruby_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: "0"
66
+ version:
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: "1.2"
72
+ version:
73
+ requirements: []
74
+
75
+ rubyforge_project: tasklet
76
+ rubygems_version: 1.3.5
77
+ signing_key:
78
+ specification_version: 3
79
+ summary: Handle one-off maintenance tasks in a migration-like manner
80
+ test_files:
81
+ - test/tasklet_test.rb
82
+ - test/test_helper.rb