`sass –watch` Not Watching

Seems that sass --watch is not actually seeing changes made to .scss files. Running the command does the initial scss-to-css conversion just fine, but doesn’t seem to actually be watching for changes.

$ sass --watch scss:css
>>> Sass is watching for changes. Press Ctrl-C to stop.
      write css/main.css
      write css/main.css.map

Also, I have to hit ⌃-C twice to stop, at which point it spits out a bunch of error messages:

$ sass --watch scss:css
>>> Sass is watching for changes. Press Ctrl-C to stop.
      write css/main.css
      write css/main.css.map
^C^C/Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/celluloid-0.16.0/lib/celluloid/proxies/cell_proxy.rb:55:in `thread': Interrupt
    from /Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/celluloid-0.16.0/lib/celluloid/actor.rb:96:in `join'
    from /Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/celluloid-0.16.0/lib/celluloid/actor_system.rb:79:in `block (2 levels) in shutdown'
    from /Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/celluloid-0.16.0/lib/celluloid/actor_system.rb:77:in `each'
    from /Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/celluloid-0.16.0/lib/celluloid/actor_system.rb:77:in `block in shutdown'
    from /Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/2.2.0/timeout.rb:88:in `block in timeout'
    from /Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/2.2.0/timeout.rb:32:in `block in catch'
    from /Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/2.2.0/timeout.rb:32:in `catch'
    from /Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/2.2.0/timeout.rb:32:in `catch'
    from /Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/2.2.0/timeout.rb:103:in `timeout'
    from /Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/celluloid-0.16.0/lib/celluloid/actor_system.rb:66:in `shutdown'
    from /Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/celluloid-0.16.0/lib/celluloid.rb:156:in `shutdown'
    from /Users/erikhansen/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/celluloid-0.16.0/lib/celluloid.rb:145:in `block in register_shutdown'

So I installed Ruby 2.3.0 (I was using 2.2.3) just to get a fresh start.

$ rbenv install 2.3.0
$ rbenv global 2.3.0

Then I installed Sass again: $ gem install sass

Then, when running sass --watch I got some new output about a [Listen warning]::

$ sass --watch scss:css
>>> Sass is watching for changes. Press Ctrl-C to stop.
      write css/main.css
      write css/main.css.map
[Listen warning]:
  Listen will be polling for changes. Learn more at https://github.com/guard/listen#polling-fallback.

Made a change to my .scss file, and it worked!

>>> Change detected to: scss/main.scss
      write css/main.css
      write css/main.css.map

Also, I only had to hit ⌃-C once to quit.

So I’m back in business, but I still want to figure out how to fix this while still using Ruby 2.2.3, just for kicks.

Another oddity: After installing Compass under my fresh Ruby 2.3.0 install, everything still worked, but when I ran the sass --watch command I no longer got the [Listen warning]: but everything worked like it should:

$ sass --watch scss:css
>>> Sass is watching for changes. Press Ctrl-C to stop.
>>> Change detected to: scss/main.scss
      write css/main.css
      write css/main.css.map

So far this isn’t a great solution. “Just blow everything away and start fresh” is basically like giving up. But if all else fails, it might work for you.