【问题标题】:Problem pushing a master to heroku将大师推到heroku的问题
【发布时间】:2010-10-03 03:06:14
【问题描述】:

我正在关注一个在线 railstutorial

一切正常,但是当尝试将主目录推送到 heroku 时。 说到这里:

Installing rails3_serve_static_assets... done
-----> Gemfile detected, running Bundler version 1.0.0

install everything but sqlite3, here it output:
Installing sqlite3 (0.1.1) /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems/installer.rb:164:in `install': sqlite3 requires Ruby version >= 1.9.1. (Gem::InstallError)
from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/source.rb:100:in `install'
        from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/installer.rb:55:in `run'
        from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/spec_set.rb:12:in `each'
        from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/spec_set.rb:12:in `each'
        from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/installer.rb:44:in `run'
        from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/installer.rb:8:in `install'
        from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/cli.rb:217:in `install'
        from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/vendor/thor/task.rb:22:in `send'
        from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/vendor/thor/task.rb:22:in `run'
        from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
        from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/vendor/thor.rb:246:in `dispatch'
        from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/vendor/thor/base.rb:389:in `start'
        from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.0/bin/bundle:13
        from /usr/ruby1.8.7/bin/bundle:19:in `load'
        from /usr/ruby1.8.7/bin/bundle:19
       FAILED:
 !     Heroku push rejected, failed to install gems via Bundler

现在的事情是: 我使用的是 ruby​​ 1.9.2,1.8.7 甚至没有安装。 当我列出我的本地 gem 时,bundle 有这两个版本: bundler (1.0.2, 1.0.1) (我不知道为什么) 所以似乎路径有问题,但我不知道如何解决它。 感谢您的帮助。

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3 heroku


【解决方案1】:

你走错了路 - Heroku 不运行 Sqlite,它运行 PostgreSQL。当您部署您的应用程序时,它会为您创建一个新的 database.yml 文件。所以你不应该在你的 gemfile 中指定 Sqlite - 你应该只为你的开发环境指定它。

类似这样的:

group :production, :staging do
  gem "pg"
end

group :development, :test do
  gem "sqlite3-ruby", :require => "sqlite3"
end

如果您想了解更多有关 Heroku 数据库的信息,请转至 here。 我问了一个类似的问题(并得到了我的答案)here

【讨论】:

  • +1 完美,按照 ruby​​ on rails 教程修复了我对 heroku 的第一次部署
【解决方案2】:

您想使用sqlite3-ruby gem,而不是sqlite3 gem。

【讨论】:

  • 我支持这个答案;您描述的错误正是您尝试在 Gemfile 中使用 gem 'sqlite3' 推送到 Heroku 时发生的情况。将其替换为gem 'sqlite3-ruby', :require => 'sqlite3',执行bundle install,提交并再次推送。
【解决方案3】:

Ruby 1.9 isn't yet supported 在 heroku 上。尝试使用 1.8.7(例如,将您的 sqlite3 gem 降级一点)。

【讨论】:

  • 我不确定@elmany 遇到的问题,但在过去的几周里,我一直在使用 Heroku 专门使用 1.9.2 和 Rails 3.0,一切都很好.我唯一一次必须恢复到 1.8.7 是在执行 db:pull 时。
  • @Joost Strange,也许我指的 heroku 页面已经过时了。不知道,因为我只运行 rails 2。
  • 是的,Heroku 现在支持 Ruby 1.9.2。但不是在我试图推动的时候。此外,对于生产,必须忘记 sqlite 并使用 pg
【解决方案4】:

你真的要在 Heroku 上安装 sqlite 吗?该宝石不应该仅限于您的开发环境,而不是生产环境吗?您无法在 Heroku 上使用 sqlite 做很多事情,因为您无法写入文件系统,也无法指定自定义数据库(Heroku 完全管理您在推送应用程序上的数据库设置)。

【讨论】:

  • Heroku 足够聪明,可以在生产环境中忽略 sqlite。您可以将它用于本地开发,而无需对 Gemfile 执行任何特殊操作来触发它在生产中被忽略或排除。他们甚至会忽略您的 database.yml 的生产块并自动使用 PostgreSQL。他们的只读文件系统使得无论如何都无法使用 sqlite。
【解决方案5】:

1.8.7 出现在您的日志中的原因是 heroku 上的默认 ruby​​ 版本。如果您想使用 1.9.2,请参阅关于切换堆栈的文档:http://docs.heroku.com/stack

【讨论】:

    【解决方案6】:

    确保安装 pg.至少那是我做错的。 Here 你会在这方面找到一些帮助。 groupthingy 看起来也很合理

    【讨论】:

      猜你喜欢
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多