ruby on rails-在3.1中,flash文件应该存储在哪里



在Rails 3.0.X中,我会将flash文件存储在public/flash中。Flash文件,如:jwplayer,uploadify等

随着3.1中新目录结构的引入(即app/assets/),flash文件是否仍应存储在public/flash中,或者我是否应在app/assements/中创建一个名为"flash"的新目录?

您可以使用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

然后,当我想使用Plupload时,我使用<%= javascript_include_tag '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] %>',
        // ...
    });

希望能有所帮助。

如果这些是.swf文件,我认为它们不属于app/assets。资产文件夹允许CoffeeScript和SCSS(或类似的js和css"编译器")的预"编译"应用程序资产文件。如果您在部署或启动过程中将.as文件编译为.swf文件,我认为将它们放在资产文件夹中是有意义的。然而,这似乎是一个可怕的想法。

=====================更新=====================

我错了。资源文件夹用于提供Sprockets资源。只要您能够处理已消化的资源路径,就应该使用Sprockets。

我认为,这两个地方都有很好的论据。使用asset pipeline(将它们存储在/app/assets下)的缺点是,无法从flash硬链接任何静态文件,因为在生产中无法说出文件名(Rails会在文件名中添加内容的哈希和)。您必须使用包含资源文件名的Rails生成flashvars或xml文件。

但是,如果使用资产管道,如果文件发生更改,则每个文件的文件名中都会有一个新的哈希和。你可以告诉浏览器永远缓存文件,因为一旦你引用了一个更改的文件,它将是浏览器的新文件(<-文件名),它将从服务器加载更改的文件。缓存将使您的网站更快地接待回头客。

相关内容

  • 没有找到相关文章

最新更新