Stimulus Reflex with Guardfile

Build realtime, reactive applications in Rails with Stimulus Reflex
Icons/chart bar
Used 18 times
Created by
J Julian Rubisch

Usage
This Railsbyte assumes that Rack::LiveReload is already in place.
You can check this Railsbyte to get started: https://railsbytes.com/public/templates/x7msEo

Run this command in your Rails app directory in the terminal:

rails app:template LOCATION="https://railsbytes.com/script/zJosLN"
Template Source

Review the code before running this template on your machine.

run 'bundle add stimulus_reflex'
run 'bundle'
run 'rails stimulus_reflex:install'


file 'Guardfile', <<-'CODE'
  # A sample Guardfile
  # More info at https://github.com/guard/guard#readme
  
  ## Uncomment and set this to only include directories you want to watch
  # directories %w(app lib config test spec features) \
  #  .select{|d| Dir.exist?(d) ? d : UI.warning("Directory #{d} does not exist")}
  
  ## Note: if you are using the `directories` clause above and you are not
  ## watching the project directory ('.'), then you will want to move
  ## the Guardfile to a watched dir and symlink it back, e.g.
  #
  #  $ mkdir config
  #  $ mv Guardfile config/
  #  $ ln -s config/Guardfile .
  #
  # and, you'll have to watch "config/Guardfile" instead of "Guardfile"

  guard "livereload" do
    extensions = {
      css: :css,
      scss: :css,
      sass: :css,
      js: :js,
      coffee: :js,
      html: :html,
      png: :png,
      gif: :gif,
      jpg: :jpg,
      jpeg: :jpeg,
      # less: :less, # uncomment if you want LESS stylesheets done in browser
    }

    rails_view_exts = %w[erb haml slim]

    # file types LiveReload may optimize refresh for
    compiled_exts = extensions.values.uniq
    watch(%r{public/.+\.(#{compiled_exts * '|'})})
  
    extensions.each do |ext, type|
      watch(%r{
            (?:app|vendor)
            (?:/assets/\w+/(?<path>[^.]+) # path+base without extension
             (?<ext>\.#{ext})) # matching extension (must be first encountered)
            (?:\.\w+|$) # other extensions
            }x) do |m|
        path = m[1]
        "/assets/#{path}.#{type}"
      end
    end

    # file needing a full reload of the page anyway
    watch(%r{app/views/.+\.(#{rails_view_exts * '|'})$})
    watch(%r{app/components/.+\.(#{rails_view_exts * '|'})$})
    watch(%r{app/helpers/.+\.rb})
    watch(%r{app/reflexes/.+\.rb})
    watch(%r{config/locales/.+\.yml})
  end
CODE
Comments

Sign up or Login to leave a comment.