diff --git a/README.md b/README.md index 1aad56f..4fb8a1b 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ The JavaScript for Hotwire::Livereload is installed via asset pipeline, which is 1. Add `hotwire-livereload` gem to your Gemfile: `gem 'hotwire-livereload'` 2. Run `./bin/bundle install` -3. Run `./bin/rails hotwire_livereload:install` +3. Run `./bin/rails livereload:install` ## Configuration @@ -25,6 +25,20 @@ Rails.application.configure do end ``` +## Disable livereload + +To temporarily disable livereload use: +```bash +bin/rails livereload:disable +``` + +To re-enable: +```bash +bin/rails livereload:enable +``` + +No server restart is required. Disabling is managed by `tmp/livereload-disabled.txt` file. + ## Development To get started: diff --git a/lib/hotwire/livereload.rb b/lib/hotwire/livereload.rb index 4ec58cc..61aa73e 100644 --- a/lib/hotwire/livereload.rb +++ b/lib/hotwire/livereload.rb @@ -2,5 +2,6 @@ module Hotwire module Livereload + DISABLE_FILE = "tmp/livereload-disabled.txt" end end diff --git a/lib/hotwire/livereload/engine.rb b/lib/hotwire/livereload/engine.rb index 8c928da..a1e2211 100644 --- a/lib/hotwire/livereload/engine.rb +++ b/lib/hotwire/livereload/engine.rb @@ -38,7 +38,7 @@ class Engine < ::Rails::Engine config.after_initialize do |app| if Rails.env.development? @listener = Listen.to(*app.config.hotwire_livereload.listen_paths) do |modified, added, removed| - unless File.exists?(Rails.root.join("tmp/livereload-disable.txt") + unless File.exists?(DISABLE_FILE) if (modified.any? || removed.any? || added.any?) content = { modified: modified, removed: removed, added: added } ActionCable.server.broadcast("hotwire-reload", content) diff --git a/lib/tasks/hotwire/livereload/install.rake b/lib/tasks/hotwire/livereload/install.rake deleted file mode 100644 index ce1ba46..0000000 --- a/lib/tasks/hotwire/livereload/install.rake +++ /dev/null @@ -1,6 +0,0 @@ -namespace :hotwire_livereload do - desc "Setup Hotwire Livereload" - task :install do - system "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{File.expand_path("../../../install/install.rb", __dir__)}" - end -end diff --git a/lib/tasks/livereload_tasks.rake b/lib/tasks/livereload_tasks.rake new file mode 100644 index 0000000..623a579 --- /dev/null +++ b/lib/tasks/livereload_tasks.rake @@ -0,0 +1,21 @@ +namespace :livereload do + desc "Install Hotwire::Livereload into the app" + task :install do + system "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{File.expand_path("../install/install.rb", __dir__)}" + end + + desc "Disable Hotwire::Livereload" + task :disable do + FileUtils.mkdir_p("tmp") + FileUtils.touch Hotwire::Livereload::DISABLE_FILE + puts "Livereload disabled." + end + + desc "Enable Hotwire::Livereload" + task :enable do + if File.exist?(Hotwire::Livereload::DISABLE_FILE) + File.delete Hotwire::Livereload::DISABLE_FILE + end + puts "Livereload enabled." + end +end