dvdplm-taskr 0.3.1
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/CHANGELOG.txt +1 -0
- data/GPLv3-LICENSE.txt +674 -0
- data/History.txt +50 -0
- data/Manifest.txt +34 -0
- data/README.txt +27 -0
- data/Rakefile +85 -0
- data/bin/taskr +35 -0
- data/bin/taskr-ctl +32 -0
- data/config.example.yml +176 -0
- data/examples/active_resource_client_example.rb +46 -0
- data/examples/php_client_example.php +125 -0
- data/lib/public/prototype.js +3271 -0
- data/lib/public/taskr.css +45 -0
- data/lib/taskr.rb +97 -0
- data/lib/taskr/actions.rb +318 -0
- data/lib/taskr/controllers.rb +338 -0
- data/lib/taskr/environment.rb +48 -0
- data/lib/taskr/helpers.rb +79 -0
- data/lib/taskr/models.rb +370 -0
- data/lib/taskr/version.rb +9 -0
- data/lib/taskr/views.rb +455 -0
- data/setup.rb +1585 -0
- data/taskr4rails/LICENSE.txt +504 -0
- data/taskr4rails/README +31 -0
- data/taskr4rails/Rakefile +22 -0
- data/taskr4rails/init.rb +1 -0
- data/taskr4rails/install.rb +26 -0
- data/taskr4rails/lib/taskr4rails_controller.rb +76 -0
- data/taskr4rails/tasks/taskr4rails_tasks.rake +4 -0
- data/taskr4rails/test/taskr4rails_test.rb +8 -0
- data/taskr4rails/uninstall.rb +1 -0
- data/test.rb +3 -0
- data/test/taskr_test.rb +11 -0
- data/test/test_helper.rb +2 -0
- metadata +140 -0
data/taskr4rails/README
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
= Taskr4rails
|
2
|
+
|
3
|
+
Taskr4rails makes it possible for the Taskr scheduler to execute arbitrary
|
4
|
+
code on a running Rails server.
|
5
|
+
|
6
|
+
Please see the Taskr4rails wiki page for more information:
|
7
|
+
|
8
|
+
http://code.google.com/p/ruby-taskr/wiki/Taskr4rails
|
9
|
+
|
10
|
+
For general info on the Taskr's RESTful scheduling service, please see:
|
11
|
+
|
12
|
+
http://code.google.com/p/ruby-taskr/
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
== LICENSE
|
17
|
+
|
18
|
+
Taskr4rails is free software; you can redistribute it and/or modify
|
19
|
+
it under the terms of the GNU Lesser General Public License as published
|
20
|
+
by the Free Software Foundation; either version 2 of the License, or
|
21
|
+
(at your option) any later version.
|
22
|
+
|
23
|
+
Taskr4rails is distributed in the hope that it will be useful,
|
24
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
25
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
26
|
+
GNU General Public License for more details.
|
27
|
+
|
28
|
+
You should have received a copy of the GNU Lesser General Public License
|
29
|
+
along with Taskr4rails; if not, write to the Free Software
|
30
|
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
31
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
|
5
|
+
desc 'Default: run unit tests.'
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc 'Test the taskr4rails plugin.'
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
10
|
+
t.libs << 'lib'
|
11
|
+
t.pattern = 'test/**/*_test.rb'
|
12
|
+
t.verbose = true
|
13
|
+
end
|
14
|
+
|
15
|
+
desc 'Generate documentation for the taskr4rails plugin.'
|
16
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
17
|
+
rdoc.rdoc_dir = 'rdoc'
|
18
|
+
rdoc.title = 'Taskr4rails'
|
19
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
20
|
+
rdoc.rdoc_files.include('README')
|
21
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
22
|
+
end
|
data/taskr4rails/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'taskr4rails_controller'
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Add the necessary route to routes.rb
|
2
|
+
|
3
|
+
puts "Adding taskr4rails route to your routes.rb file..."
|
4
|
+
|
5
|
+
routes_file = File.expand_path("#{RAILS_ROOT}/config/routes.rb")
|
6
|
+
|
7
|
+
routes = IO.read(routes_file)
|
8
|
+
find = "ActionController::Routing::Routes.draw do |map|"
|
9
|
+
idx = routes.index(find)
|
10
|
+
|
11
|
+
unless idx
|
12
|
+
$stderr.puts "Couldn't add taskr4rails route. You will have to do this manually."
|
13
|
+
exit
|
14
|
+
end
|
15
|
+
|
16
|
+
File.open(routes_file, "w") do |io|
|
17
|
+
loc = idx + find.length
|
18
|
+
|
19
|
+
ins = %{ }+$/+$/+
|
20
|
+
%{ # route automatically added by taskr4rails plugin}+$/+
|
21
|
+
%{ map.taskr4rails "taskr4rails", :controller => 'taskr4rails', :action => 'execute'}+$/+$/
|
22
|
+
|
23
|
+
routes.insert(loc, ins)
|
24
|
+
|
25
|
+
io.write(routes)
|
26
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
class Taskr4railsController < ActionController::Base
|
2
|
+
|
3
|
+
def execute
|
4
|
+
unless Object.const_defined?("TASKR4RAILS_AUTH")
|
5
|
+
render :text => "The taskr4rails receiver cannot be used until TASKR4RAILS_AUTH is defined. See http://code.google.com/p/ruby-taskr/wiki/Taskr4rails for help.",
|
6
|
+
:status => 500
|
7
|
+
return false
|
8
|
+
end
|
9
|
+
|
10
|
+
unless request.post?
|
11
|
+
render :text => "This is the taskr4rails receiver. It responds only to POST requests.",
|
12
|
+
:status => 405
|
13
|
+
return false
|
14
|
+
end
|
15
|
+
|
16
|
+
if Object.const_defined?("TASKR4RAILS_ALLOWED_HOSTS")
|
17
|
+
ok = TASKR4RAILS_ALLOWED_HOSTS.any? do |h|
|
18
|
+
if h.kind_of? Regexp
|
19
|
+
h =~ request.remote_addr
|
20
|
+
else
|
21
|
+
h == request.remote_addr
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
unless ok
|
26
|
+
render :text => "Remote address is not in the list of permitted hosts.",
|
27
|
+
:status => 403
|
28
|
+
return false
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
unless params[:auth] == TASKR4RAILS_AUTH
|
33
|
+
render :text => "Invalid auth password.",
|
34
|
+
:status => 401
|
35
|
+
return false
|
36
|
+
end
|
37
|
+
|
38
|
+
io = StringIO.new
|
39
|
+
prev_stdout, prev_stderr = $stdout, $stderr
|
40
|
+
$stdout = io
|
41
|
+
$stderr = io
|
42
|
+
err = false # start off assuming there's no error
|
43
|
+
begin
|
44
|
+
if !params[:dont_wait].blank? && params[:dont_wait] != 0 && params[:dont_wait] != '0'
|
45
|
+
puts "Task #{params[:task_name].inspect} will be forked to its own process because the 'dont_wait' parameter was set to true."
|
46
|
+
|
47
|
+
# Monkey-patch Mongrel to not remove its pid file in the child
|
48
|
+
# See: http://geekblog.vodpod.com/?p=26
|
49
|
+
require 'mongrel'
|
50
|
+
Mongrel::Configurator.class_eval("def remove_pid_file; puts 'child no-op'; end")
|
51
|
+
|
52
|
+
pid = fork do
|
53
|
+
RAILS_DEFAULT_LOGGER.debug("*** Taskr4Rails -- Executing task #{params[:task_name].inspect} with Ruby code: #{params[:ruby_code]}")
|
54
|
+
eval(params[:ruby_code])
|
55
|
+
end
|
56
|
+
|
57
|
+
RAILS_DEFAULT_LOGGER.debug("*** Taskr4Rails -- Task #{params[:task_name].inspect} is being forked into its own thread.")
|
58
|
+
|
59
|
+
Process.detach(pid)
|
60
|
+
else
|
61
|
+
RAILS_DEFAULT_LOGGER.debug("*** Taskr4Rails -- Executing task #{params[:task_name].inspect} with Ruby code: #{params[:ruby_code]}")
|
62
|
+
RAILS_DEFAULT_LOGGER.debug("*** Taskr4Rails -- Waiting for task #{params[:task_name].inspect} to complete.")
|
63
|
+
eval(params[:ruby_code])
|
64
|
+
end
|
65
|
+
rescue => e
|
66
|
+
puts "#{e.class}: #{e}\n\nBACKTRACE:\n#{e.backtrace.join("\n")}"
|
67
|
+
err = true
|
68
|
+
end
|
69
|
+
$stdout = prev_stdout
|
70
|
+
$stderr = prev_stderr
|
71
|
+
output = io.string
|
72
|
+
|
73
|
+
render :text => output, :status => (err ? 500 : 200)
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# Uninstall hook code here
|
data/test.rb
ADDED
data/test/taskr_test.rb
ADDED
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dvdplm-taskr
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Matt Zukowski
|
8
|
+
- David Palm
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2008-08-11 00:00:00 -07:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: picnic
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ~>
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.6.4
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: reststop
|
27
|
+
version_requirement:
|
28
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.3.0
|
33
|
+
version:
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: restr
|
36
|
+
version_requirement:
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ~>
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 0.4.0
|
42
|
+
version:
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: rufus-scheduler
|
45
|
+
version_requirement:
|
46
|
+
version_requirements: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ~>
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 1.0.7
|
51
|
+
version:
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
name: hoe
|
54
|
+
version_requirement:
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 1.7.0
|
60
|
+
version:
|
61
|
+
description: cron-like scheduler service with a RESTful interface
|
62
|
+
email:
|
63
|
+
- matt at roughest dot net
|
64
|
+
- dvd plm on googles free email service
|
65
|
+
executables:
|
66
|
+
- taskr
|
67
|
+
- taskr-ctl
|
68
|
+
extensions: []
|
69
|
+
|
70
|
+
extra_rdoc_files:
|
71
|
+
- CHANGELOG.txt
|
72
|
+
- GPLv3-LICENSE.txt
|
73
|
+
- History.txt
|
74
|
+
- Manifest.txt
|
75
|
+
- README.txt
|
76
|
+
- taskr4rails/LICENSE.txt
|
77
|
+
files:
|
78
|
+
- CHANGELOG.txt
|
79
|
+
- GPLv3-LICENSE.txt
|
80
|
+
- History.txt
|
81
|
+
- Manifest.txt
|
82
|
+
- README.txt
|
83
|
+
- Rakefile
|
84
|
+
- bin/taskr
|
85
|
+
- bin/taskr-ctl
|
86
|
+
- config.example.yml
|
87
|
+
- examples/active_resource_client_example.rb
|
88
|
+
- examples/php_client_example.php
|
89
|
+
- lib/public/prototype.js
|
90
|
+
- lib/public/taskr.css
|
91
|
+
- lib/taskr.rb
|
92
|
+
- lib/taskr/actions.rb
|
93
|
+
- lib/taskr/controllers.rb
|
94
|
+
- lib/taskr/environment.rb
|
95
|
+
- lib/taskr/helpers.rb
|
96
|
+
- lib/taskr/models.rb
|
97
|
+
- lib/taskr/version.rb
|
98
|
+
- lib/taskr/views.rb
|
99
|
+
- setup.rb
|
100
|
+
- taskr4rails/LICENSE.txt
|
101
|
+
- taskr4rails/README
|
102
|
+
- taskr4rails/Rakefile
|
103
|
+
- taskr4rails/init.rb
|
104
|
+
- taskr4rails/install.rb
|
105
|
+
- taskr4rails/lib/taskr4rails_controller.rb
|
106
|
+
- taskr4rails/tasks/taskr4rails_tasks.rake
|
107
|
+
- taskr4rails/test/taskr4rails_test.rb
|
108
|
+
- taskr4rails/uninstall.rb
|
109
|
+
- test.rb
|
110
|
+
- test/taskr_test.rb
|
111
|
+
- test/test_helper.rb
|
112
|
+
has_rdoc: true
|
113
|
+
homepage: http://taskr.rubyforge.org
|
114
|
+
post_install_message:
|
115
|
+
rdoc_options:
|
116
|
+
- --main
|
117
|
+
- README.txt
|
118
|
+
require_paths:
|
119
|
+
- lib
|
120
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: "0"
|
125
|
+
version:
|
126
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: "0"
|
131
|
+
version:
|
132
|
+
requirements: []
|
133
|
+
|
134
|
+
rubyforge_project: taskr
|
135
|
+
rubygems_version: 1.2.0
|
136
|
+
signing_key:
|
137
|
+
specification_version: 2
|
138
|
+
summary: cron-like scheduler service with a RESTful interface
|
139
|
+
test_files:
|
140
|
+
- test/taskr_test.rb
|