1

Heroku にデプロイすると、次のエラー メッセージが表示されます。

Connecting to database specified by DATABASE_URL
   rake aborted!
   could not connect to server: Connection refused
   Is the server running on host "127.0.0.1" and accepting
   TCP/IP connections on port 5432?

gem 'impressionist'興味深いことに、これは Gemfileに追加した後にのみ発生し始めました。局所的には問題ありません。gem をコメントアウトすると、デプロイメントのために解決されます。

Heroku から受け取ったエラーは十分に文書化されていますが、失敗の原因についての手がかりは何もありません。

印象派の宝石はかなり人気があり、それに由来する同様の問題は見たことがありません。そのため、宝石が問題の根源であることに懐疑的です。

アップデート

完全な Gemfile を次に示します。これは、展開時に (上記の gem が追加されるまで) 正常に動作する通常のアプリであることを示すためのものです。

source 'https://rubygems.org'

gem 'rails', '3.2.13'
gem 'bcrypt-ruby', '3.0.1'
gem 'jquery-rails', '2.2.1'
gem 'impressionist'
# gem 'will_paginate'

group :assets do
  gem 'sass-rails',   '~> 3.2.6'
  gem 'uglifier', '>= 1.3.0'
  gem 'jquery-ui-rails'
end

group :development, :test do
  gem 'quiet_assets'
  gem 'webrick', '~> 1.3.1'
  gem 'sqlite3', '1.3.7'
  gem 'hirb'
end

group :production do
  gem 'thin'
  gem 'pg', '0.12.2'
end
4

3 に答える 3

4

「問題」は、Impressionist がその場でデータベース構成をセットアップすることでした。したがって、DB アダプターをロードする必要があります。例として ActiveRecord を使用してみましょう。ActiveRecord::Base をロードしようとすると、DB にまだ接続していないため、Heroku がそのメッセージで通知する例外が発生します。Devise にはこの問題がありました plataformatec/devise#1339

cancan gem を追加し、印象派を削除したところ、同じエラーが発生しました。

幸いなことに、解決策があります。

# config/application.rb
# Forces application to not load models or access the DB when precompiling
# assets
config.assets.initialize_on_precompile = false

ありがとう :)

于 2013-09-08T00:06:07.130 に答える
1

その宝石の GitHub プロジェクトで問題を報告することをお勧めします。ほとんどの場合、初期化プロセスを使用してデータベースに接続しようとしていますが、その段階ではデータベースを使用できないため、失敗しています。

config/environments/production.rbファイルに次の行を追加することで、この問題を解決できる場合があります。

 config.assets.initialize_on_precompile = false
于 2013-09-05T00:14:49.403 に答える
0

production.rb ファイルでこれを変更します

config.assets.compile = false

次にアセットをローカルでプリコンパイルします

RAILS_ENV=production bundle exec rake assets:precompile

public/assets ディレクトリが作成されます。このディレクトリ内に、Rails 3 でコンパイルされたアセットの md5sums を含む manifest.yml があります。Rails 4 では、ファイルは manifest-.json になります。public/assets を git リポジトリに追加すると、Heroku で利用できるようになります。

git add public/assets
git commit -m "vendor compiled assets"

この後、コードをプッシュします

于 2013-09-05T05:30:17.530 に答える