imathis / guard-jekyll-plus

A Guard plugin for smarter Jekyll builds
MIT License
63 stars 16 forks source link

Refactor project #32

Closed e2 closed 9 years ago

e2 commented 9 years ago
imathis commented 9 years ago

:boom: That's some serious refactoring. It looks really good! I'll test it out some in the morning. Is this good to go, or still a work in progress?

e2 commented 9 years ago

@imathis - everything should work fine. The tests don't provide 100% coverage, but they are probably good enough - and the tests are green: https://travis-ci.org/guard/guard-jekyll-plus/builds/44173500.

I'm pretty much done (the goal was to use Guard::Compat to make Guard::Jekyllplus more immune to current and future internal changes in Guard). I tried to keep the functionality 100% the same, so there shouldn't be any surprises.

A few issues maybe:

But everything seems to work fine right now. They only thing I'd maybe add is coveralls/coverage - so you can see which areas aren't tested with tests, fix that and have more confidence when releasing.

Otherwise if something doesn't work - adding a test should be trivial. So that should help with contributions and further refactoring - and reduces the need to test stuff manually.

If I were you I'd notify other people with forks about the changes - I'm sure they'll have plenty of ideas for improvements and tweaks.

Either way - I'm done until I break something in Guard again. I'd probably file an issue with Jekyll so that fork() wouldn't be necessary - but I prefer Rack+Thin anyway.

bvsatyaram commented 9 years ago

+1 Start the game already!

e2 commented 9 years ago

LiveReload doesn't work with Thin on this branch.

It works when running in a separate Guard instance (using Guard groups), so I'm guessing LiveReload's EventMachine doesn't play well with fork().

This means it may be currently not possible to have "everything working" within a single Guard instance.

The only idea I have is to run Rack as a child process, and not through fork().

e2 commented 9 years ago

Also, the build method in action.rb should catch StandardError exception, because that's what Haml errors are based on, and jekyll throws what it gets.

e2 commented 9 years ago

The StandardError should also be caught in Builder::Rebuilder#update.

The real fix is here: https://github.com/jekyll/jekyll/issues/3289 (but it may take a long time before a change is released).

imathis commented 9 years ago

I'm sorry it's taking me so long to review this. I'm in the middle of working on a big release for Octopress and these are a lot of changes to digest. Do you know if these regressions due to the refactor or are they issues with being incompatible with newer versions of dependencies?

e2 commented 9 years ago

I never got guard-jekyll-plus to work completely as intended (or as I wanted), so I'm only using this branch.

These issues are nothing new:

I can't reasonably send more PRs (or add issues) until you merge this into master.

This PR isn't different from the current master besides the few points that I described.

Besides, LiveReload won't work if you have ignore /^_site/ in your Guardfile template (ignore works globally).

imathis commented 9 years ago

Looks good. On to the future :)