【问题标题】:assets:precompile and capistrano run locally but not on serverassets:precompile 和 capistrano 在本地运行,但不在服务器上
【发布时间】:2013-04-19 15:38:41
【问题描述】:

我正在使用 capistrano 将 Rails 应用程序部署到 vps 服务器。

在最后一次更新之前一切正常。当 capistrano 运行 assets:precompile 时,我现在得到错误:

rake aborted!
TypeError: Object function (deps, callback) {
if (Array.isArray(deps)) {
var params = deps.map(function(dep) {
return this.lookup(dep);
}, this);
if (callback) {
callback.apply(null, params);
}
return undefined;
}
else {
return this.lookup(deps);
}
} has no method 'bind'

当我使用--trace 选项运行它时,我得到这个:

https://gist.github.com/NicosKaralis/5421153#file-cap-deploy

它没有说明问题出在哪里,当我在本地机器上运行相同的命令时它工作正常。

我的机器是 Max OS X,我的服务器是 Ubuntu 10.10

我做错了什么,我该如何解决?

编辑

我的application.jshttps://gist.github.com/NicosKaralis/5422877#file-gistfile1-txt

【问题讨论】:

  • 我们能看到你的application.js吗?主题代码是您编写的还是看起来是外部库(jquery 或类似)?
  • 检查我的编辑。我想我不明白你问了什么
  • 您的application.js 看起来不错。除主题外,建议将清单部分与 js 代码分开。在您的情况下,您可以将 js 例程移动到 app/assets/javascripts 的单独 js 文件中。我在问您是否可以找到错误消息中显示的 javascript 代码?或者它是 jQuery 或 ember 等库的一部分?
  • 我在任何地方都找不到它。我在开发模式下打开页面,可以看到纯js,并没有看到这段代码。我认为这是一些库代码,可能是 emberjs
  • 我会建议更新 js 库。如果你依赖 ember-rails gem ,请尝试更新它。

标签: ruby-on-rails deployment ember.js capistrano asset-pipeline


【解决方案1】:

显然这是由服务器上的一些旧宝石引起的。

在我删除所有内容并重新开始后,它可以正常工作。

【讨论】:

  • 您还做了什么其他事情来让这个工作正常进行吗?我遇到了完全相同的问题,但清除旧宝石并没有帮助
  • 因为我的问题很严重,我发现擦除 vps 并重新开始更容易,但根据我的发现,如果您设法从任何地方删除所有宝石和红宝石并重新安装它们,这应该(技术上)工作
【解决方案2】:

我遇到了同样的问题。将以下行添加到我的 Gemfile 对我有用:

gem 'therubyracer', require: 'v8'

【讨论】:

  • 我不需要这个 gem,因为我的生产环境已经有了 nodejs。问题出在 Gemfile.lock 上,一些 gem 冲突
  • 我的服务器也安装了节点,但仍然遇到问题。我添加了这个答案,以便它可以在某种程度上帮助其他解决这个问题的人解决相关问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多