Где должны храниться загруженные файлы в Rails 3.1?

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

Когда пользователь загружает файлы. В Rails 3.0 они будут доступны для публикации / загрузки. В 3.1 должны ли загруженные файлы переходить в app / assets / uploads? Или все еще общедоступны / загружаются?

На самом деле это не проблема в нашей среде, поскольку мы используем S3. Просто пытаюсь понять новую структуру каталогов Rails 3.1.

Что вы думаете?

Ответ №1:

общедоступный каталог, capistrano рекомендует public/ system/

пусть вас не смущает каталог app / assets, обычно он предназначен для файлов css / js / coffeescript, думаю, это самое большое изменение с 3.0 на 3.1

Ответ №2:

Что ж, ответ прост: у ваших пользователей будет доступ только к вашему /public каталогу.

Есть всего лишь несколько приемов для получения css и js , но вам придется придерживаться /public других вещей.

Как правило, я помещаю все материалы в /public/assets

Ответ №3:

добавление к ответу apneadiving:

если вы используете Carrierwave , временные файлы находятся в каталоге / tmp вашей системы, а загруженные файлы — в подкаталоге под $RAILS_ROOT/public , например $ RAILS_ROOT/public/uploads/YOUR-MODEL/…

В Rails 3.1 каталог ‘assets’ предназначен для файлов JavaScript и CSS, чтобы sprockets мог их там найти и чтобы они были недоступны напрямую через «общедоступный» каталог…

   see: assets/javascripts/application.js and assets/stylesheets/application.css  files
  see: http://railscasts.com/episodes/265-rails-3-1-overview
  

Каталог app / assets предназначен для файлов CoffeeScript (также не является общедоступным, поэтому не подходит для размещения загрузок)

Ответ №4:

Размещение загруженных файлов в файловой системе работает, только если у вас есть один файловый сервер или подключенное к сети хранилище… Обычно я просто помещаю файлы в саму базу данных.

Но, как сказал vrsmn, не используйте ресурсы для этого, конвейер ресурсов предназначен для оптимизации изображений css / js / приложений.