【发布时间】:2013-05-07 16:23:33
【问题描述】:
我在部署期间使用 Capistrano 预编译我的资产,但我遇到了一个对我来说不是很有用的错误。
* executing "cd -- path/to/releases/20130507161214 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile"
*** rake aborted!
*** wrong argument type nil (expected Data)
*** (in /path/to/app/assets/javascripts/application.js)
*** /path/to/gems/therubyracer-0.11.4/lib/v8/context.rb:67: in 'New'
这是我的application.js,被推荐:
//= require jquery
//= require jquery_ujs
//= require bootstrap
更新
所以我尝试完全删除application.js 并再次运行它,但随后它抱怨我的另一个js 文件(但同样的无用错误)。然后我删除了我所有的js 文件,它开始抱怨我的css 文件。
如果所有 js 和 css 文件都被删除,预编译确实成功(但显然没有我需要的 js 和 css 文件)。
我将.js.coffee 和.css.scss 用于我的所有非图像资产。
更新
@TomDavies 的回答确实对我有所帮助,但仍然存在问题。在部署期间,它只是在预编译时失败并且没有给我信息。所以我做了汤姆提到的,我在我的开发机器上预编译,但在生产环境中,发现我也有问题。
它给我的错误是“Unexpected INDENT”,但它不会告诉我行号,只是一个文件名......
我最终发现我的 ajax 请求中缺少逗号。显然它在开发环境中没有它就可以工作,只是没有它就无法预编译......
这是我的:
$.ajax 'some/url'
success:
alert 'yay!'
这是我需要的:
$.ajax 'some/url',
success:
alert 'yay!'
注意顶行末尾的逗号...现在预编译在开发中非常有用。我确信在开发机器(但生产环境)上修复预编译期间的错误将解决部署问题,但无济于事。它仍然失败,顶部 wrong argument type nil (expected Data) 出现相同的错误。
tl;博士
我能够在我的开发机器上运行rake assets:precompile RAILS_ENV=production,在生产机器上不起作用,在顶部给出错误。不知道如何调试这个。
【问题讨论】:
标签: ruby-on-rails capistrano asset-pipeline