使用postgresql在heroku上部署rails app

时间:2015-01-06 19:22:24

标签: ruby-on-rails ruby postgresql heroku

我运行

时出现错误
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 app:

rails new <servername>

而不是:

rails new <servername> -d postgresql

我应该只在这次启动应用程序时使用postgresql进行初始化吗?我无法弄清楚为了部署我缺少什么配置。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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