Где должны храниться флеш файлы в формате 3.1?
В Rails 3.0.X я буду хранить свои флеш файлы в общедоступном /flash файле. Flash файлы, такие как: jwplayer, uploadify и т.д.
С введением новой структуры каталогов в 3.1 (например, app/assets/) флеш файлы должны храниться в общедоступной/флеш-памяти или я должен создать новый каталог под названием "flash" в app/assets/?
Ответы
Ответ 1
если это файлы .swf
, я не думаю, что они принадлежат app/assets
. Папка активов позволяет предварительно "скомпилировать" файлы активов приложения для CoffeeScript и SCSS (или аналогичных компиляторов js и css) ". Если вы компилируете файлы .as
в файлы .swf
как часть процесса развертывания или запуска, я вижу, что имеет смысл помещать их в папку с активами. Однако это кажется ужасной идеей.
================= UPDATE =====================
Я был неправ. Папка активов предназначена для обслуживания активов Sprockets. Пока вы можете обрабатывать пути переваленных активов, вы должны использовать Sprockets.
Ответ 2
Вы можете использовать директиву Sprockets provide
.
Например, я использую Plupload:
# app/assets/javascripts/plupload.js
//= require plupload/plupload
//= require plupload/plupload.flash
//= require plupload/plupload.silverlight
//= provide plupload/dependencies
Соответствующий каталог поставщика организован следующим образом:
vendor
├── assets
│ ├── javascripts
│ │ └── plupload
│ │ ├── dependencies
│ │ │ ├── plupload.flash.swf
│ │ │ └── plupload.silverlight.xap
│ │ ├── plupload.flash.js
│ │ ├── plupload.js
│ │ └── plupload.silverlight.js
│ └── stylesheets
└── plugins
Затем я использую <%= javascript_include_tag 'plupload' %>
, когда я хочу использовать Plupload, и использую помощник asset_path
для заполнения конфигурации Plupload:
<%= javascript_include_tag 'plupload' %>
<script type="text/javascript">
$(function() {
var uploader = new plupload.Uploader({
runtimes : 'flash,silverlight',
multipart : true,
multipart_params : {
'authenticity_token' : '<%= form_authenticity_token %>'
},
flash_swf_url :
'<%= asset_path "plupload/dependencies/plupload.flash.swf" %>',
silverlight_xap_url :
'<%= asset_path "plupload/dependencies/plupload.silverlight.xap" %>',
url : '<%= url_for [@item, :photos] %>',
// ...
});
Надеюсь, что это поможет.
Ответ 3
Я думаю, есть хорошие аргументы для обоих мест. Недостатком является использование конвейера активов (хранить их под /app/assets ), что не может жестко связать любые статические файлы со вспышкой, поскольку вы не можете указать имя файла в процессе производства (Rails добавит хэш-сумму содержимого в имя файла). Вам придется создавать flashvars или xml файлы с Rails, содержащими имена файлов ресурсов.
Однако, если вы используете конвейер активов, каждый файл получит новую хэш-сумму в имени файла, если файл изменится. Вы можете сказать браузеру кэшировать файлы навсегда, потому что, как только вы ссылаетесь на измененный файл, он будет новым для браузера (< - имя файла), и он загрузит измененный файл с сервера. Кэширование сделает ваш сайт быстрее для возвращающихся посетителей.