Nikolay
(Nikolay)
23.Январь.2020 10:35:20
1
Здравствуйте, я не могу разрабатывать на Windows, так как получаю пустой экран. При открытии консоли я вижу следующие ошибки:
(X) ember_jquery.js?1579775136.5740232:1 Uncaught Error: Errno::EEXIST: File exists @ dir_s_mkdir - /var/discourse/tmp/cache/assets/sprockets/v3.0/pr
(in /home/gaijinsailor/.rbenv/versions/2.6.2/lib/ruby/2.6.0/fileutils.rb:239:in `mkdir')
at ember_jquery.js?1579775136.5740232:1
и множество подобных ошибок.
По сути, Discourse не может загрузить скрипты. Когда я открываю скрипт в отдельном окне, я получаю следующую ошибку:
Script: http://localhost:3000/assets/locales/en_US.js?1579775136.5398135
Body: throw Error("Errno::EEXIST: File exists @ dir_s_mkdir - /var/discourse/tmp/cache/assets/sprockets/v3.0/x2\n (in /home/gaijinsailor/.rbenv/versions/2.6.2/lib/ruby/2.6.0/fileutils.rb:239:in `mkdir')")
Поэтому я начал копать и понял, что проблема связана с Sprockets. Я подключил директорию Discourse из Windows к Docker, и файловая система нечувствительна к регистру. Похоже, Sprockets работает только на файловых системах, подобных Linux (например, ext4), которые поддерживают чувствительность к регистру имен директорий.
Есть ли какое-либо решение этой проблемы?
Спасибо.
UPD: эта проблема с Sprockets задокументирована на GitHub: FileStore cache patch in v3.6 causes directory name collisions in Windows · Issue #283 · rails/sprockets · GitHub
но проблема всё ещё открыта, и решения нет
sam
(Sam Saffron)
28.Январь.2020 06:36:40
2
Смешно, что @pixeltrix наткнулся на это вчера и использовал этот хак, чтобы обойти проблему:
committed 12:09PM - 27 Jan 20 UTC
Sprockets 3.0 and later uses Base64 digests for cache paths and these
present pr… oblems when used with NTFS on Windows which is case-insensitive.
By allowing the overriding of the cache path from an environment variable
we can use a Docker volume to cache the asset compilation. This is actually
faster on both Mac and Windows than the default path.
Я рекомендую просто установить WSL2 и использовать нашу настройку WSL2, которая работает намного быстрее и проще в понимании:
This tutorial has been tested on Windows 10 and 11.
To set up a development environment for Discourse on Windows, you can do it using Windows Subsystem for Linux feature.
This setup requires the WSL 2 installation. It is only available in Windows 10 builds 18917 or higher. We’ll assume that you already installed Windows Subsystem for Linux 2 (Ubuntu) on your Windows 10 system. WARNING: Install Ubuntu 18.04, and not 20.04 since some installations will fail on 20.04. For m…
Установка среды разработки тривиальна: просто настройте WSL2, установите Docker, а затем используйте нашу настройку Docker для разработки.
Developing using Docker
Since Discourse runs in Docker, you should be able to run Discourse directly from your source directory using a Discourse development container.
Pros: No need to install any system dependencies, no configuration needed at all for setting up a development environment quickly.
Cons: Will be slightly slower than the native dev environment on Ubuntu, and much slower than a native install on MacOS.
See also Developing Discourse using a Dev Container …
Nikolay
(Nikolay)
28.Январь.2020 10:10:29
3
Спасибо большое. Хак сработал.
Позже я попробую использовать WSL2.