Ruby on rails 使用Rails预编译其他资产
我一直在将一个项目转换为使用资产管道,但部署的一部分遇到了麻烦。在cap部署到生产服务器后,我遇到以下错误。(在开发模式下一切正常,无需预编译资产) 项目结构类似于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
|-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/.