自学 Rails 将第一个应用程序部署到 heroku - 上传失败 - sqlite3 和 postgresql 故障

2024-02-08

我正在自学 Rails。我是一名程序员,但不是网络程序员。我正在阅读迈克尔·哈特尔的书here http://ruby.railstutorial.org/

它提到从一开始就开始部署您的应用程序是个好主意。我同意。所以我在 Heroku 上获得了一个帐户并完成了设置等。然后创建了我的第一个应用程序 git 和作品。然后按照 Heroku 网站上的所有说明进行操作。最后,我使用以下命令将我的应用程序推送到 Heroku:

git push heroku master

书上说,这个阶段可能会出现问题,因为我机器上的应用程序正在使用 sqlite3,而 Heroku 想要 postgresql。 这本书建议将我的应用程序的 gem 文件中的一行更改为

gem 'sqlite3'

to

gem 'sqlite3-ruby', :group => :development

我尝试过,然后运行捆绑安装,然后尝试推送该应用程序。没有运气 我在控制台上收到此消息:

An error occured while installing sqlite3 (1.3.6), and Bundler cannot continue.
   Make sure that `gem install sqlite3 -v '1.3.6'` succeeds before bundling.

! !无法通过 Bundler 安装 gem。 ! ! Heroku 推送被拒绝,无法编译 Ruby/rails 应用程序

所以我尝试了 Heroku 网站的建议here https://devcenter.heroku.com/articles/rails3

更改我的 gemfile

由此:

gem 'sqlite3'

to this:

gem 'pg'

所以我尝试了这种方法,然后运行“捆绑安装”。但这也不起作用。我在控制台上收到此消息:

Installing pg (0.13.2) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/AM/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/AM/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config


Gem files will remain installed in /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2     for inspection.
Results logged to /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2/ext/gem_make.out
An error occured while installing pg (0.13.2), and Bundler cannot continue.
Make sure that `gem install pg -v '0.13.2'` succeeds before bundling.

尝试运行这个命令:

gem install pg

失败并显示以下错误消息:

Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

/Users/AM/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
--with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
--with-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/Users/AM/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
--with-pg
--without-pg
--with-pg-dir
--without-pg-dir
--with-pg-include
--without-pg-include=${pg-dir}/include
--with-pg-lib
--without-pg-lib=${pg-dir}/lib
--with-pg-config
--without-pg-config
--with-pg_config
--without-pg_config


Gem files will remain installed in /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2     for inspection.
Results logged to /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2/ext/gem_make.out

有人可以帮我解决这个问题吗?我遇到了障碍。不知道下一步该做什么。谢谢


您的情况的正确配置已发布在其他答案中,为了您的方便,我将其附在此处。

group :production do
  gem 'pg'
end

group :development, :test do
  gem 'sqlite3'
end

但是,请记住,当您跑步时bundle install,bundler 将尝试为所有环境安装所有 gem。稍后,它将在运行时仅加载指定环境的 gem。

这就是为什么在您的本地计算机上尝试安装pg以及。

您有两种可能来解决编译错误:

  1. Install libpq,所需的库pg要编译的宝石。您不需要安装完整的 PostgreSQL 客户端或堆栈,libpq足以通过编译。在 MacOSX 上,您可能想使用以下命令安装它homebrew https://brew.sh/.

  2. 告诉捆绑程序在运行安装时跳过不必要的组。

     bundle install --without production
    

附带说明一下,请记住 SQLite 和 PostgreSQL 是两个不同的数据库。使用与生产环境尽可能相似的开发环境始终是一个好主意。我个人的建议是在本地计算机上安装 PostgreSQL 并在开发和生产中使用它。

再说一遍,自制软件是你的朋友。

$ brew install postgresql
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自学 Rails 将第一个应用程序部署到 heroku - 上传失败 - sqlite3 和 postgresql 故障 的相关文章

  • Rails 4 在 capistrano 部署后未检测到应用程序

    我目前正在尝试使用 Capistrano 3 部署 Rails 4 应用程序 一切都很顺利 但我遇到了一个问题 是的 我无法在我的应用程序中运行任何 Rails 命令 这是我相关的 capistrano 插件 gem capistrano
  • 使用 Rails 进行 Paypal 自适应(链式)支付

    众所周知 PayPal 支持自适应 链式 支付 其中一个买家发送款项 并使用一个 API 帐户持有人进行处理 并且该款项可以发送给多个 用户 我的问题是 这个方法是否也支持 接受信用卡 对于 买方 是否可以抓卡 详细信息请访问我们的网站并使
  • -bash:pg_dump:找不到命令

    我正在尝试在本地为我的 Rails 应用程序提取一个生产数据库 我本地的 postgres 版本太低 所以我需要从 9 4 1 更新到 Postgresql 9 6 5 我通过 Homebrew 安装了 Postgres 9 6 6 如下所
  • 水豚找不到元标签

    Capybara 2 1 0 似乎没有找到任何元标记 rdb 1 p page find meta Capybara ElementNotFound Exception Unable to find css meta 即使他们出现在page
  • ActiveRecord oracle_enhanced 适配器无法加载 ruby​​-oci8 库

    rails g scaffold失败 但 oci 脚本和 irb 数据查询有效 无法弄清楚出了什么问题 rails g scaffold table field1 integer field2 string invoke active re
  • Rails 资产管道:CSS 无效

    我正在尝试使用http designshack net articles css build an animated photo wall with css http designshack net articles css build a
  • 如何检查rails上传的文件类型?

    我如何查看即将到来的文件类型 例如 csv 或 xls 请给个代码 我得到文件是这样的 aut name uploaded io original filename File open Rails root join public uplo
  • Ruby on Rails 最酷的功能是什么,为什么选择它? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我问这个问题之前 我浏览了 SO 上 Ruby on Rails 的搜索结果 找不到太多 但以下 在此页面上找到 https stackove
  • 如何在rails中使用npm包?

    我正在尝试使用王牌编辑 https github com ajaxorg ace在我的 Ruby on Rails 应用程序中 大部分视图由 React 组件组成 我正在使用反应轨道宝石 https github com reactjs r
  • ruby on Rails,会话过期通知

    我正在使用 ruby 1 9 3 和 Rails 3 2 我的实际会话处理如下所示 会话助手 def sign in user cookies remember token value user remember token expires
  • Ruby on Rails content_for 会自动进行 HTML 转义吗?

    使用 Rails 3 0 6 我发现在视图中 如果我执行 content for food name Macaroni Cheese 然后当我使用它回来时content for food name 那么 将被制作成 amp 已经 如果我做一
  • 是否可以让 Capistrano 通过反向 SSH 隧道进行结帐?

    我正在开发一个驻留在公共主机上的应用程序 但我必须将其源代码保存在公司防火墙后面的 Git 存储库中 我越来越very厌倦了通过缓慢的部署scp 复制整个存储库并在每次部署时通过 SSH 传送 并且希望远程主机只需执行git pull更新
  • Rails Searchkick / Elasticsearch has_many 和belongs_to 关联

    我尝试使用 Searchkick 运行搜索并基于多个模型返回 我的书本模型包含这个 class Book lt ActiveRecord Base searchkick has many book subjects has many sub
  • 设备注册控制器获取零资源的自定义操作

    基本上我想要有两个单独的操作来更改密码和更改电子邮件 而不是只有一个 我已经更新了我的路由以指向继承自 Devise RegistrationsController 的新控制器 我的路线 rb devise for users contro
  • 自定义变形在rails3上不起作用?

    我正在使用 Rails 3 0 1 并在initializers inflections rb 中有以下代码 ActiveSupport Inflector inflections do inflect inflect irregular
  • 在 Rails 中禁用连接池以使用 PgBouncer

    我们有一个 Ruby on Rails 4 2 8 项目 可以访问大型 PostgreSQL 数据库 我们将使用 PgBouncer 添加一个新的连接池服务器 由于 PgBouncer 将处理数据库连接池 我们是否需要关闭 Rails 自动
  • save_and_open_page 已停止提供我的 CSS

    我的测试设置工作得很好 每当我打电话时 都能提供正确格式的 css 页面save and open page从测试中 然后 我设置了一些 javascript 测试 并对我的设置进行了一些更改 抱歉 我无法详细说明所有内容 我没有足够详细地
  • Heroku 和 sails 应用程序 |崩溃和超时

    我有一个非常基本的帆应用程序在本地启动并运行 当我部署到 Heroku 时 我无法从应用程序获得响应 最终得到 应用程序错误 我有时会收到 未收到数据 赫罗库日志 2015 08 30T22 06 50 949475 00 00 herok
  • 如何在服务调用后检查 rspec 中的数组更改?

    目标很简单 例如我们有一个数组 name ghost state rejected name donkey state rejected 运行服务调用后UpdateAllUsers 这会将所有用户更改为 accepted name ghos
  • Rails 4 的 mobile_fu

    我正在尝试将我的应用程序从 Rails 3 2 13 切换到 Rails 4 在此过程中 我遇到了一个主要障碍 我使用 gem mobile fu 来确定用户是否来自移动设备 该 gem 需要 Railties 3 2 13 但 Rails

随机推荐