2016-08-03 12 views
0

私はRailsアプリケーションをSidekiqでバックグラウンドジョブを処理し、SidekiqをHeroku上でHerokuに接続しようとしています。ここに私のProcfileです:Herokuエラー:ArgumentError:無効なURIスキーム '

web: bundle exec puma -C config/puma.rb 
worker: bundle exec -C config/sidekiq.yml 

ここに私のSidekiq.rb初期化子ファイルです:

require 'sidekiq' 

Sidekiq.configure_client do |config| 
    config.redis = { url: ENV['REDIS_PROVIDER'] } 
end 

Sidekiq.configure_client do |config| 
    config.redis = { url: ENV['REDIS_PROVIDER'] } 
end 

REDIS_PROVIDER変数はHerokuのにに設定されています。提供される指示に従ってhere私はインテイラーライザーファイルredis.rbも追加しました。内容は次のとおりです。

私は次のエラーが表示され、解決方法がわかりません。 Herokuのは、また、H10のエラーを投げている

[3] ! Unable to load application: ArgumentError: invalid uri scheme ' 

/app/vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/client.rb:416:in `_parse_options': invalid uri scheme '' (ArgumentError) 

UPDATE:

私はHerokuの上の以前のバージョンにロールバックされていないとgemfileからRedisの宝石を削除、ファイル初期化子のRedisを除去し、アプリはもはやありクラッシュする。しかし、バックグラウンドジョブがまだ動作していないと私は、ログにこれらのエラーを取得しています:

heroku/worker.1: Starting process with command `bundle exec -C config/sidekiq.yml` 
heroku/worker.1: State changed from starting to up 
app/worker.1: bundler: command not found: -C 
heroku/worker.1: Process exited with status 127 
heroku/worker.1: State changed from up to crashed 
app/worker.1: Install missing gem executables with `bundle install` 

はなぜシステムは、労働者がクラッシュする原因configパラメータを受け付けていませんか?

無効なURIスキームの誤差が解消されない:

app/web.1: Completed 500 Internal Server Error in 303ms (ActiveRecord: 0.0ms) 
app/web.1: ArgumentError (invalid uri scheme ''): 

sidekiq.ymlファイル

# Sample configuration file for Sidekiq. 
# Options here can still be overridden by cmd line args. 
# Place this file at config/sidekiq.yml and Sidekiq will 
# pick it up automatically. 
--- 
:verbose: false 
:concurrency: 10 

# Set timeout to 8 on Heroku, longer if you manage your own systems. 

:タイムアウト:8

# Sidekiq will run this file through ERB when reading it so you can 
# even put in dynamic logic, like a host-specific queue. 
# http://www.mikeperham.com/2013/11/13/advanced-sidekiq-host-specific-queues/ 
:queues: 
    - critical 
    - default 
    - low 

# you can override concurrency based on environment 

生産: :同時実行:25 ステージング: :並行性:1 0

答えて

3

REDIS_PROVIDERが正しく使用されていません。再度ドキュメントを確認してください。

https://github.com/mperham/sidekiq/wiki/Using-Redis#using-an-env-variable

+1

もう一度ドキュメントを確認しましたが、正しく使用していると思います。それは言う: 'REDIS_PROVIDERのenv varを、RedisサーバのURLを含むenv varの名前に設定します。 (RedisGreenの例:REDIS_PROVIDER = REDISGREEN_URLを設定し、SidekiqはRedisに接続するときにREDISGREEN_URLのenv varの値を使用します) 'REDIS_PROVIDER変数はherokuの' redis:// redistogo:xxxxx'を保持するREDISTOGO_URL変数に設定されます。 – Jarrel09

+1

私はSidekiqと書いた。あなたの信頼は間違っています。 ;-) REDIS_PROVIDERの値はURLであってはならないので、 'URI.parse(ENV ['REDIS_PROVIDER'])'は間違っています。 –

+0

REDIS_PROVIDERの値は、文字通り "REDISTOGO_URL"にする必要があります。 –

関連する問題