質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

3回答

3380閲覧

Rails4.2 heroku環境だとキューは入るがプロセスが入らない

退会済みユーザー

退会済みユーザー

総合スコア0

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2015/07/11 00:20

編集2015/07/15 22:06

mailerをSidekiqで非同期としています。
開発環境では非同期で送信されるのですが、heroku上では送信されません
heroku環境だとキューは入るのですがプロセスが入らないです。

開発環境手順
$ redis-server
$ bundle exec sidekiq -q default -q mailers

heroku

lang

1#Procfile 2clock: bundle exec clockwork lib/clock.rb 3redis: bundle exec redis-server /usr/local/etc/redis.conf 4worker: bundle exec sidekiq -C config/sidekiq.yml 5worker: bundle exec sidekiq -q default -q mailers

herokuでredisを使用する場合

lang

1ma-no-MacBook-Air:appname ma$ heroku addons:add rediscloud 2Setting config vars and restarting appname... done, v15 3REDIS_PROVIDER: REDISCLOUD_URL 4ma-no-MacBook-Air:appname ma$ heroku config:set REDIS_PROVIDER=REDISCLOUD_URL 506:57:56 clock.1 | started with pid 2019 606:57:56 redis.1 | started with pid 2020 706:57:56 worker.1 | started with pid 2021 806:57:56 worker.1 | started with pid 2022 906:57:56 redis.1 | [2020] 16 Jul 06:57:56.592 # Creating Server TCP listening socket 127.0.0.1:6379: bind: Address already in use 1006:57:56 redis.1 | exited with code 1 1106:57:56 system | sending SIGTERM to all processes 1206:57:56 worker.1 | terminated by SIGTERM 1306:57:56 clock.1 | terminated by SIGTERM 1406:57:56 worker.1 | exited with code 1 15ma-no-MacBook-Air:appname ma$ $ foreman start 1606:57:56 clock.1 | started with pid 2019 1706:57:56 redis.1 | started with pid 2020 1806:57:56 worker.1 | started with pid 2021 1906:57:56 worker.1 | started with pid 2022 2006:57:56 redis.1 | [2020] 16 Jul 06:57:56.592 # Creating Server TCP listening socket 127.0.0.1:6379: bind: Address already in use 2106:57:56 redis.1 | exited with code 1 2206:57:56 system | sending SIGTERM to all processes 2306:57:56 worker.1 | terminated by SIGTERM 2406:57:56 clock.1 | terminated by SIGTERM 2506:57:56 worker.1 | exited with code 1

lang

1#config/initializers/sidkiq.rb 2Sidekiq.configure_server do |config| 3 if Rails.env.production? 4 if ENV['REDISCLOUD_URL'] 5 config.redis = { url: ENV['REDISCLOUD_URL'], namespace: 'sidekiq' } 6 end 7 else 8 config.redis = { url: 'redis://localhost:6379', namespace: 'sidekiq' } 9 end 10end

下記を試したところ

Procfile

-worker: bundle exec sidekiq -C config/sidekiq.yml
+worker: mkdir -p tmp/pids && bundle exec sidekiq -C config/sidekiq.yml

ruby

1ma$ heroku config:set REDIS_PROVIDER=REDISCLOUD_URL 2Setting config vars and restarting appname... failed 3 ! Heroku client internal error. 4 ! Search for help at: https://help.heroku.com 5 ! Or report a bug at: https://github.com/heroku/heroku/issues/new 6 7 Error: read timeout reached (Excon::Errors::Timeout) 8 Command: heroku config:set REDIS_PROVIDER=REDISCLOUD_URL 9 Version: heroku-toolbelt/3.39.5 (x86_64-darwin10.8.0) ruby/1.9.3 10 Error ID: 5255bcc5affd49bc99941d043e703193 11 12 13 More information in /Users/ma/.heroku/error.log

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

現在の設定(heroku config:set REDIS_PROVIDER=REDISCLOUD_URL)ではおそらく、REDISCLOUD_URL という文字列が設定されているのではないでしょうか

heroku config:get REDISCLOUD_URL で取得した値を

bash

1heroku config:set REDIS_PROVIDER=redis://rediscloud:SomeUserName@HostName:PortNumber

のように設定してみるとよいかもしれません

1行にまとめた場合:

bash

1heroku config:set REDIS_PROVIDER=$(heroku config:get REDISCLOUD_URL)

アドオンのドキュメント参照

(追加した)アドオンのドキュメントへはheroku addons:docs rediscloud といった形式でアクセスできるようです

Links

投稿2015/07/16 01:38

編集2015/07/16 01:39
gouf

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/07/16 03:58

ありがとうございます。試したところ Setting config vars and restarting appname... done, v25 REDIS_PROVIDER: redis://rediscloud:SomeUserName@HostName:PortNumber となりsidekiqの管理画面へアクセスするとInternal Server Errorになります。 #config/initializers/sidkiq.rbのnamespaceを'sidekiq' としているのですがこれは何の意味なのでしょうか
gouf

2015/07/16 05:03

たしかに、redis://rediscloud:SomeUserName@HostName:PortNumber とは書きましたが、そこは読み替えをするところです --- * [Redis key naming conventions? - Stack Overflow](http://stackoverflow.com/questions/6965451/redis-key-naming-conventions) namespace に関して、詳細はわかりませんが、おそらく、名前通りの意味と動作なのだと思います ローカル環境下で、redis-client でサーバにアクセス・調査してみると なにかわかるかもしれませんね
退会済みユーザー

退会済みユーザー

2015/07/16 08:02

redis://rediscloud:SomeUserName@HostName:PortNumberの部分はheroku config:get REDISCLOUD_URLで取得した情報を入れています。ここで情報を書き込むとまずいと思ったので変えて書きました。heroku config:set REDIS_PROVIDER=$(heroku config:get REDISCLOUD_URL)でも試しましたがInternal Server Errorです。。
guest

0

ベストアンサー

複数の問題により起因する現象
sidekiqのログファイルの指定を止める
:daemon: falseに変更
Sidekiq.configure_clientも指定する

ruby

1#config/initializers/sidkiq.rb 2Sidekiq.configure_server do |config| 3 case Rails.env 4 when 'production' then 5 config.redis = { url: ENV['REDISCLOUD_URL'], namespace: 'sidekiq' } 6 when 'staging' then 7 config.redis = { url: 'redis://stg.redis-example.com:6379', namespace: 'sidekiq' } 8 else 9 config.redis = { url: 'redis://localhost:6379', namespace: 'sidekiq' } 10 end 11end 12 13Sidekiq.configure_client do |config| 14 case Rails.env 15 when 'production' then 16 config.redis = { url: ENV['REDISCLOUD_URL'], namespace: 'sidekiq' } 17 when 'staging' then 18 config.redis = { url: 'redis://stg.redis-example.com:6379', namespace: 'sidekiq' } 19 else 20 config.redis = { url: 'redis://localhost:6379', namespace: 'sidekiq' } 21 end 22end 23 24#Procfile 25worker: bundle exec sidekiq -C config/sidekiq.yml 26 27 28#sidekiq.yml 29:verbose: false 30 31:concurrency: 25 32:queues: 33 - default 34 - mailers 35 - carrierwave 36:daemon: false

投稿2015/07/19 10:34

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2015/07/15 18:58

gouf

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/07/15 22:07

ありがとう御座います。試してみました別のエラーがでました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問