【问题标题】:ROR - rake assets:precompile fails with 'CoffeeScript is not defined'ROR - rake 资产:预编译失败并显示“未定义咖啡脚本”
【发布时间】:2013-05-15 22:17:05
【问题描述】:

您好,我是 Rails 新手,最近刚刚在 Ubuntu 12.04 上使用 RVM 设置了一个生产环境。如果重要的话,我已经在多用户模式下安装了 ruby​​(rvm 位于 /usr/local/rvm/bin/rvm)。

我正在设置 Capistrano 来部署我的 rails 应用程序。除了包含任何 CoffeeScript 文件外,一切都很好。作为部署过程的一部分,Capistrano 运行 rake assets:precompile。这在我的本地环境(osx)上工作得很好,但在我的 ubuntu 上失败了。我已经安装了我认为需要的所有 gem(coffee-script coffee-script-source)。但它仍然不起作用。这里有什么指点吗?

  * executing "cd -- /var/www/appname/releases/20130515220819 && rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile"
    servers: ["1.2.3.4"]
    [1.2.3.4] executing command
*** [err :: 1.2.3.4] rake aborted!
*** [err :: 1.2.3.4] ReferenceError: CoffeeScript is not defined
*** [err :: 1.2.3.4] (in /var/www/appname/releases/20130515220819/app/assets/javascripts/email_tests.js.coffee)
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:68:in `extract_result'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:28:in `block in exec'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:41:in `compile_to_tempfile'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:27:in `exec'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:19:in `eval'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:33:in `call'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/coffee-script-2.2.0/lib/coffee_script.rb:57:in `compile'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/tilt-1.3.7/lib/tilt/coffee.rb:46:in `evaluate'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/tilt-1.3.7/lib/tilt/template.rb:77:in `render'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/sprockets-2.2.2/lib/sprockets/context.rb:193:in `block in evaluate'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/sprockets-2.2.2/lib/sprockets/context.rb:190:in `each'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/sprockets-2.2.2/lib/sprockets/context.rb:190:in `evaluate'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/sprockets-2.2.2/lib/sprockets/processed_asset.rb:12:in `initialize'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/sprockets-2.2.2/lib/sprockets/base.rb:249:in `new'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/sprockets-2.2.2/lib/sprockets/base.rb:249:in `block in build_asset'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/sprockets-2.2.2/lib/sprockets/base.rb:270:in `circular_call_protection'
*** [err :: 1.2.3.4] /usr/local/rvm/gems/ruby-1.9.3-p429/gems/sprockets-2.2.2/lib/sprockets/base.rb:248:in `build_asset'

【问题讨论】:

    标签: ruby-on-rails rake capistrano


    【解决方案1】:

    尝试将其添加到您的 Gemfile:

    gem "therubyracer"
    

    根据我的经验,在不同于 OSX 的 Ubuntu 中需要 JavaScript 解释器。

    希望这会有所帮助!

    【讨论】:

    • 我试过了,没用。我遇到了同样的错误。看来这实际上是一个javascript错误。我想知道我是否以某种方式错过了 coffeescript.js ?
    【解决方案2】:

    经过大量挖掘,我意识到这个文件的长度为 0:

    /usr/local/rvm/gems/ruby-1.9.3-p429/gems/coffee-script-source-1.6.2/lib/coffee_script/coffee-script.js

    这个问题可以通过普通用户运行来解决:

    rvmsudo gem pristine --all

    我在互联网上四处查看,我是唯一遇到此特定错误的人。我不知道这个文件是如何被截断的。我希望这对其他人有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-31
      • 2013-04-28
      • 2011-06-30
      • 1970-01-01
      • 2014-12-12
      • 2021-07-01
      • 2013-01-09
      • 2013-02-06
      相关资源
      最近更新 更多