5

我正在尝试将指南针构建包推送到 heroku 服务器,https://github.com/stephanmelzer/heroku-buildpack-nodejs-grunt-compass

它直到最近才起作用,我不确定heroku方面发生了什么,它不再起作用并给我这个错误:

bash: /app/.gem/ruby/1.9.1/bin/compass: /app/vendor/ruby-1.9.2/bin/ruby: bad interpreter: No such file or directory

我不确定他们改变了 ruby​​ 版本或其他什么

有人知道可能是什么问题和解决方法。

我使用 Cedar 堆栈,运行节点

4

5 回答 5

2

我想在接受的答案中添加更多解释,因为我遇到了完全相同的问题,我相信大多数人都需要取消设置旧的 buildpack,如下所示:

首先取消设置旧的 buildpack 并指向 buildpack-multi:

heroku config:unset BUILDPACK_URL
heroku config:add BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git

Buildpack multi 要求您添加自己的 .buildpacks 文件。这个配置是我最终成功使用的:

cat .buildpacks
https://github.com/heroku/heroku-buildpack-nodejs.git
https://github.com/heroku/heroku-buildpack-ruby.git

这是我的 Gemfile,仅用于拾取 Compass:

cat Gemfile
source 'https://rubygems.org'
gem 'compass'

现在你需要做:

bundle install

这将添加一个 Gemfile.lock

将所有内容提交到 git 并推回 heroku。这将启动您的新多 buildpack 配置,并有望让您重新启动并运行。您应该看到 nodejs 和 ruby​​ buildpacks 按照上述配置连续下载。

免责声明:这可能是对时间敏感的材料,因为 heroku 在接下来的几个月里很可能会改变一些东西。

于 2014-09-07T20:03:58.927 回答
0

编辑

好吧,我错了。在我们的例子中,compass:dist由于一些糟糕的 SASS,任务失败了。这最终排除了这个错误。在我修复它的霰弹枪方法中,我将 Gruntfile heroku 任务编辑为:

grunt.registerTask('heroku', function () {
  grunt.log.warn('The `heroku` task has been deprecated. Use `grunt build` to build for deployment.');
  grunt.task.run(['compass:dist']);
});

当它在部署到 heroku 时运行时,我注意到了这个错误。

我还切换了 buildpacks。我现在正在使用这个似乎工作正常的buildpack 。抱歉,有点混乱,但希望对您有所帮助。

原答案如下。

不是一个真正的答案,但因为我还不能评论......

也看到了这个错误。我认为这与我们正在使用的 heroku-node-compass buildpack 中的这一行有关。

我尝试添加ruby: 2.0.0到我的Gemfile,但这并没有什么不同。

于 2014-08-11T21:35:39.893 回答
0

我无法让多重构建包与我的应用程序一起使用,但我能够让位于https://github.com/stephanmelzer/heroku-buildpack-nodejs-grunt-compass的构建包再次与 Heroku 一起使用:

在 bin/compile 中,我添加了

cp -r /app/vendor/ruby-1.9.2 $build_dir/vendor

在脚本检查缓存并更新或安装指南针之后以及缓存红宝石宝石之前。

于 2014-11-05T02:45:22.690 回答
0

我最终使用了“buildpack-multi”

小细节:

  1. 使用buildpack-multi在 Heroku Cedar 上运行 Node,否则它会将服务器检测为 Ruby 堆栈(如果我没记错的话)。

  2. 拥有 Node 和 Ruby multipack 允许我使用这些说明从 Ruby Gem 安装 Compass 。

于 2014-08-12T00:57:41.687 回答
0

这里的答案似乎已经过时了。

根据最新的文档https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app您可以从命令行为您的应用指定多个构建包:

heroku buildpacks:set heroku/ruby
heroku buildpacks:add heroku/nodejs

这将确保我们首先运行 ruby​​。然后我们运行并启动节点应用程序。然后指南针可用。

只需添加一个 Gemfile:

source 'https://rubygems.org'
gem 'compass'
于 2017-10-28T22:57:47.103 回答