# Ошибка при выполнении "bundle exec rake s3:upload\_assets" — не удалось найти Gemfile или директорию .bundle/

**URL:** https://meta.discourse.org/t/error-when-doing-bundle-exec-rake-s3-upload-assets-could-not-locate-gemfile-or-bundle-directory/361173
**Category:** Support
**Tags:** unsupported-install, s3, cloudflare, rake-task
**Created:** [09.Апрель.2025 22:41:54 UTC](https://meta.discourse.org/t/error-when-doing-bundle-exec-rake-s3-upload-assets-could-not-locate-gemfile-or-bundle-directory/361173 "2025-04-09T22:41:54Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![joshhabka](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joshhabka/32/452328_2.png) [@joshhabka](https://meta.discourse.org/u/joshhabka)
#### Post date: [09.Апрель.2025 22:41:54 UTC](https://meta.discourse.org/t/error-when-doing-bundle-exec-rake-s3-upload-assets-could-not-locate-gemfile-or-bundle-directory/361173/1 "2025-04-09T22:41:54Z")

</div>

Я пытаюсь выполнить `bundle exec rake s3:upload_assets` от имени root, но получаю следующие ошибки: `Could not locate Gemfile or .bundle/ directory.`

Также я попробовал выполнить команду без root, используя `sudo -E -u discourse bundle exec rake s3:upload_assets`, но получил следующие ошибки: `sudo: unknown user discourse sudo: error initializing audit plugin sudoers_audit`

- Обе команды я выполнил в следующей директории: `/var/discourse`
- Это стандартная установка, без использования Docker или чего-либо подобного.

Как я могу это исправить, чтобы иметь возможность выполнить эту команду?

Спасибо.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [09.Апрель.2025 23:17:45 UTC](https://meta.discourse.org/t/error-when-doing-bundle-exec-rake-s3-upload-assets-could-not-locate-gemfile-or-bundle-directory/361173/3 "2025-04-09T23:17:45Z")

</div>

Вам нужно запустить это внутри контейнера.

```plaintext
cd /var/discourse
./launcher enter app

```

А затем выполните эту команду.

---

<div class="post-metadata">

### Author: ![joshhabka](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joshhabka/32/452328_2.png) [@joshhabka](https://meta.discourse.org/u/joshhabka)
#### Post date: [09.Апрель.2025 23:31:45 UTC](https://meta.discourse.org/t/error-when-doing-bundle-exec-rake-s3-upload-assets-could-not-locate-gemfile-or-bundle-directory/361173/4 "2025-04-09T23:31:45Z")

</div>

> [@joshhabka](#):
>
> sudo -E -u discourse bundle exec rake s3:upload\_assets

Спасибо! Это помогло мне продвинуться дальше, теперь я столкнулся с этой ошибкой:

```plaintext
root@redacted:/var/www/discourse# sudo -E -u discourse bundle exec rake s3:upload_assets
/root is not writable.
Bundler will use `/tmp/bundler20250409-510203-w6snye510203' as your home directory temporarily.
ERROR: Ensure S3 is configured in config/discourse.conf or environment vars

```

У меня всё настроено в параметрах сайта Discourse. Я не использую Docker, поэтому мне не нужны переменные окружения?

---

<div class="post-metadata">

### Author: ![joshhabka](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joshhabka/32/452328_2.png) [@joshhabka](https://meta.discourse.org/u/joshhabka)
#### Post date: [09.Апрель.2025 23:53:41 UTC](https://meta.discourse.org/t/error-when-doing-bundle-exec-rake-s3-upload-assets-could-not-locate-gemfile-or-bundle-directory/361173/5 "2025-04-09T23:53:41Z")

</div>

Я попытался добавить переменные окружения в app.yml, пересобрать образ, снова зайти в приложение и выполнить команду, но получил следующее:

```plaintext
`/root` не доступен для записи.
Bundler будет использовать `/tmp/bundler20250409-1393-48ek5u1393` как временный домашний каталог.
Применение правил CORS...
Попытка применить набор правил CORS для ASSETS в бакете biohacking-forum.
rake aborted!
Seahorse::Client::NetworkingError: Пустое или неполное тело ответа (Seahorse::Client::NetworkingError)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/dualstack.rb:21:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/accelerate.rb:43:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/checksum_algorithm.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/invocation_id.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/request_callback.rb:89:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `block in call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/telemetry/no_op.rb:29:in `in_span'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:53:in `span_wrapper'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/client.rb:6359:in `get_bucket_cors'
/var/www/discourse/lib/s3_helper.rb:401:in `fetch_bucket_cors_rules'
/var/www/discourse/lib/s3_helper.rb:168:in `ensure_cors!'
/var/www/discourse/lib/s3_cors_rulesets.rb:60:in `sync'
/var/www/discourse/lib/tasks/s3.rake:183:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Задачи: TOP => s3:upload_assets => s3:ensure_cors_rules
(Полный трассировочный отчет можно получить, запустив задачу с флагом --trace)

```

---

<div class="post-metadata">

### Author: ![joshhabka](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joshhabka/32/452328_2.png) [@joshhabka](https://meta.discourse.org/u/joshhabka)
#### Post date: [10.Апрель.2025 12:46:22 UTC](https://meta.discourse.org/t/error-when-doing-bundle-exec-rake-s3-upload-assets-could-not-locate-gemfile-or-bundle-directory/361173/6 "2025-04-10T12:46:22Z")

</div>

Так и не удалось разобраться в этом ☹

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [10.Апрель.2025 15:00:39 UTC](https://meta.discourse.org/t/error-when-doing-bundle-exec-rake-s3-upload-assets-could-not-locate-gemfile-or-bundle-directory/361173/7 "2025-04-10T15:00:39Z")

</div>

> [@joshhabka](#):
>
> ```plaintext
> ОШИБКА: Убедитесь, что S3 настроен в config/discourse.conf или в переменных окружения
> 
> ```
> 
> ```plaintext
> 
> ```

> [@joshhabka](#):
>
> ```plaintext
> У меня всё настроено в параметрах сайта Discourse. Я не использую Docker, значит, переменные окружения мне не нужны?
> 
> ```

Переменные окружения всё же необходимы, поэтому в документации по [настройке совместимого с S3 провайдера объектного хранилища для загрузок](https://meta.discourse.org/t/configure-an-s3-compatible-object-storage-provider-for-uploads/148916) указано именно так, и именно об этом сообщает сообщение об ошибке.

Все переменные S3 следует перенести в скрытые настройки, так как их конфигурация через параметры сайта обычно не приносит пользы.

Извините, я забыл, что вы не используете Docker. Но да, вам всё равно нужно установить их в переменных окружения ENV. Я делаю это в своей среде разработки для восстановления баз данных из S3.

Если вы настраиваете это не для среды разработки, то, скорее всего, совершаете серьёзную ошибку.

---

<div class="post-metadata">

### Author: ![joshhabka](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/joshhabka/32/452328_2.png) [@joshhabka](https://meta.discourse.org/u/joshhabka)
#### Post date: [10.Апрель.2025 18:23:27 UTC](https://meta.discourse.org/t/error-when-doing-bundle-exec-rake-s3-upload-assets-could-not-locate-gemfile-or-bundle-directory/361173/8 "2025-04-10T18:23:27Z")

</div>

@Eviepayne

Исправил, выполнив следующие действия — было две ошибки.

Сначала исправил вторую ошибку так:

```plaintext
rails c
Upload.find(386).destroy!
exit

```

Это устранило проблему с повреждённым постом (некорректный текст или что-то подобное).

Затем красные ошибки на экране возникали из-за использования случайного поддомена (предоставленного Cloudflare) и загрузки файлов на него. Мне пришлось загрузить файлы на новый домен (включая мой подключённый домен).

Используя:

```plaintext
sudo -E -u discourse bundle exec rake s3:upload_assets

```

Затем:

```plaintext
sudo -E -u discourse bundle exec rake uploads:migrate_to_s3

```

После этого форум загрузился корректно, и при щелчке правой кнопкой мыши и открытии изображений в новой вкладке видно, что они размещены на R2. Затем я сделал резервную копию.

Наконец, я очистил всё с помощью:

```plaintext
sudo -E -u discourse bundle exec rake uploads:clean_up

```

Это освободило соответствующее дисковое пространство для файлов (обратите внимание: у меня осталась локальная резервная копия обоих файлов — на уровне ОС и на уровне Discourse — до миграции).

Теперь всё работает идеально!

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [10.Май.2025 18:24:10 UTC](https://meta.discourse.org/t/error-when-doing-bundle-exec-rake-s3-upload-assets-could-not-locate-gemfile-or-bundle-directory/361173/9 "2025-05-10T18:24:10Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
