alexch / rerun Goto Github PK
View Code? Open in Web Editor NEWRestarts an app when the filesystem changes. Uses growl and FSEventStream if on OS X.
License: Other
Restarts an app when the filesystem changes. Uses growl and FSEventStream if on OS X.
License: Other
...and not when running rerun
.
--run-on-start
or something like that.
I'm trying to get rerun to pick up changes to my .env
file, used with Foreman. Restarting my server when code changes is working just fine, but ideally I'd like to have a workflow where I can change environment vars in .env
and have the app auto-reload with new configuration.
I see that this is a deliberate built-in feature of the file globbing implementation. Turning this off could be a switch (e.g. --no-ignore-dot
) or perhaps an implementation of the exclude option #24 could have leading dots, etc. as the default value, which could then be overridden.
I'm happy to give a shot at implementing this myself. Just wondering if it's already in progress or if you're opposed to the idea.
I've got a projects folder with a layout like:
Projects/
─ rails_admin/
─ api-project/
My api-project directory contains a standard rails project, and rails_admin is a fork of the rails_admin gem that I work on locally, and that I include via path sometimes in my Gemfile.
I think it'd be really cool if I could essentially do:
bundle exec rerun --background --dir app,lib --dir ../rails_admin/app --dir ../rails_admin/lib -- bundle exec rails s -p 3002 -P tmp/pids/admin.pid -e development_admin
... while inside the api-project folder, so that whenever I make changes to my local copy of the rails_admin gem, my rails server gets restarted.
I attempted to do this by starting my server via rerun with the above command, but it doesn't seem to be working in the way I'd hope it might, i.e., if I edit a file within the rails_admin directory that it ought to restart the server. I'm not sure why this wouldn't work, and I assume I'm running into a fairly rare and unintended use-case. But I guess it doesn't hurt to ask– is there any obvious thing I might simply be doing wrong or missing? I'm not very familiar with how this filesystem monitoring stuff works, but I'd be glad to try to help implement this feature if there's not perhaps some obvious reason why it's technically unfeasible.
Thanks!
Nathanaels-MacBook-Pro:resizer-web nathanael$ bundle exec rerun --dir '.' --pattern "**/*.{rb,slim,js,yml,css,less,scss,sass,erb,html,htmf,haml,ru,haml,md,mdown,markdown}" -- thin start --debug --port=4001
/Users/nathanael/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/bundler/gems/rerun-31d6a11b5269/lib/rerun/options.rb:25:in `block in parse': undefined method `version' for nil:NilClass (NoMethodError)
from /Users/nathanael/.rbenv/versions/1.9.3-p392/lib/ruby/1.9.1/optparse.rb:882:in `initialize'
from /Users/nathanael/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/bundler/gems/rerun-31d6a11b5269/lib/rerun/options.rb:19:in `new'
from /Users/nathanael/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/bundler/gems/rerun-31d6a11b5269/lib/rerun/options.rb:19:in `parse'
from /Users/nathanael/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/bundler/gems/rerun-31d6a11b5269/bin/rerun:10:in `<top (required)>'
from /Users/nathanael/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/bin/rerun:23:in `load'
from /Users/nathanael/.rbenv/versions/1.9.3-p392/lib/ruby/gems/1.9.1/bin/rerun:23:in `<main>'
Hey Alex,
I know you said monitoring other files is on it's way but is there an easy way to have it monitor other files as well? Say, .erb files?
I noticed that Runner#new take a string command to pass to exec
. Maybe it's a good idea let the Runner to manage also a Proc or block, so we can trigger pure ruby code instead of a shell command. Isn't it?
Web apps can take a few seconds to startup. For these apps, when used with rerun, the developer experience isn't great -- after making a change, the server will be down for a few seconds as rerun restarts it. This is annoying for workflows where you're immediately running integration tests after a change or previewing the changes in a browser window right away.
What I'll probably try in the short term is to write a daemon which does some initialization work (like requiring expensive gems) and then fork the webapp. I'll then have rerun send that script signals when files change which will cause a refork.
I don't know of a good solution that fits within the clean scope of rerun, but I wanted to see if you had any ideas. It would be nice if rerun provided some assistance solving this problem, like allowing you to specify a pre-fork and post-fork script (assuming they're both in Ruby).
if possible, detect when the server has not only launched but is listening to the port and ready to accept requests
this may require some config.ru snooping or CL params to figure out what port to check
I try to restart webrick whenever an important file changes. This is the output:
=> Booting WEBrick
=> Rails 4.0.3 application starting in development on http://0.0.0.0:3001
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2014-03-19 09:38:13] INFO WEBrick 1.3.1
[2014-03-19 09:38:13] INFO ruby 2.1.0 (2013-12-25) [x86_64-darwin12.0]
[2014-03-19 09:38:13] INFO WEBrick::HTTPServer#start: pid=9912 port=3001
r09:38:31 [rerun] Restarting
09:38:31 [rerun] Sending signal TERM to 9912
[2014-03-19 09:38:31] FATAL SignalException: SIGTERM
/Users/josh/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/webrick/server.rb:170:in `select'
/Users/josh/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/webrick/server.rb:170:in `block in start'
/Users/josh/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/webrick/server.rb:32:in `start'
/Users/josh/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/webrick/server.rb:160:in `start'
/Users/josh/.rvm/gems/ruby-2.1.0@base/gems/rack-1.5.2/lib/rack/handler/webrick.rb:14:in `run'
/Users/josh/.rvm/gems/ruby-2.1.0@base/gems/rack-1.5.2/lib/rack/server.rb:264:in `start'
/Users/josh/.rvm/gems/ruby-2.1.0@base/gems/railties-4.0.3/lib/rails/commands/server.rb:84:in `start'
/Users/josh/.rvm/gems/ruby-2.1.0@base/gems/railties-4.0.3/lib/rails/commands.rb:76:in `block in <top (required)>'
/Users/josh/.rvm/gems/ruby-2.1.0@base/gems/railties-4.0.3/lib/rails/commands.rb:71:in `tap'
/Users/josh/.rvm/gems/ruby-2.1.0@base/gems/railties-4.0.3/lib/rails/commands.rb:71:in `<top (required)>'
bin/rails:8:in `require'
bin/rails:8:in `<main>'
[2014-03-19 09:38:31] INFO going to shutdown ...
[2014-03-19 09:38:31] INFO WEBrick::HTTPServer#start done.
I'm concerned about the "FATAL SignalException: SIGTERM": is this really correct? Webrick is reloaded correctly, but this looks a bit strange to me.
We use rerun not just to reboot a single app server but a set of different processes that are part of the same app but have different dependencies (via --pattern).
Unfortunately the log message and growlnotify always use the parent folder name.
Would you be open to a patch for a -n name
type of option?
Git received a check-ignore command in version 1.8.2, which allows for easy testing whether a given file is gitignored:
ruby 2.0.0p247 > irb
[1] pry(main)> system "git check-ignore coverage/index.html"
coverage/index.html
=> true
[2] pry(main)> system "git check-ignore config/boot.rb"
=> false
I think it would be very useful if there was an option to rerun
based solely on whether the changed file is under version control. This would work well in conjunction with a pattern of '*/' - every time some file under version control changes, rerun.
I recently made a Pull Request, since I thought the errors I was getting were because of that, but it seems that wasn't the cause.
I'm getting these errors while trying to update the gem:
Invalid gemspec in [/Users/myusername/.rvm/gems/ruby-1.9.2-head@myproject/specifications/rerun-0.6.1.gemspec]: invalid date format in specification: "2011-05-16 00:00:00.000000000Z" /Users/myusername/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:277:in
block in _resort!': undefined method name' for nil:NilClass (NoMethodError) from /Users/myusername/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:276:in
sort!'
from /Users/myusername/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:276:in _resort!' from /Users/myusername/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:270:in
_all'
from /Users/myusername/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:402:in each' from /Users/myusername/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems.rb:477:in
map'
from /Users/myusername/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems.rb:477:in find_files' from /Users/myusername/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems.rb:1061:in
load_plugins'
from /Users/myusername/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:86:in <top (required)>' from /Users/myusername/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in
require'
from /Users/myusername/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in require' from /Users/myusername/.rvm/rubies/ruby-1.9.2-head/bin/gem:9:in
No idea what's going on, really, I checked with other gems and, well, the only difference is that their generated .gemspec doesn't specify the time, just the date. Thanks, and keep it up!
I've been using Heroku Cedar and their "foreman" tool doesn't really restart the underlying processes even when rerun sends it a kill signal. Must track this down and see whether it's a foreman or rerun issue.
IOW "rerun foreman" should (and does not) properly emulate "heroku restart"
Looks like a typo - here's the fix:
opts.on("-p pattern", "--pattern pattern", "file glob, default = "#{Rerun::DEFAULT_PATTERN}"") do |pattern|
options[:pattern] = pattern
end
(vs options[:dir])
Not that I have rerun working yet anyways, but when I attempt to run:
rerun app.rb
I get the following error:
/Library/Ruby/Gems/1.8/gems/rerun-0.4/lib/osxwatcher.rb:35:in `start': Ruby threads cannot be used in RubyCocoa without patches to the Ruby interpreter
Any ideas?
Just a note to register a strong vote for the cool-down feature. This is working really nicely to help with restarting a Rails 3 Grape API app I'm working on. But I use RubyMine, which autosaves all the time, and this causes rerun to kick off constantly. It would even be cool if you kept it simple and we could start rerun with a flag telling it to not restart more than once every X seconds. Thanks for the great program.
I want to run the comment pandoc examples/code.md -f markdown -o code.pdf && open code.pdf
whenever the file examples/code.md
is changed.
Sadly, this somehow doesn't work:
$ rerun --pattern '{*.md}' -- pandoc examples/code.md -f markdown -o code.pdf && open code.pdf
10:31:03 [rerun] Pandoc-test launched
10:31:05 [rerun] Pandoc-test Launch Failed
10:31:05 [rerun] Watching . for {*.md} using Darwin adapter
^C
10:32:51 [rerun] Pandoc-test stopping
10:32:51 [rerun] Sending signal TERM to 30896
The pdf is only generated and opened when I send ^C
signal. What to do?
The source file is in mac osx. I mount the dir to a Linux which is in a vmware virtual machine. In linux, I try to "rerun 'rackup'", the server can be started up, but when I change the source file on Mac OS X, the server doesn't auto reload. When I change the source file on linux, It works great. How can I resolve this problem?
Here's the command I'm using to start my application.
mkdir -p tmp/pids && rerun --background -- bundle exec sidekiq -r ./main.rb -e development -C ./config/sidekiq.yml --verbose
I run this from the root of my project.
The application starts as expects but when files are changed it does not restart.
Here are my versions..
OSX: 10.10.3
Ruby: 2.1.5p273
Gem Versions:
rb-fsevent (0.9.4)
rerun (0.10.0)
rvm (1.11.3.9)
sidekiq (3.2.5)
sidekiq-pro (1.9.0)
https://github.com/deivid-rodriguez/byebug
When I type at the debugger prompt in Terminal, every keystroke is doubled.
the signal handler should not only kill a running process; it should also kill a process that we're currently in the middle of starting (if the timing is just wrong it'll leave one running in the background)
For some scenarios (e.g. restarting a development web server), you don't need to be gentle - so kill -9
is a valid option to speed up the restart process.
Thus it'd be nice if there was an option to make this line use SIGKILL (or perhaps an aribtrary signal) instead of SIGTERM.
...if no other parameters are specified, of course
...should decide whether "rake" or "rackup" take precedence, so this feature request may be impossible
Listen::Listener v2.0.0 no longer implements #start! -- but v1.3.1 does. Adjust gemspec to handle the dependency
rerun foreman start
17:31:47 [rerun] Heroku.dev launched
17:31:47 web.1 | started with pid 22808
17:31:49 web.1 | [2013-07-03 17:31:49] INFO WEBrick 1.3.1
17:31:49 web.1 | [2013-07-03 17:31:49] INFO ruby 1.9.3 (2012-04-20) [x86_64-linux]
17:31:49 web.1 | [2013-07-03 17:31:49] INFO WEBrick::HTTPServer#start: pid=22811 port=5000
17:31:50 [rerun] Watching . for **/*.{rb,js,css,scss,sass,erb,html,haml,ru} using Linux adapter
r17:31:56 [rerun] Restarting
17:31:56 [rerun] Sending signal TERM to 22799
SIGTERM received
17:31:56 system | sending SIGTERM to all processes
17:32:00 [rerun] Sending signal INT to 22799
SIGINT received
17:32:01 system | sending SIGKILL to all processes
17:32:02 [rerun] Sending signal KILL to 22799
17:32:02 [rerun] Heroku.dev restarted
17:32:02 web.1 | started with pid 22892
17:32:04 web.1 | [2013-07-03 17:32:04] INFO WEBrick 1.3.1
17:32:04 web.1 | [2013-07-03 17:32:04] INFO ruby 1.9.3 (2012-04-20) [x86_64-linux]
17:32:04 web.1 | [2013-07-03 17:32:04] WARN TCPServer Error: Address already in use - bind(2)
17:32:04 web.1 | /usr/lib/ruby/1.9.1/webrick/utils.rb:85:in `initialize': Address already in use - bind(2) (Errno::EADDRINUSE)
17:32:04 web.1 | from /usr/lib/ruby/1.9.1/webrick/utils.rb:85:in `new'
17:32:04 web.1 | from /usr/lib/ruby/1.9.1/webrick/utils.rb:85:in `block in create_listeners'
17:32:04 web.1 | from /usr/lib/ruby/1.9.1/webrick/utils.rb:82:in `each'
17:32:04 web.1 | from /usr/lib/ruby/1.9.1/webrick/utils.rb:82:in `create_listeners'
17:32:04 web.1 | from /usr/lib/ruby/1.9.1/webrick/server.rb:82:in `listen'
17:32:04 web.1 | from /usr/lib/ruby/1.9.1/webrick/server.rb:70:in `initialize'
17:32:04 web.1 | from /usr/lib/ruby/1.9.1/webrick/httpserver.rb:45:in `initialize'
17:32:04 web.1 | from /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/handler/webrick.rb:11:in `new'
17:32:04 web.1 | from /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/handler/webrick.rb:11:in `run'
17:32:04 web.1 | from /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:264:in `start'
17:32:04 web.1 | from /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/server.rb:141:in `start'
17:32:04 web.1 | from /var/lib/gems/1.9.1/gems/rack-1.5.2/bin/rackup:4:in `<top (required)>'
17:32:04 web.1 | from /usr/local/bin/rackup:23:in `load'
17:32:04 web.1 | from /usr/local/bin/rackup:23:in `<main>'
17:32:04 web.1 | exited with code 1
17:32:04 system | sending SIGTERM to all processes
"foreman" recieve SIGKILL, so "rackup" not killed by "foreman" (i can see it in a process list on port 5000), so "foreman" can't start second time.
Maybe time intervals between signals should be in options?
We're trying to use rerun to automatically restart a sinatra process inside a vagrant VM (ubuntu). The host is a Mac, and the source tree is in a shared directory. rerun starts, but doesn't detect changes on the files in the source tree.
Is there a way to get this to work? Is this a more appropriate issue for the listen gem?
It would be nice to be able to send a signal to the running console which would cause a restart.
Any idea what outputs the following into the console when running rerun?
"stty: standard input: unable to perform all requested operations"
I'm running on OS X Maverick, ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin13.0] with rbenv and homebrew.
Everything works just fine, but the console gets filled with the warning.
Here is the log:
rerun --dir .,data,lib,views -- unicorn -E development
00:58:09 [rerun] App launched
stty: standard input: unable to perform all requested operations
I, [2014-06-14T00:58:10.137072 #28734] INFO -- : listening on addr=0.0.0.0:8080 fd=9
I, [2014-06-14T00:58:10.137220 #28734] INFO -- : worker=0 spawning...
I, [2014-06-14T00:58:10.138324 #28734] INFO -- : master process ready
I, [2014-06-14T00:58:10.139132 #28736] INFO -- : worker=0 spawned pid=28736
I, [2014-06-14T00:58:10.139568 #28736] INFO -- : Refreshing Gem list
I, [2014-06-14T00:58:10.421355 #28736] INFO -- : worker=0 ready
stty: standard input: unable to perform all requested operations
stty: standard input: unable to perform all requested operations
00:58:12 [rerun] Watching data, lib, views for **/*.{rb,js,coffee,css,scss,sass,erb,html,haml,ru,yml,slim,md} using Darwin adapter
stty: standard input: unable to perform all requested operations
stty: standard input: unable to perform all requested operations
stty: standard input: unable to perform all requested operations
stty: standard input: unable to perform all requested operations
^Crake aborted!
Interrupt:
...otherwise one always has to specify --no-growl
, or one has to live with this on every call:
2014-03-20 11:30:07.649 growlnotify[81048:507] Got disconnected: Error Domain=NSPOSIXErrorDomain Code=61 "Connection refused" UserInfo=0x7fd5e1505010 {NSLocalizedDescription=Connection refused, NSLocalizedFailureReason=Error in connect() function}
2014-03-20 11:30:07.650 growlnotify[81048:507] <GrowlGNTPRegistrationAttempt: 0x7fd5e1504660> failed because Error Domain=NSPOSIXErrorDomain Code=61 "Connection refused" UserInfo=0x7fd5e1505010 {NSLocalizedDescription=Connection refused, NSLocalizedFailureReason=Error in connect() function}
2014-03-20 11:30:07.651 growlnotify[81048:507] Failed to register with (null)
Optional features should be opt-in.
I'm using Rerun for for Python development with Heroku. (Long story short, the HTTP server I use in production doesn't support automatic-reloading, so I have rerun kicking foreman when there are code changes).
I use Emacs for development, with flymake mode to do on-the-fly syntax checking. It does this by copying the current buffer into a [filename]_flymake.py
file and then running pylint
on that file. This file creation kicks off rerun, so it's constantly bouncing my development HTTP server as I'm editing code.
I'd like to add my vote for a --exclude
option that can take a glob pattern. I'd send you a pull myself, but I don't know enough Ruby.
Cheers
I'd like to keep growlnotify in my path (for reasons not related to rerun) but not have rerun tell me every time it reruns.
So it'd be cool to have a -q (quiet) mode that doesn't look for growlnotify at all.
It seems that you forgot to push them. Also, it would be nice if you could tag your releases by versions.
Thank you.
I think that rerun should exit when it can't launch the app:
15:55:22 [rerun] Synaesthesia Launch Failed
15:55:23 [rerun] Watching . for {Gemfile.lock,config/environment.rb,config/environments/development.rb,config/initializers/*.rb,lib/**/*.rb} using Darwin adapter
Or do you expect the next time the launch will succeed?
I'm utilizing the --background
flag to drop into a pry debugger and still have it be responsive. This works well the first time the sinatra server is loaded however each subsequent reload the pry console fails to display what is typed (the same behavior as when I run the sinatra server without the --background
flag).
Is this a bug or am I missing some configuration?
I'm using ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux] and rerun 0.10.0.
When I run rerun on Windows, I get the following:
E:/lib/ruby/gems/1.8/gems/rerun-0.2.1/lib/system.rb:7: uninitialized constant MissingSourceFile (NameError)
from E:/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in gem_original_require' from E:/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
require'
from E:/lib/ruby/gems/1.8/gems/rerun-0.2.1/lib/rerun.rb:1
from E:/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in gem_original_require' from E:/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
require'
from E:/lib/ruby/gems/1.8/gems/rerun-0.2.1/bin/rerun:48
from E:/bin/rerun:19:in `load'
from E:/bin/rerun:19
When I start my app with:
rerun app.rb
I get the following error:
No such file or directory - app.rb
Which doesn't really make any sense… I am in the directory with app.rb…
Any ideas?
Sometimes I edit a file that's not in the pattern and I want to restart anyway. Hitting 'r' or 'space' should trigger a restart. Now I have to do "control-C !! return" which isn't a major trauma but still.
Also 'c' should do the same with a clear screen (even if -c wasn't originally specified).
RubyGems.org doesn't report a license for your gem. This is because it is not specified in the gemspec of your last release.
via e.g.
spec.license = 'MIT'
# or
spec.licenses = ['MIT', 'GPL-2']
Including a license in your gemspec is an easy way for rubygems.org and other tools to check how your gem is licensed. As you can imagine, scanning your repository for a LICENSE file or parsing the README, and then attempting to identify the license or licenses is much more difficult and more error prone. So, even for projects that already specify a license, including a license in your gemspec is a good practice. See, for example, how rubygems.org uses the gemspec to display the rails gem license.
There is even a License Finder gem to help companies/individuals ensure all gems they use meet their licensing needs. This tool depends on license information being available in the gemspec. This is an important enough issue that even Bundler now generates gems with a default 'MIT' license.
I hope you'll consider specifying a license in your gemspec. If not, please just close the issue with a nice message. In either case, I'll follow up. Thanks for your time!
Appendix:
If you need help choosing a license (sorry, I haven't checked your readme or looked for a license file), GitHub has created a license picker tool. Code without a license specified defaults to 'All rights reserved'-- denying others all rights to use of the code.
Here's a list of the license names I've found and their frequencies
p.s. In case you're wondering how I found you and why I made this issue, it's because I'm collecting stats on gems (I was originally looking for download data) and decided to collect license metadata,too, and make issues for gemspecs not specifying a license as a public service :). See the previous link or my blog post about this project for more information.
It would be nice if you give us the option to disable those commands and the polling that comes with them so that you do not pretty much ruin Pry sessions. Sometimes in development I like to test ideas and read params as they come in and when you are polling it's absolutely impossible to work with Pry.
Hi Alex. This isn't really an issue, but a question/request. I love rerun and glad to have discovered it after using shotgun for a long time. Anyway, I'm finding that it might be useful to define a rerun config that defines different file pattern matches and associate different commands to it. For example, I might want to rerun rackup if my *.rb and *.ru changes, but might want to run a custom js/css minifier build script if I change a *.js/css.
I'm going to fork rerun and see if this is possible, but just thought I'd ask if you've thought of baking this into rerun... or if it's even possible.
Thanks!
It exits right after the first run:
[~/Workspace/ruby/ext/strscan]$ rerun -x make [trunk][2.1.0-dev]
2013-04-28 14:59:10.576 growlnotify[41046:707] Failed to register with (null)
14:59:10 [rerun] Strscan launched
installing default strscan libraries
2013-04-28 14:59:12.649 growlnotify[41073:707] Failed to register with (null)
14:59:12 [rerun] Strscan succeeded
[Listen warning]:
Listen::MultiListener is deprecated, please use Listen::Listener instead.
14:59:13 [rerun] Watching ["."]/**/*.{rb,js,css,scss,sass,erb,html,haml,ru}
using Darwin adapter
[~/Workspace/ruby/ext/strscan]$
Exit code is 0.
Hi all.
As pointed in readme I want to let you know that growlnotify
is available for Growl >= 1.3. As pointed out on your own link, growlnotify 1.3, for use with Growl 1.3, is available at this address, and works fine with rerun.
Popup notifications using libnotify are common on linux. One would need a notification daemon running like gnome's notification-daemon
, dunst
, etc..
There is a libnotify gem
by Peter Suschlik that works well with my setup using dunst. This gem depends on the ffi
gem to call C functions from libnotify.
On Linux, rerun
takes up to a second to notice and relaunch my command after a file change. This is an annoying delay during rapid iteration (which is the whole point of rerun
).
Compare the following two commands (run them side by side in two terminals):
rerun --pattern=some_pattern 'date +"%T.%N"'
vs
while true; do date +"%T.%N"; inotifywait -q some_pattern; done
On my system, rerun
prints a date roughly a second later than the comparable bash
snippet after I save a change to a monitored file.
For gem developers, it's often impossible to have all files in a single directory.
The ability to specify multiple directories to watch would be invaluable
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.