【问题标题】:deploying rails app on heroku with postgresql使用 postgresql 在 Heroku 上部署 Rails 应用程序
【发布时间】:2015-03-04 12:51:08
【问题描述】:

我在运行时不断收到错误

git push heroku master

这是我得到的错误:

remote:        Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
remote:        
remote:        /tmp/build_6084782c356fe559294d11bd3affdd4e/vendor/ruby-2.0.0/bin/ruby extconf.rb
remote:        checking for sqlite3.h... no
remote:        sqlite3.h is missing. Try 'port install sqlite3 +universal',
remote:        'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'

我的 config/database.yml 看起来像这样:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5

development:
  <<: *default
  database: small_time_grocer_development

test:
  <<: *default
  database: small_time_grocer_test

production:
  <<: *default
  database: small_time_grocer_production
  username: small_time_grocer
  password: <%= ENV['SMALL_TIME_GROCER_DATABASE_PASSWORD']

我的 Gemfile 如下:

source 'https://rubygems.org'

gem 'rails', '4.2.0'

gem 'rails_12factor', group: :production

gem 'sass-rails', '~> 5.0'

gem 'uglifier', '>= 1.3.0'

gem 'coffee-rails', '~> 4.1.0'

gem 'jquery-rails'

gem 'turbolinks'

gem 'jbuilder', '~> 2.0'

gem 'sdoc', '~> 0.4.0', group: :doc

gem 'pg'


# devise gems
gem 'therubyracer'
gem 'devise'
gem 'omniauth'
gem 'omniauth-facebook'

# gem for error respond_to featurefrom responders gem
gem 'responders', '~> 2.0'

group :development, :test do

  gem 'byebug'

  gem 'web-console', '~> 2.0'

  gem 'spring'
end

ruby "2.1.5"

我在 gemfile 中的任何地方都没有 sqlite3,但即使在提交更改并推送到 heroku 之后,我仍然会收到此错误。有什么想法吗?

我还应该在开始时提到,我不知道 rails new 命令的 -d 标志。所以我最初使用以下方式启动 rails 应用程序:

rails new <servername>

而不是:

rails new <servername> -d postgresql

我应该只在这一次使用 postgresql 初始化时重新启动应用程序吗?我不知道为了部署我缺少什么配置。

【问题讨论】:

  • Gemfile 中有 sqlite 吗?如果是这样,您是否在删除后运行了bundle install
  • 是的,我最初在 gem 文件中有 sqlite 3,但我在取出它后重新运行了 bundle install,提交了 Gemfile.lock,而不是推送到 heroku,同样的错误。另外,@mmichael 有没有办法检查它是否是最新的?
  • 查看Gemfile.lock的内容,确保那里没有sqlite3
  • 我删除了 2 个 sqlite3 实例,提交并推送,同样的错误
  • 嗯,它说我有一个干净的工作目录,即使我对 Gemfile.lock 进行了更改

标签: ruby-on-rails ruby postgresql heroku


【解决方案1】:

尝试运行bundle update(它将更新Gemfile.lock),然后如果GemfileGemfile,lock 中有任何更改,则再次推送更改。 然后尝试再次部署。

【讨论】:

【解决方案2】:

我经常需要在运行 bundle install 或 bundle update 之前删除 Gemfile.lock 文件,以便成功生成新的 Gemfile.lock 文件。

然后将更改保存到 git 以推送到 Heroku:

git add -A
git commit -m "update gemfile"
git push heroku master

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 2014-08-08
    • 2016-06-23
    • 2020-05-15
    • 2019-10-09
    • 2020-02-20
    • 2015-04-23
    • 1970-01-01
    • 2018-06-10
    相关资源
    最近更新 更多