Heroku игнорирует pg gem

Я попытался развернуть новую версию своего приложения на героку. Развертывание завершается неудачно, потому что heroku говорит, что gem pg отсутствует в моем GEMFILE... У меня есть этот gem postgres в моем GEMFILE. Я также искал некоторые ответы, но ни один не работал ... Как у кого-нибудь есть идея?

Я использую Ruby 2.0.0p247, Rails 3.2.14, refinery-cms 2.1.0

Вот мой Gemfile:

source 'https://rubygems.org'
ruby '2.0.0'

gem 'rails'
gem 'newrelic_rpm'

group :production do
  gem 'pg'
  gem 'fog'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails'
  gem 'coffee-rails'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby'

# To use Jbuilder templates for JSON
 gem 'jbuilder'

# Use unicorn as the app server
 gem 'unicorn'

# Deploy with Capistrano
 gem 'capistrano'

# To use debugger
 gem 'debugger'

# The Heroku gem allows you to interface with Heroku's API
gem 'heroku'

# Fog allows you to use S3 assets (added for Heroku)
gem 'fog'

# Postgres support (added for Heroku)
#gem 'pg'

#Connecting to Amazon S3
gem 'aws-s3'
#gem 'taps'

# Refinery CMS
#gem 'refinerycms', '~> 2.0.0', :git => 'git://github.com/refinery/refinerycms.git', :branch => '2-0-stable'
gem 'refinerycms'

# Specify additional Refinery CMS Extensions here (all optional):
gem 'refinerycms-i18n'
#  gem 'refinerycms-blog', '~> 2.0.0'
#  gem 'refinerycms-inquiries', '~> 2.0.0'
#  gem 'refinerycms-search', '~> 2.0.0'
gem 'refinerycms-page-images'

gem 'refinerycms-announcements', :path => 'vendor/extensions'
gem 'refinerycms-publications', :path => 'vendor/extensions'
gem 'refinerycms-workers', :path => 'vendor/extensions'

И вот сообщение об ошибке:

-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       rake aborted!
       Please install the postgresql adapter: `gem install activerecord-postgresql-adapter` (pg is not part of the bundle. Add it to Gemfile.)
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/bundler-1.3.2/lib/bundler/rubygems_integration.rb:214:in `block in replace_gem'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.14/lib/active_record/connection_adapters/postgresql_adapter.rb:7:in `<top (required)>'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `require'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `block in require'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:236:in `load_dependency'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `require'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_specification.rb:50:in `resolve_hash_connection'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_specification.rb:41:in `resolve_string_connection'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_specification.rb:27:in `spec'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_specification.rb:130:in `establish_connection'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.14/lib/active_record/railtie.rb:88:in `block (2 levels) in <class:Railtie>'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/lazy_load_hooks.rb:26:in `block in on_load'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/lazy_load_hooks.rb:25:in `each'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/lazy_load_hooks.rb:25:in `on_load'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.14/lib/active_record/railtie.rb:80:in `block in <class:Railtie>'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/railties-3.2.14/lib/rails/initializable.rb:30:in `instance_exec'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/railties-3.2.14/lib/rails/initializable.rb:30:in `run'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/railties-3.2.14/lib/rails/initializable.rb:55:in `block in run_initializers'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/railties-3.2.14/lib/rails/initializable.rb:54:in `each'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/railties-3.2.14/lib/rails/initializable.rb:54:in `run_initializers'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/railties-3.2.14/lib/rails/application.rb:136:in `initialize!'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/railties-3.2.14/lib/rails/railtie/configurable.rb:30:in `method_missing'
       /tmp/build_37zyls4tcoz59/config/environment.rb:5:in `<top (required)>'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `require'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `block in require'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:236:in `load_dependency'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `require'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/railties-3.2.14/lib/rails/application.rb:103:in `require_environment!'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/railties-3.2.14/lib/rails/application.rb:305:in `block (2 levels) in initialize_tasks'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.14/lib/sprockets/assets.rake:93:in `block (2 levels) in <top (required)>'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.14/lib/sprockets/assets.rake:60:in `block (3 levels) in <top (required)>'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.14/lib/sprockets/assets.rake:23:in `invoke_or_reboot_rake_task'
       /tmp/build_37zyls4tcoz59/vendor/bundle/ruby/2.0.0/gems/actionpack-3.2.14/lib/sprockets/assets.rake:29:in `block (2 levels) in <top (required)>'
       Tasks: TOP => environment
       (See full trace by running task with --trace)
       Precompiling assets failed, enabling runtime asset compilation
       Injecting rails31_enable_runtime_asset_compilation
       Please see this article for troubleshooting help:
       http://devcenter.heroku.com/articles/rails31_heroku_cedar#troubleshooting

person gadreel    schedule 16.08.2013    source источник
comment
Вы установили RAILS_ENV на что-то другое, кроме производства на героку? Я бы также попытался вытащить команду gem из группы :production.   -  person Gavin Miller    schedule 16.08.2013
comment
Вам также нужно сделать gem install activerecord-postgresql-adapter или добавить его в свой Gemfile.   -  person vee    schedule 16.08.2013
comment
Это все еще не работает. Я добавил ENV['RAILS_ENV'] ||= 'production' в свой файл environment.rb. Я также добавил gem activerecord-postgresql-adapter, а также удалил тег актива и производства.   -  person gadreel    schedule 16.08.2013
comment
Когда вы нажимаете, он должен перечислить драгоценные камни, которые он устанавливает/использует. Вы видите пг? Отображается ли pg в вашем Gemfile.lock?   -  person catsby    schedule 17.08.2013
comment
только на моей локальной машине   -  person gadreel    schedule 17.08.2013
comment
@gadreel Может ли heroku запутаться в том, какую версию рельсов вы хотите использовать? Вы не указываете версию в своем gemfile, поэтому я не уверен, что он пытается использовать 4.0.0 на сервере. При нажатии на heroku список используемых драгоценных камней показывает ожидаемую версию рельсов? Я упоминаю об этом только потому, что знаю, что конвейер ресурсов работает по-другому на героку с рельсами 4.   -  person chucknelson    schedule 17.08.2013
comment
@chucknelson Спасибо, попробую. Думаю, потому что эта проблема возникла после выпуска Rails 4.0.   -  person gadreel    schedule 17.08.2013
comment
Это не сработало. Я также пытался запустить heroku run gem install pg Running gem install pg, подключенный к терминалу... up, run.7211 Извлечение: pg-0.16.0.gem (100%) Создание собственных расширений. Это может занять некоторое время... Успешно установлены недопустимые параметры pg-0.16.0: -f Fivefish (недопустимые параметры игнорируются) Документация по синтаксическому анализу для pg-0.16.0 не может преобразовать \x84 из ASCII-8BIT в UTF-8 для lib /pg_ext.so, пропуская Установка документации ri для pg-0.16.0 1 гем установлен   -  person gadreel    schedule 17.08.2013
comment
Но проблема все еще существует.   -  person gadreel    schedule 17.08.2013
comment
@gadreel Я знаю, что он жалуется на pg, но пробовали ли вы какие-либо из предложений на странице устранения неполадок, на которую вас отправляет heroku? В частности, вариант config.assets.initialize_on_precompile = false или тестирование ресурсов рейка: предварительно скомпилируйте локально.   -  person chucknelson    schedule 18.08.2013


Ответы (3)


согласно гемфайлу:

# Postgres support (added for Heroku)
#gem 'pg'

pg закомментирован. раскомментируйте его, чтобы установить

gem 'pg'

Например, в моем gemfile я работаю в Windows, а heroku — нет. Так что я

gem "pg", '~> 0.15.1', :group => :production
group :development, :test do
    gem 'pg', "~> 0.15.1", :platform => [:mswin, :mingw]

так как у вас должен быть установлен какой-то db, предпочтительно pg, так как это heroku

также, как сказал Гэвин в комментариях - убедитесь, что вы находитесь в производстве, так как кажется, что хероку не думает об этом.

person Nick Ginanto    schedule 16.08.2013
comment
После этого можете смело удалять и из группы production. - person Chris Peters; 16.08.2013
comment
Я думаю, что я также пробовал это. Я буду тестировать это снова. В примере у меня это было также в производственном теге и вне этого тега. - person gadreel; 16.08.2013
comment
Это не сработало. Я сделал пакетную установку. git коммит. мастер толчка героку - person gadreel; 16.08.2013

Проблема в том, что у вас есть гем pg в производственной группе. Поэтому, когда активы предварительно скомпилированы на Heroku (который использует глобальную группу + группу ресурсов), то гем PG действительно не может быть найден, потому что он находится в рабочей группе.

Я бы предложил, чтобы гем pg был в глобальной группе и был доступен для групп активов.

person John Beynon    schedule 16.08.2013
comment
Как я уже упоминал, я также пробовал это. Это все еще не работает. - person gadreel; 16.08.2013

О нет ... решение состояло в том, чтобы удалить мой репозиторий git и создать новый. Я не знаю почему, но мой репозиторий испортился (я добавил новые файлы и т. д.) и поэтому не зафиксировал все данные. После подсказки Чакнельсона я попытался заблокировать определенную версию рельсов и увидел, что героку этого не удалось.

person gadreel    schedule 18.08.2013