diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..fc01457 --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,12 @@ + + + + + sqlite.xerial + true + org.sqlite.JDBC + jdbc:sqlite:$PROJECT_DIR$/storage/development.sqlite3 + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 0000000..51559ac --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/controllers/schedules_controller.rb b/app/controllers/schedules_controller.rb index 3a29118..4390cb1 100644 --- a/app/controllers/schedules_controller.rb +++ b/app/controllers/schedules_controller.rb @@ -30,6 +30,14 @@ class SchedulesController < ApplicationController end end + def reset + Schedule.delete_all + ActiveRecord::Base.connection.execute("DELETE FROM sqlite_sequence WHERE name='schedules'") + Rails.application.load_seed + + redirect_to schedules_path, notice: "스케줄이 초기화되었습니다." + end + def schedule_edit @schedule = Schedule.order(:hour, :minute) end diff --git a/app/services/modbus/polling_service.rb b/app/services/modbus/polling_service.rb index 37fce95..1b0fe2c 100644 --- a/app/services/modbus/polling_service.rb +++ b/app/services/modbus/polling_service.rb @@ -5,10 +5,10 @@ module Modbus class PollingService class << self def start - return if defined?(@scheduler) && @scheduler.jobs.any? + return if @scheduler && @scheduler.jobs.any? puts "[#{Time.current}] Modbus polling service 시작됨 (Rufus)" - @scheduler = Rufus::Scheduler.new + @scheduler ||= Rufus::Scheduler.new @scheduler.cron "0 * * * * *" do now = Time.now @@ -22,6 +22,7 @@ module Modbus def stop if defined?(@scheduler) @scheduler.shutdown(:kill) + @scheduler = nil puts "[#{Time.current}] Modbus polling service 중지됨" else puts "[#{Time.current}] Scheduler 인스턴스 없음" @@ -29,7 +30,7 @@ module Modbus end def running? - defined?(@scheduler) && @scheduler.jobs.any? + @scheduler && @scheduler.jobs.any? end private diff --git a/app/views/schedules/schedule_edit.html.erb b/app/views/schedules/schedule_edit.html.erb index 737d0ba..8aebd07 100644 --- a/app/views/schedules/schedule_edit.html.erb +++ b/app/views/schedules/schedule_edit.html.erb @@ -39,9 +39,15 @@ <%= submit_tag "업데이트", class: "btn bg-primary" %> <% end %> +
+ <%= button_to "초기화", reset_schedules_path, + method: :post, + data: { turbo_confirm: "정말 초기화하시겠습니까? 모든 스케줄 데이터가 삭제됩니다." }, + class: "btn bg-danger" %> +
<%= button_to "추가하기", open_modals_path(type: "add_schedule"), - class: "btn btn-default", + class: "btn bg-default-slate", data: { turbo_method: :post, turbo_frame: "modals" diff --git a/config/routes.rb b/config/routes.rb index 3d06b4e..afeff1f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -15,6 +15,7 @@ Rails.application.routes.draw do resources :schedules do collection do + post "reset" get "schedule_edit" post "schedule_edit_update" end @@ -24,8 +25,6 @@ Rails.application.routes.draw do collection do post "start" post "stop" - get "schedule_edit" - post "schedule_edit_update" end end