class AdminModule::Tasks
Attributes
page_factory[R]
Public Class Methods
new(page_factory)
click to toggle source
# File lib/admin_module/tasks.rb, line 16 def initialize(page_factory) @page_factory = page_factory end
Public Instance Methods
create(task)
click to toggle source
# File lib/admin_module/tasks.rb, line 34 def create task task_name = assert_task_does_not_exist( extract_task_name(task) ) tasks_page .add .set_task_data(task) .save end
export(file_path)
click to toggle source
No functionality exists to DELETE tasks.
# File lib/admin_module/tasks.rb, line 64 def export file_path tasks = list export_data = {} tasks.each do |task| export_data[task] = read task end File.open(file_path, 'w') do |f| f.write export_data.to_yaml end # Explicitly return (nothing) to avoid polluting stdout (in rake task). return rescue Exception => e if e.message.include? 'No such file or directory' raise IOError, "No such directory - #{file_path}" else raise e end end
import(file_path, allow_create = false)
click to toggle source
Import task configurations into the current environment from a file.
# File lib/admin_module/tasks.rb, line 90 def import file_path, allow_create = false raise IOError, "File not found: #{file_path}" unless File.exists?(file_path) tasks = {} File.open(file_path, 'r') do |f| # Read array of task hashes. tasks = YAML.load(f) end existing_tasks = list tasks.each do |name, data| if existing_tasks.include?(name) update(data) else if allow_create create(data) else puts "Unable to create #{name}. allow_create = false" end end end # Explicitly return (nothing) to avoid polluting stdout (in rake task). return end
list()
click to toggle source
# File lib/admin_module/tasks.rb, line 30 def list tasks_page.get_tasks end
read(task)
click to toggle source
# File lib/admin_module/tasks.rb, line 43 def read task task_name = assert_task_exists( extract_task_name(task) ) tasks_page .modify( task_name ) .get_task_data end
rename(src, dest)
click to toggle source
# File lib/admin_module/tasks.rb, line 20 def rename src, dest src = assert_task_exists( extract_task_name(src) ) dest = assert_task_does_not_exist( extract_task_name(dest) ) tasks_page .modify(src) .set_name(dest) .save end
update(task)
click to toggle source
# File lib/admin_module/tasks.rb, line 51 def update task task_name = assert_task_exists( extract_task_name(task) ) tasks_page .modify( task_name ) .set_task_data(task) .save end
Private Instance Methods
assert_task_does_not_exist(task_name)
click to toggle source
# File lib/admin_module/tasks.rb, line 139 def assert_task_does_not_exist task_name if list.include? task_name fail ArgumentError.new("A task named '#{task_name}' already exists") end task_name end
assert_task_exists(task_name)
click to toggle source
# File lib/admin_module/tasks.rb, line 131 def assert_task_exists task_name unless list.include? task_name fail ArgumentError.new("A task named '#{task_name}' does not exist") end task_name end
extract_task_name(task)
click to toggle source
# File lib/admin_module/tasks.rb, line 123 def extract_task_name task task_name = if task.is_a? Hash task[:name] else String(task) end end
tasks_page()
click to toggle source
# File lib/admin_module/tasks.rb, line 119 def tasks_page page_factory.tasks_page end