【问题标题】:Heroku compass buildpack compass failHeroku 指南针 buildpack 指南针失败
【发布时间】:2014-09-25 07:02:49
【问题描述】:

我正在尝试将指南针构建包推送到 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 堆栈,运行节点

【问题讨论】:

    标签: heroku gem compass-sass cedar


    【解决方案1】:

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

    根据最新的文档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'
    

    【讨论】:

      【解决方案2】:

      我最终使用了“buildpack-multi”

      小细节:

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

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

      【讨论】:

      • 所以我已经用 heroku-buildpack-nodejs-grunt 进行了尝试,但是 Grunt 现在抱怨没有安装 Compass,即使 heroku run 'compass -v' 会显示它是。您是手动安装和运行 grunt 吗?
      【解决方案3】:

      编辑

      好吧,我错了。在我们的例子中,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 时运行时,我注意到了错误。

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

      原答案如下。

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

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

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

      【讨论】:

        【解决方案4】:

        我无法让多构建包与我的应用程序一起使用,但我能够让位于 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​​ gem 之前。

        【讨论】:

          【解决方案5】:

          我想在已接受的答案中添加更多解释,因为我遇到了完全相同的问题,我相信大多数人都需要按如下方式取消设置旧的 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 可能会在接下来的几个月里改变一些东西。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-01-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-10
            • 1970-01-01
            • 2017-01-09
            • 1970-01-01
            相关资源
            最近更新 更多