Skip to content

leandrocp/exsync

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ExSync

Yet another Elixir reloader.

System Support

ExSync deps on FileSystem

Usage

  1. Create a new application:

     mix new my_app
    
  2. Add exsync to your mix.exs dependencies:

def deps do
  [ {:exsync, "~> 0.2", only: :dev} ]
end
  1. (If runing Elixir < 1.4) Start your application the usual way, e.g., iex -S mix, then:
ExSync.start()
  1. (Alternative) To always start ExSync when available, add the following to an application's start/2:
defmodule MyApp do
  use Application

  def start(_type, _args) do
    import Supervisor.Spec, warn: false

    case Code.ensure_loaded(ExSync) do
      {:module, ExSync = mod} ->
        mod.start()
      {:error, :nofile} ->
        :ok
    end

    # ... rest of your applications start script.
  end
end

Usage for umbrella project

  1. Create an umbrella project

     mix new my_umbrella_app --umbrella
    
  2. Add exsync to your mix.exs dependencies:

def deps do
  [ {:exsync, "~> 0.2", only: :dev} ]
end
  1. start your umbrella project with exsync task

     iex -S mix exsync
    

Config

  1. add your own dirs to monitor, if you want monitor priv dir, use such config:
config :exsync, :addition_dirs, ["/priv"]
  1. add your own extensions
config :exsync, :extensions, [".erl", ".hrl", ".ex", ".tpl"]
  1. Add an MFA callback so that your code can implement special handling when files are done reloading.

Example config:

config :exsync,
  reload_timeout: 75,
  reload_callback: {MyApp.MyModule, :handle_reload, [42]}

This will call your MyApp.MyModule module after there have been no new reloads detected after 75ms. Specifically it will make a call like MyApp.MyModule.handle_reload(42) (any items you put in the list will be added as arguments to Task.start/3)

About

Yet another elixir reloader.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Elixir 100.0%