我在部署期间使用 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
在我的开发机器上运行,在生产机器上不起作用,在顶部给出错误。不知道如何调试这个。