пакет ruby ​​не работает с ошибкой :: EROFS - PullRequest
0 голосов
/ 11 декабря 2018

При развертывании приложения на Rails я вижу эту ошибку:

Errno::EROFS: Read-only file system @ rb_sysopen - /ext/gems/2.3/bundler.lock
  /ext/gems/2.3/gems/bundler-1.17.1/lib/bundler/process_lock.rb:9:in `initialize'
  /ext/gems/2.3/gems/bundler-1.17.1/lib/bundler/process_lock.rb:9:in `open'
  /ext/gems/2.3/gems/bundler-1.17.1/lib/bundler/process_lock.rb:9:in `lock'
  /ext/gems/2.3/gems/bundler-1.17.1/lib/bundler/installer.rb:73:in `run'
...

Это появляется в пакете 1.16.1 и 1.17.1.Мой текущий обходной путь - вернуться к пакету 1.15.1, который работает нормально.

Я провел исследование и нашел основную причину в X / Open, где различные ошибки определены как EACCES и EROFS.Кажется, что Ruby придерживается этого и правильно сообщает о файловой системе только для чтения, в то время как упаковщик обрабатывает (то есть спасает) только EACCES, но не EROFS.

Соответствующий код читает:

rescue Errno::EACCES, Errno::ENOLCK, *[SharedHelpers.const_get_safely(:ENOTSUP, Errno)].compact
  # In the case the user does not have access to
  # create the lock file or is using NFS where
  # locks are not available we skip locking.
  yield

Таким образом, кажется, что код явно предусматривает случай, когда предполагаемое местоположение не может быть записано, и только пренебрегает обработкой случая EROFS.Я пытался рассказать об этом разработчикам после выпуска 1.16.1, но никакой реакции не последовало.Как правильно справиться с этим?

...