Class: DuyojiTodo::Command
- Inherits:
-
Object
- Object
- DuyojiTodo::Command
- Defined in:
- lib/duyoji_todo/command.rb,
lib/duyoji_todo/command/options.rb
Overview
コマンドラインベースの処理を行うクラスです
Defined Under Namespace
Modules: Options
Class Method Summary collapse
Instance Method Summary collapse
- #create_task(name, content) ⇒ Object
- #delete_task(id) ⇒ Object
- #execute ⇒ Object
- #find_tasks(status_name) ⇒ Object
-
#initialize(argv) ⇒ Command
constructor
A new instance of Command.
- #update_task(id, attributes) ⇒ Object
Constructor Details
#initialize(argv) ⇒ Command
Returns a new instance of Command.
15 16 17 |
# File 'lib/duyoji_todo/command.rb', line 15 def initialize(argv) @argv = argv end |
Class Method Details
.run(argv) ⇒ Object
10 11 12 |
# File 'lib/duyoji_todo/command.rb', line 10 def run(argv) new(argv).execute end |
Instance Method Details
#create_task(name, content) ⇒ Object
45 46 47 48 |
# File 'lib/duyoji_todo/command.rb', line 45 def create_task(name, content) # タスク作成時のstatusはデフォルト値が使われNOT_YETとなる Task.create!(name: name, content: content).reload end |
#delete_task(id) ⇒ Object
50 51 52 53 |
# File 'lib/duyoji_todo/command.rb', line 50 def delete_task(id) task = Task.find(id) task.destroy end |
#execute ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/duyoji_todo/command.rb', line 19 def execute = Options.parse!(@argv) sub_command = .delete(:command) #puts options DB.prepare tasks = case sub_command when 'create' create_task([:name], [:content]) when 'delete' delete_task([:id]) when 'update' update_task(.delete(:id), ) when 'list' find_tasks([:status]) end display_tasks tasks rescue => e abort "Error: #{e.}" end |
#find_tasks(status_name) ⇒ Object
66 67 68 69 70 71 72 73 74 75 |
# File 'lib/duyoji_todo/command.rb', line 66 def find_tasks(status_name) all_tasks = Task.order('created_at DESC') if status_name status = DuyojiTodo::Task::STATUS.fetch(status_name.upcase) all_tasks.status_is(status) else all_tasks end end |
#update_task(id, attributes) ⇒ Object
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/duyoji_todo/command.rb', line 55 def update_task(id, attributes) if status_name = attributes[:status] attributes[:status] = DuyojiTodo::Task::STATUS.fetch(status_name.upcase) end task = Task.find(id) task.update_attributes! attributes task.reload end |