Guard: Tidak ada ruang tersisa di perangkat - Gagal menonton ...

Dibuat pada 22 Jan 2012  ·  18Komentar  ·  Sumber: guard/guard

file penjaga:

guard 'rspec', :version => 2, :cli => "--color --format nested" do
  watch(%r{^spec/.+_spec\.rb})
  watch(%r{^lib/(.+)\.rb})     { |m| "spec/#{m[1]}_spec.rb" }
end

Gemfile

group :development do
  gem 'guard'
  gem 'libnotify'
  gem 'guard-rspec'
  gem 'rb-readline'
end

Lingkungan

  • Linux 2.6.32-5-amd64
  • ruby 1.8.7 (2011-06-30 patchlevel 352)

    Kesalahan

Ketika saya menjalankan guard start Saya melihat pesan libnotify dengan laporan dan kemudian guard crash dengan kesalahan berikutnya:

//home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/watcher.rb:80:in `initialize': No space left on device - Failed to watch "/home/blake/dev/my/project_child/.git/objects/78": The user limit on the total number of inotify watches was reached or the kernel failed to allocate a needed resource. (Errno::ENOSPC)
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:190:in `new'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:190:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:199:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:195:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `each'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:195:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `each'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:195:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `each'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/listeners/linux.rb:58:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/listener.rb:100:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/listeners/linux.rb:20:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard.rb:203:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/cli.rb:75:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/task.rb:22:in `send'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/task.rb:22:in `run'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/invocation.rb:118:in `invoke_task'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor.rb:263:in `dispatch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/base.rb:389:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/bin/guard:6
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/bin/guard:19:in `load'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/bin/guard:19home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/watcher.rb:80:in `initialize': No space left on device - Failed to watch "/home/blake/dev/my/project_child/.git/objects/78": The user limit on the total number of inotify watches was reached or the kernel failed to allocate a needed resource. (Errno::ENOSPC)
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:190:in `new'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:190:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:199:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:195:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `each'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:195:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `each'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:195:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `each'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/vendor/linux/lib/rb-inotify/notifier.rb:192:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/listeners/linux.rb:58:in `watch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/listener.rb:100:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/listeners/linux.rb:20:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard.rb:203:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/lib/guard/cli.rb:75:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/task.rb:22:in `send'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/task.rb:22:in `run'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/invocation.rb:118:in `invoke_task'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor.rb:263:in `dispatch'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/thor-0.14.6/lib/thor/base.rb:389:in `start'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/gems/guard-1.0.0/bin/guard:6
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/bin/guard:19:in `load'
    from /home/blake/.rvm/gems/ruby-1.8.7-p352@project/bin/guard:19


Apakah itu mencoba menonton file git? Apakah saya melewatkan sesuatu?

Komentar yang paling membantu

Coba tingkatkan max_user_watches untuk inotify. Ini adalah default diatur ke 8192. Saya menabraknya ke 100k dan semuanya baik-baik saja.

cat /proc/sys/fs/inotify/max_user_watches

echo 100000|sudo tee /proc/sys/fs/inotify/max_user_watches

Untuk menambah max_user_watches saat boot, edit /etc/sysctl.conf dan tambahkan fs.inotify.max_user_watches=100000 atau perbaiki fs.inotify.max_user_watches= menjadi 100000.

Jangan berterima kasih padaku, terima orang ini -> http://blog.sorah.jp/2012/01/24/inotify-limitation

Semua 18 komentar

Ini bisa terjadi ketika ada terlalu banyak file untuk ditonton di folder Anda, Anda dapat mengabaikan beberapa jalur dengan metode ignore_paths (info lebih lanjut tentangnya di README )

Saya sudah mencoba menggunakan ignore_paths '.git' itu tidak berpengaruh.

Saya hanya punya 93 file dalam proyek:

find . | grep -v '.git'  | wc -l
93

Itu aneh, coba minta lib notify guys.

Sekedar informasi, .git sudah diabaikan secara default: https://github.com/guard/guard/blob/master/lib/guard/listener.rb#L19

Ada berita?

Tidak. Akan mencoba menjalankannya di komputer lain.

Hm.. Di tempat kerja saya, di PC lain proyek yang sama berjalan dengan baik dengan penjaga.. Di kedua PC saya menggunakan Debian Squeeze.

Saya mengalami masalah serupa dengan direktori besar yang saya abaikan menggunakan abaikan_paths. Ia bersikeras mengeluh bahwa ia telah 'Gagal Menonton" beberapa file di direktori yang diabaikan.

Jalur hanya diabaikan di level Penjaga tetapi tidak dengan rb-inotify jadi menggunakan ignore_paths tidak berguna di sini. Untuk mengatasi masalah Anda, saya pikir kita memerlukan opsi abaikan_paths di rb-inotify . @nex3 menurut Anda apakah itu mungkin?

Sepertinya tidak ada cara untuk secara selektif mengabaikan jalur di antarmuka inotify yang mendasarinya.

Saya mengeluarkan direktori monster dari pohon proyek untuk saat ini. Terima kasih telah mencoba.

Saya menghapus direktori .git dan itu juga berfungsi untuk saya. Tapi mungkin ada yang lebih baik :)

Coba tingkatkan max_user_watches untuk inotify. Ini adalah default diatur ke 8192. Saya menabraknya ke 100k dan semuanya baik-baik saja.

cat /proc/sys/fs/inotify/max_user_watches

echo 100000|sudo tee /proc/sys/fs/inotify/max_user_watches

Untuk menambah max_user_watches saat boot, edit /etc/sysctl.conf dan tambahkan fs.inotify.max_user_watches=100000 atau perbaiki fs.inotify.max_user_watches= menjadi 100000.

Jangan berterima kasih padaku, terima orang ini -> http://blog.sorah.jp/2012/01/24/inotify-limitation

@jhirn Tautan yang bagus, terima kasih telah membagikannya! /cc @Maher4Ever

@thibaudgg Saya pikir itu memang ide yang baik untuk menangkap pengecualian ini dan menunjukkan tautan ke (halaman wiki?) atau sesuatu di repo Dengarkan untuk membantu pengguna. Haruskah kita menambahkan halaman wiki pertama ke Listen ? :)

Lakukan, tetapi pastikan untuk mengkredit github.com/sorah dan bukan saya. =)

@Maher4Ever yeah +1 untuk tautan ke halaman wiki Dengarkan pertama kami!

@jhirn , selamat menemukan!
@thibaudgg , terima kasih atas dukungannya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

tomrossi7 picture tomrossi7  ·  6Komentar

Antti picture Antti  ·  4Komentar

Odaeus picture Odaeus  ·  21Komentar

lastobelus picture lastobelus  ·  5Komentar

jonmchan picture jonmchan  ·  16Komentar