簡體   English   中英

Rails:Bootsnap 無法加載

[英]Rails: Bootsnap fails to load

今天啟動 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 都沒有被修改。 打開和關閉此行證明問題出在 bootsnap 上。

怎么了? 到底是怎么回事?

我在處理一個運行良好的 Rails 應用程序時遇到了這個問題。

問題是你應用目錄下的Bootsnap gem tmp目錄對當前用戶是不可寫的,即當前用戶沒有權限寫入你應用目錄下的Bootsnap gem tmp目錄。

這是我解決它的方法

只需使用超級用戶權限刪除應用程序目錄中的tmp目錄:

sudo rm -rf tmp

不要重新創建tmp目錄,浪費精力

只需啟動您的應用程序tmp目錄將再次自動創建:

rails s

就這樣。

我希望這有幫助

我在 Win10 上使用 WSL,幾天前出現了一些重大更新,但沒有像往常一樣工作。 據我了解,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 權限解決方案,但我受夠了,只是將應用程序目錄復制到容器中而不是安裝它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM