Heroku指南针buildpack指南针失败

时间:2014-08-02 02:13:33

标签: heroku gem compass-sass cedar

我正在尝试将指南针build-pack推送到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

我不确定他们改变了红宝石版本或其他什么后发生了什么

有人知道可能是什么问题和修复。

我使用Cedar堆栈,运行节点

5 个答案:

答案 0 :(得分: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仅提取指南针:

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

现在你需要这样做:

bundle install

将添加Gemfile.lock

将所有内容提交给git并推送回heroku。这将启动您的新的多buildpack配置,并希望让您恢复运行。您应该看到nodejs和ruby buildpacks按照上述配置顺序下载。

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

答案 1 :(得分:0)

修改

嗯,我错了。在我们的例子中,由于一些糟糕的SASS,compass:dist任务失败了。这最终导致了这个错误。在我的霰弹枪修复方法中,我编辑了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。我现在正在使用this buildpack这似乎工作正常。对不起,有点混乱,但希望有所帮助。

以下的原始答案。

不是真正的答案,但因为我还没有发表评论......

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

我尝试将ruby: 2.0.0添加到Gemfile,但这并没有什么区别。

答案 2 :(得分:0)

我最终使用“buildpack-multi”

小细节:

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

  2. 拥有Node和Ruby multipack允许我使用these instructions从Ruby Gem安装Compass。

答案 3 :(得分:0)

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

在bin / compile中,我添加了

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

在脚本检查了缓存之后,更新或安装了指南针,然后缓存了红宝石。

答案 4 :(得分: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'