Ruby on rails 使用Rails预编译其他资产

Ruby on rails 使用Rails预编译其他资产,ruby-on-rails,ruby,ruby-on-rails-3.2,asset-pipeline,Ruby On Rails,Ruby,Ruby On Rails 3.2,Asset Pipeline,我一直在将一个项目转换为使用资产管道,但部署的一部分遇到了麻烦。在cap部署到生产服务器后,我遇到以下错误。(在开发模式下一切正常,无需预编译资产) 项目结构类似于 |-app/ |-assets/ |-javascripts/ |- application.js |-vendor/ |-assets/ |-javascripts/ |-timeline/ |-timeline_ajax/ |-simile-ajax-api

我一直在将一个项目转换为使用资产管道,但部署的一部分遇到了麻烦。在cap部署到生产服务器后,我遇到以下错误。(在开发模式下一切正常,无需预编译资产)

项目结构类似于

|-app/
  |-assets/
    |-javascripts/
      |- application.js
|-vendor/
  |-assets/
    |-javascripts/
    |-timeline/
      |-timeline_ajax/
        |-simile-ajax-api.js
在my application.rb中,我添加了以下行

config.assets.paths << "vendor/assets/timeline/timeline_ajax"
最后,它在application.html.haml中加载的位置是

%html
  %head
    - page_title = @page_title ? "#{@page_title}" : ''
    %title= strip_tags page_title

    :javascript
      Timeline_ajax_url= "#{asset_path('simile-ajax-api.js')}";
      Timeline_urlPrefix= '/assets/';
      Timeline_parameters='bundle=true'

知道我哪里出错了吗?如果您需要更多详细信息,请告诉我。

我认为没有必要这样说明路径:

//= require_tree ../../../vendor/assets/timeline/timeline_ajax/.
只是:

//= require_tree timeline/timeline_ajax/.
因为所有资产(无论位于何处)都以相同的方式查找。简单地说,如果目录名为
assets
,管道将查找要包含的文件


编辑:看起来您的
供应商
目录结构有点奇怪:通常您将
.js
文件直接复制到
资产/javascripts
目录。我认为包括
资产/供应商/时间线
会让事情变得复杂。只需将
timeline
dir复制到
vendor/assets/javascripts

是否存在打字错误<代码> pathHi Amar上的JavaScript < /代码> -对于混乱感到抱歉,时间线代码故意在JavaScript目录之外。谢谢您的回复,但是重构似乎没有固定它。您可以考虑返回到<代码>生产中的管道的默认设置。RB < /代码>。在我的工作应用程序(rails 3.2.8)中,与
管道相关的设置仅为:
#如果缺少预编译的资源,则不要退回到资源管道config.assets.compile=false config.assets.precompile+=%w(*.js)
。如果您试图将您的
simile ajax api.js
文件复制到
供应商/assets/javascripts
,应该没问题。谢谢夸马拉,我已经重新调整了这个项目的结构,清理了production.rb,它现在似乎正在工作!听到这个消息我很高兴。祝你好运
%html
  %head
    - page_title = @page_title ? "#{@page_title}" : ''
    %title= strip_tags page_title

    :javascript
      Timeline_ajax_url= "#{asset_path('simile-ajax-api.js')}";
      Timeline_urlPrefix= '/assets/';
      Timeline_parameters='bundle=true'
//= require_tree ../../../vendor/assets/timeline/timeline_ajax/.
//= require_tree timeline/timeline_ajax/.