Rails bootsnap не загружается

При запуске приложения rails 5 сегодня возникает следующая ошибка:

1: from /home/deploy/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/compile_cache/iseq.rb:37:in `load_iseq'
/home/deploy/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/compile_cache/iseq.rb:37:in `fetch': 
Operation not permitted - bs_fetch:atomic_write_cache_file:chmod (Errno::EPERM)

Другие вопросы здесь указывают на решение, при котором вызов gemfile имеет require: false но это уже указано

gem 'bootsnap', '>= 1.1.0', require: false

Единственный способ запустить сервер приложений (в настоящее время в режиме разработки) - это закомментировать из boot.rb следующую строку:

# require 'bootsnap/setup' # Speed up boot time by caching expensive operations.

Между предыдущей перезагрузкой (вчера) и настоящим моментом ни boot.rb, ни Gemfile не были изменены. Включение и выключение этой строки доказывает, что проблема в начальной загрузке.

Что случилось? Что происходит?

3 ответа

У меня возникла эта проблема, когда я работал над приложением Rails, которое некоторое время работало нормально.

Проблема в том, что самоцвет Bootsnaptmpкаталог в каталоге вашего приложения не доступен для записи текущему пользователю, то есть текущий пользователь не имеет разрешения на запись в гем Bootsnaptmp в каталоге вашего приложения.

Вот как я это решил:

Просто удалите tmpкаталог в каталоге вашего приложения с правами суперпользователя:

sudo rm -rf tmp
sudo rm -rf tmp

Не воссоздайте tmp каталог снова, это пустая трата усилий

Просто запустите свое приложение иtmp каталог будет снова создан автоматически:

rails s

Вот и все.

надеюсь, это поможет

Я использую WSL на Win10, несколько дней назад пришло какое-то большое обновление и ничего не заработало как обычно. Как я понимаю, WSL изменил некоторые настройки разрешений для папок или что-то в этом роде.

Поскольку мои проекты находятся под C:\sites Похоже, Bootsnap должен иметь полные права для C:\sites\mywebsite\tmp\cache\bootsnap-compile-cache

Ответ в этой проблеме GitHub предполагает, что папка должна быть доступна для записи. Таким образом, в основном я должен был предоставить полный доступ для моего пользователя Win10 к моему C:\sites и подпапки. Для того, чтобы я следовал этому руководству. Если по какой-то причине это не сработало сразу, попробуйте удалить папку "только для чтения" для вашей папки "сайты", например, проверьте это предложение.

Суть в том, что для этого нужно иметь полные права. cache Папка, так что Bootsnap может записывать туда свои папки и файлы.

Надеюсь, это поможет.

Я столкнулся с этим с контейнером Docker, в котором корневой каталог приложения Rails был томом, смонтированным с хоста. Удаление tmpкаталог (согласно ответу Promise Preston ) не решил проблему, потому что Rails не смог его создать.

Вероятно, этот ответ (или такой, как он) приведет к правильному решению с разрешениями Docker, но мне это надоело, и я просто скопировал каталог приложения в контейнер вместо его монтирования.

Другие вопросы по тегам