Giter VIP home page Giter VIP logo

exsync's People

Contributors

axelson avatar chanon avatar crowdhailer avatar falood avatar formido avatar marcparadise avatar princemaple avatar skirino avatar sztheory avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

exsync's Issues

No reloading of external resources

I have a module which relies on external file.
This external file is declared as a resource.
When I change this external resource the module does not recompile.
Is it possible to get these changes picked up by exsync?

require EEx

@external_resource Path.join(__DIR__, "./templates/home_page.html.eex")
EEx.function_from_file(:defp, :home_page, Path.join(__DIR__, "./templates/home_page.html.eex"), [:greeting])

Change primary branch to main

@falood can we change the default branch of this repo to main to match many other repos (and the new default)? I don't have the permissions on this repo to make that change.

New release?

Is it possible to push a new release with all the latest improvements? I mainly want the MFA callback

Disable logger

Thanks! Awesome project, really helps me to develop inside my iex shell.

But, these logs are spamming my iex:

[debug] Defaulting to enable source monitor, set config :exsync, src_monitor: false to disable
[info] ExSync source monitor started.
[info] ExSync beam monitor started.

Can you please make a setting to disable them?

:inotifywait.find_executable/0 is undefined

I followed the instructions in the readme, ran mix deps.get, but when I run iex -S mix, I get the following:

    ** (EXIT) an exception was raised:
        ** (UndefinedFunctionError) function :inotifywait.find_executable/0 is undefined (module :inotifywait is not available)
            :inotifywait.find_executable()
            (exfswatch) lib/exfswatch.ex:19: ExFSWatch.start/2
            (kernel) application_master.erl:273: :application_master.start_it_old/4

Path deps no longer reloaded on newer elixir/otp

Likely broken on OTP 26 or Elixir 1.15

in lib/exsync/config.ex changing:

- [Mix.Project.compile_path() | dep_paths]
+ [Mix.Project.build_path]

Is a quick fix.

But ideally we need to figure out which version this breaks on and check the version (or just add build_path alongside the individual dep_paths)

UndefinedFunctionError when source code changes and saved.

Env:

config.exs

defmodule DvbUpgradeServer.Mixfile do
  use Mix.Project

  def project do
    [app: :dvb_upgrade_server,
     version: "0.0.1",
     elixir: "~> 1.0",
     build_embedded: Mix.env == :prod,
     start_permanent: Mix.env == :prod,
     deps: deps]
  end

  # Configuration for the OTP application
  #
  # Type `mix help compile.app` for more information
  def application do
    [applications: [:logger, :exsync],
     mod: {DvbUpgradeServer, []}]
  end

  # Dependencies can be Hex packages:
  #
  #   {:mydep, "~> 0.3.0"}
  #
  # Or git/path repositories:
  #
  #   {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
  #
  # Type `mix help deps` for more examples and options
  defp deps do
    [
      {:exsync, "~> 0.0.2", only: :dev}
    ]
  end
end

OS: Mac OS X 10.10 Yosemite

iex(2)> DvbUpgradeServer.Worker.get_v
** (UndefinedFunctionError) undefined function: DvbUpgradeServer.Worker.get_v/0
    (dvb_upgrade_server) DvbUpgradeServer.Worker.get_v()

Does this project work?

I couldn't get it to reload any files after adding it as a dependency and starting the :exsync application. Are there any further steps needed to have the modules reloaded when the source file changes?

Errors are swallowed during recompilation

I have a routing DSL that deliberately throws errors during the compilation step if controllers are not defined correctly. The error messages are very useful and are shown if manually calling recompile.

e.g.

iex(1)> recompile
Compiling 1 file (.ex)

== Compilation error in file lib/www.ex ==
** (RuntimeError) module WWW.HomePagezz is not loaded
    (raxx) lib/raxx/router.ex:51: anonymous fn/3 in Raxx.Router."MACRO-__using__"/2
    (elixir) lib/enum.ex:1826: Enum."-reduce/3-lists^foldl/2-0-"/3
    (raxx) expanding macro: Raxx.Router.__using__/1
    lib/www.ex:9: WWW (module)
    (elixir) expanding macro: Kernel.use/2
    lib/www.ex:9: WWW (module)
    (tokumei) expanding macro: Raxx.Blueprint.__using__/1
    lib/www.ex:9: WWW (module)

When using ExSync. There is simply no output if recompilation fails. Is there a configuration that allows me to show the same errors as I would get for calling recompile.

Saving file in Panic Nova doesn't trigger reload

When I save a file in Panic Nova, code reloading doesn't occur. No messages appear in the console and also if I add functions and try to call them, they don't exist.

If I open the same file in emacs and make those changes, everything works as expected.

Can editors bypass the fileystem notifications or intercept them for their own purposes?

Elixir 1.4.x compile warnings

Compiling 6 files (.ex)
warning: variable "self" does not exist and is being expanded to "self()", please use parentheses to remove the ambiguity or change the variable name
  lib/exsync.ex:11

warning: variable "beam_dirs" does not exist and is being expanded to "beam_dirs()", please use parentheses to remove the ambiguity or change the variable name
  lib/exsync/config.ex:9

warning: Dict.values/1 is deprecated, use the Map module for working with maps or the Keyword module for working with keyword lists
  lib/exsync/config.ex:24

warning: Dict.take/2 is deprecated, use the Map module for working with maps or the Keyword module for working with keyword lists
  lib/exsync/config.ex:23

warning: variable "app_source_dir" does not exist and is being expanded to "app_source_dir()", please use parentheses to remove the ambiguity or change the variable name
  lib/exsync/config.ex:25

warning: variable "src_dirs" does not exist and is being expanded to "src_dirs()", please use parentheses to remove the ambiguity or change the variable name
  lib/exsync/config.ex:19

ExSync is working but `register_group_leader` errors

ExSync is working fine for reloading code. But not overwriting the prompt would be nice, so when I try this:

iex(3)> ExSync.register_group_leader()
** (UndefinedFunctionError) function ExSync.register_group_leader/0 is undefined or private
    (exsync 0.2.4) ExSync.register_group_leader()

Interested in a library version of ExSync?

I think I have a use for the ExSync code where having it be an Application doesn't fit. The details are probably not interesting, but briefly: I'm writing a testing-support Phoenix localhost webapp that reloads the _build files from an independent Mix project, where the location of that project isn't known at Mix startup time (so can't be put in a config.exs file).

The ExSync code is going to work fine for this. (Thank you!) If you like, I can code my fork so that falood/exsync could get pull requests that allow it to be used as either an application or a library. If you don't think that's useful for this project, I won't. My use is, I think, very atypical if not downright weird. Producing mergeable code is more work for me, but I feel I should thank you for exsync by making the offer.

exsync on umbrella apps

Hello, I followed the instructions and running iex -S mix exsync causes the applications in my umbrella app not to start.

I managed to workaround it by adding :application.start(:exsync) on my .iex.exs (found that was better than adding the dependency to some mix.exs of the apps in the umbrella).

This has the problem that I no longer get the ExSync output on my console, but the functionality seems to be there.

Is there a better solution that I'm missing?

No recompilation errors

Hello!
I'm using it for umbrella app and don't see any recompilation errors in output. The only message I get is about reload is complete.

Why another reloader

Hi,

I was wondering why you made "Yet another reloader". It works great for me and was the first one I came across. Would you consider adding a list of alternatives to the README if this was just an experiment. or consider adding a few lines as to why its better/different to the other elixir reloaders?

Problems running exsync on umbrella projects

Hi!

I can't make exsync to work on my project. I'm using an umbrella to hold all of our projects together, and the only working situation is on one of the projects. Tried to make it work on each one of the three projects by referencing exsync on them, but that didn't worked as well...

Is umbrella projects supported?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.