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.
@@ -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
@@ -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,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :taskr4rails do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,8 @@
1
+ require 'test/unit'
2
+
3
+ class Taskr4railsTest < Test::Unit::TestCase
4
+ # Replace this with your real tests.
5
+ def test_this_plugin
6
+ flunk
7
+ end
8
+ end
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
data/test.rb ADDED
@@ -0,0 +1,3 @@
1
+ require 'rubygems'
2
+ require 'active_support'
3
+
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TaskrTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ end
7
+
8
+ def test_truth
9
+ assert true
10
+ end
11
+ end
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/taskr'
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