当我使用 Neo4j 时,Heroku 认为我的 Padrino 应用程序是 Rails

Heroku thinks my Padrino app is Rails when I use Neo4j

我对我正在使用的很多堆栈都比较陌生,运行 遇到部署到 Heroku 的问题。

我希望这是一件简单的事情,因为我对 Heroku 不是很熟悉,尽管我已经搜索了 Whosebug、Heroku 的网站、Google 以及我能想到的其他任何地方,但没有任何乐趣。

这是问题所在:

  1. 我创建了一个本地 Padrino 应用程序
  2. 我使用 git
  3. 通过正常流程直接部署到 Heroku
  4. 它将其检测为 Ruby/Rack 应用程序,一切正常
  5. 我加了gemneo4jrb/neo4j
  6. 我又部署了
  7. 这次它认为这是一个 Ruby/Rails 应用程序,不会 运行

据我所知,Heroku 使用 config.ru 文件来检测 Rack 应用程序,并在 Gemfile.lock 中使用 Rails 来检测 Rails 应用程序。

neo4j gem 依赖于 'railties' 而后者又依赖于 'actionpack' 而后者又依赖于 'rails-dom-testing' 和 'rails-html-sanitizer'.所以这两个 rails 听起来 gem 都在 Gemfile.lock.

我的假设是检测 Rails 的尝试首先发生,它在 Gemfile.lock 中看到一些 rails 相关项目,然后将其视为 Rails 应用程序从此.

有没有办法告诉 Heroku 将其视为 Rack 应用程序,而不管检测的想法如何?

谢谢, 加夫

有趣的是,当我 运行 bundle 在本地发生依赖冲突时

Bundler could not find compatible versions for gem "rack":
  In Gemfile:
    neo4j (>= 0) ruby depends on
      railties (~> 4) ruby depends on
        actionpack (= 4.2.0) ruby depends on
          rack (~> 1.6.0) ruby

    padrino (= 0.12.5) ruby depends on
      padrino-core (= 0.12.5) ruby depends on
        rack (1.5.2)

Bundler could not find compatible versions for gem "activesupport":
  In Gemfile:
    neo4j (>= 0) ruby depends on
      railties (~> 4) ruby depends on
        activesupport (= 4.0.0) ruby

    padrino (= 0.12.5) ruby depends on
      padrino-core (= 0.12.5) ruby depends on
        activesupport (4.2.0)

因此,将 railties 作为依赖项移除似乎是一件好事。我刚刚在刚刚发布的 4.1.5 的 gemspec 文件中将其更改为 development_dependency,因为我们的一个规范需要它,但它不应该影响您。我刚试了一下,好像还行。

如果有一个单独的 neo4j-rails gem 可能会更好,它除了具有 padrino 支持之外还包含这些东西,但这是可以实现的。