Ruby on rails 闪存文件应存储在3.1中的何处?

Ruby on rails 闪存文件应存储在3.1中的何处?,ruby-on-rails,flash,ruby-on-rails-3,Ruby On Rails,Flash,Ruby On Rails 3,在Rails3.0.X中,我会将我的flash文件存储在public/flash中。Flash文件,如:jwplayer、uploadify等 随着3.1中新目录结构的引入(即app/assets/),flash文件是否仍应存储在public/flash中,还是应在app/assets/?中创建一个名为“flash”的新目录?如果这些是.swf文件,我认为它们不属于app/assets。资产文件夹允许为CoffeeScript和SCS(或类似的js和css“编译器”)预编译应用程序资产文件。如果

在Rails3.0.X中,我会将我的flash文件存储在public/flash中。Flash文件,如:jwplayer、uploadify等


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

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

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

我错了。资源文件夹用于提供链轮资源。只要您可以处理已消化的资产路径,就应该使用链轮。

您可以使用

例如,这就是我使用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时,我会使用
,并使用
asset\u路径
帮助器填充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] %>',
        // ...
    });

$(函数(){
var uploader=新的plupload.uploader({
运行时:“flash,silverlight”,
多部分:正确,
多部分参数:{
“真实性令牌”:“
},
flash_swf_url:
'',
silverlight_xap_url:
'',
url:“”,
// ...
});

希望这能有所帮助。

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


但是,如果使用资产管道,如果文件发生更改,每个文件将在其文件名中获得一个新的哈希和。您可以告诉浏览器永久缓存文件,因为一旦引用更改的文件,它将是浏览器的新文件(如果它们是预编译的)app asset files,为什么app/assets中有一个images dir?Christian,我们的app中的图像只包含在app生成的PDF中。将这些图像存储在app/assets中而不是公共文件中是有意义的。我不同意。这不仅仅适用于预编译的资产。如果您使用Rails资产管道,您将受益于它的缓存破坏功能d告诉浏览器永远缓存它们。这就是为什么图像在资源中也有位置。但是你不能使用硬编码路径。如果你注意到了这一点(例如,通过rails生成的flash VAR或xmls告诉flash所有路径),你可以从中受益匪浅。事实上,我同意iGEL的观点。现在使用链轮的时间更长了,如果你能处理“消化”的话,我会说路径,你应该把你的swf文件放在assets目录中..我还没有开始玩3.1,但是如果应用程序/资产中的任何东西可以公开提供,我会感到震惊-无论从安全角度还是从遵守公共目录的约定来看,这都没有意义。因为你需要这些flash文件可以公开访问,y你应该将它们公开存储。基于这样的理解。应用程序图像呢?如果徽标、横幅、主背景、图标等图像被视为公开的,为什么应用程序/资产中有图像目录?或者我们还是应该将这些类型的图像放在公共/图像中。如果是,应用程序/资产中的图像目录用于什么?@JeremyWeathers:资产管道用于隐藏私有内容。它用于预编译资产和缓存破坏。我想写:资产管道不用于隐藏私有内容。