Heroku compass构建包编译失败。

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堆栈,运行node。

5个回答

2

我想在接受的答案上再补充一些解释,因为我遇到了完全相同的问题,我相信大多数人都需要按照以下步骤取消旧的构建包并指向构建包multi:

首先取消您的旧构建包并指向构建包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。这将启动您的新多重构建包配置,并希望让您重新运行起来。根据上述配置,您应该看到nodejs和ruby构建包串行下载。

免责声明:由于heroku可能在未来几个月内更改某些内容,因此这很可能是时间敏感的材料。


0
这里的答案似乎已经过时。 根据最新文档 https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app,您可以在命令行中为您的应用程序指定多个构建包。
heroku buildpacks:set heroku/ruby
heroku buildpacks:add heroku/nodejs

这将确保我们首先运行 Ruby,然后再运行并启动 Node 应用程序。然后 Compass 就可用了。

只需添加一个 Gemfile:

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

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时运行时,我注意到了这个错误。

我还切换了构建包。我现在正在使用this buildpack,它似乎工作得很好。抱歉,有点混乱,但希望能帮到你。

以下是原始答案。

不是真正的答案,但由于我还不能评论...

我也看到了这个错误。我认为这与我们正在使用的heroku-node-compass构建包中的this line有关。

我尝试将ruby: 2.0.0添加到我的Gemfile中,但没有任何改变。


0

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

在bin/compile中,我添加了

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

在脚本检查缓存并更新或安装Compass之后,但在缓存Ruby Gems之前。


0

我最终使用了 "buildpack-multi"。

具体来说:

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

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


所以我已经尝试使用heroku-buildpack-nodejs-grunt,但是Grunt现在抱怨Compass没有安装,即使heroku run 'compass -v'会显示它已经安装。你是手动安装和运行grunt吗? - shangxiao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接