4

Rails 3.2.2で実行していて、Cedarスタックにデプロイしています。それでも次のエラーが発生します。

-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       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?

ガイドでさえfalseに設定config.assets.initialize_on_precompileすることを提案していますが、次のように述べています。

必ずrakeアセットをテストしてください:デプロイする前にローカルでプリコンパイルしてください。このフラグの値に関係なく、アセットがアプリケーションオブジェクトまたはメソッドを参照している場合、それらは開発モードのスコープ内にあるため、バグが発生する可能性があります。

このようないくつかの記事は、 Herokuラボの使用を提案しています。しかし、これでも、まだベータ版であるため、独自の意味があります。

私はオンラインで他のいくつかの情報源を読みました:

Rails 3.1アセット:プリコンパイルデータベースへの接続

rakeアセット:precompileがherokuで機能しない

すべてに異なるソリューションが付属しています。では、このエラーを回避する適切な方法は何ですか?Herokuラボで大きな問題が発生した人はいますか?より良いアプローチはありますか?

PS。ただ明確にします。実行中ですか、rake assets:precompile RAILS_ENV=developmentそれともrake assets:precompile RAILS_ENV=productionこれをローカルで実行する適切な方法ですか?

4

2 に答える 2

2

この問題は、そのrakeタスクを実行しているときに、アプリケーションがpostgresに接続しようとしているという事実に起因しています。エラーを取り除く唯一の方法は、これが起こらないようにするか、user_env_compileあなたが言及したアドオンを使用することです。

于 2012-05-04T11:52:51.943 に答える
1

(1)あなたが提案したように私はいつもこれを追加します

config.assets.initialize_on_precompile = false

(2)ただし、ActiveAdminやDeviseを使用している場合は、routes.rbを次のようにコーディングして、アセットをプリコンパイルするときにルートを除外します。

  unless ARGV.join.include?('assets:precompile')
    ActiveAdmin.routes(self)

    devise_for :admin_users, ...etc....
    devise_for :users, ...etc...

    devise_scope :user do
    get "/login", ..etc
  end

ここや他の場所のよう

于 2012-05-10T10:04:57.470 に答える