レニーズを使用せずにHeroku上のサーバーに移動すること

私は最近、herokuインスタンスに虚栄心を使っていくつかのA/Bテスト実験を展開しました。しかし、ダッシュボードにアクセスするたびに/ vanity次のエラーがログに表示されます

- ActionView::Template::Error (Connection refused - Unable to connect to Redis on 127.0.0.1:6379):
-     1: 
    - 2: <% experiments.sort_by { |id, experiment| experiment.created_at }.reverse.each do |id, experiment| %> - 3:
  • - 4: <%= render :file => Vanity.template("_experiment"), :locals => { :id => id, :experiment => experiment } %> - 5:
  • -

しかし、URLに行くための赤字は正しく設定されているようで、虚栄心はそれにアクセスできるようです 例えば

irb(main):011:0> Vanity.playground.connection
=> redis://bluegill.redistogo.com:9231/0

誰でも私が間違っていることを知っていますか?

 my vanity.rb config file is fairly standard

    development:
      adapter: redis
      connection: redis://localhost:6379/0
    qa:
      adapter: redis
      connection: <%= ENV["REDISTOGO_URL"] %>
    staging:
      adapter: redis
      connection: <%= ENV["REDISTOGO_URL"] %>
    production:
      adapter: redis
      connection: <%= ENV["REDISTOGO_URL"] %>

ENV ["REDISTOGO_URL"]も正しいようです

irb(main):012:0> ENV["REDISTOGO_URL"]
=> "redis://redistogo:[email protected]:9231/"

そして、私はアプリケーションの残りの部分からRedisにアクセスすることができます、ちょうどバニティがこのテンプレートのためにそれを取り上げていないようです。

2

1 答え

さて、私はこれを考え出しました。私たちがunicornでフォークするとき、私は正しいredis serverに再接続せず、代わりにlocalhostにデフォルト設定していました。 unicorn.rbのこのコードスニペットは、それをソートします。

after_fork do |server, worker|
  # the following is *required* for Rails + "preload_app true",
  ActiveRecord::Base.establish_connection
  Vanity.playground.establish_connection(ENV["REDISTOGO_URL"]) 
end

私は他のフォークサーバにとっても同様のものだと確信しています。

3
追加された
Vanityに、既存の$ redis接続オブジェクトを使用するようにどのように指示しますか?私のアプリはRedisを使用し、Redisは10接続の制限があります。私は3人の労働者と2人のdynosを持つUnicornを持っているので、それは私のアプリケーションのための6つの接続です。バニティが接続しようとすると、別の6を使い切ります!それは合計で12ですが、利用できるのはわずか10です。私は既存の$ redisオブジェクトを渡して、それを接続に使用したいと思います。
追加された 著者 Chloe,
おそらくこの行はもっと頑強かもしれません。Vanity.playground.reconnect!もしVanity.playground.collecting?
追加された 著者 reillyse,