2011-07-13 18 views
6

私はHeroku Cedarスタックに配備された単純なRailsアプリケーションを持っています。Heroku Cedar - Resqueフロントエンドの静的資産がありません

アプリはResqueを使用して、私はキューを監視できるようにResqueシナトラフロントエンドアプリが搭載されている:

# routes.rb 
... 
mount Resque::Server, :at => "/resque" 

これは素晴らしい作品が、Herokuのにデプロイする際に、Resque front-end's CSS & JavaScriptが提供されていません。

Herokuののログのスニペットは、それがゼロバイトを返します示しています

... 
2011-07-13T16:19:35+00:00 heroku[router]: GET myapp.herokuapp.com/resque/style.css dyno=web.1 queue=0 wait=0ms service=3ms status=200 bytes=0 
2011-07-13T16:19:35+00:00 app[web.1]: 
2011-07-13T16:19:35+00:00 app[web.1]: 
2011-07-13T16:19:35+00:00 app[web.1]: Started GET "/resque/style.css" for 87.xx.xx.xx at 2011-07-13 16:19:35 +0000 
2011-07-13T16:19:35+00:00 app[web.1]: cache: [GET /resque/style.css] miss 

は、どのように私はそれがこれらの資産を提供するために得ることができますか?

答えて

6

config.ruにルートを削除してアプリをマウントしてみてください。私はの線に沿って何か使用しています:

require ::File.expand_path('../config/environment', __FILE__) 
require 'resque/server' 

run Rack::URLMap.new(
    "/" => Rails.application, 
    "/resque" => Resque::Server.new 
) 
+0

ありがとうezkiは、扱います。 – zefer

+2

私のために働いていません。 – Simpleton

0

私はherokuに展開するときにルートパスを設定する必要があると信じています。例えば、私はapp.rbようにconfig.ru

require './app' 
run ExampleApp 

を指定し、ルートを設定することにより、シナトラアプリケーションを起動:

シナトラのアプリケーションで提供されていない静的な資産の問題を解決し
class ExampleApp < Sinatra::Base 
    set :root, File.dirname(__FILE__) 
end 

、私のために。 resqueでは、おそらくあなたはクラスを拡張し、その代わりにルートを設定してマウントすることができますか?

+0

tiredpixelさん、ありがとうございます。今後このオプションを知っておきましょう。 – zefer

5
ezklと同じ

が、パスワードで保護し、私の作品:

# config.ru 
# This file is used by Rack-based servers to start the application. 

require ::File.expand_path('../config/environment', __FILE__) 
require 'resque/server' 

# Set the AUTH env variable to your basic auth password to protect Resque. 
AUTH_PASSWORD = ENV['RESQUE_PASSWORD'] 
if AUTH_PASSWORD 
    Resque::Server.use Rack::Auth::Basic do |username, password| 
    password == AUTH_PASSWORD 
    end 
end 

run Rack::URLMap.new \ 
    '/'  => MyApp::Application, 
    '/resque' => Resque::Server.new 
+1

ありがとうございましたkain、良い提案。しかし、私は自分の認証をresque.rb初期化子に以下のように定義しておくことにしました: '#resqueフロントエンドで基本認証を使用 Resque :: Server.use(Rack :: Auth :: Basic) do |ユーザー、パスワード| パスワード==「秘密」 end' – zefer

0

Herokuのシーダー・スタックと救助は、データベース接続の失敗を防ぐために、このコード行を必要とします。例えば/lib/tasks/resque.rake

:上記のコード

Resque.after_fork = Proc.new { ActiveRecord::Base.establish_connection } 

は中に置かれるべきである

require 'resque/tasks' 

task "resque:setup" => :environment do 
    ENV['QUEUE'] = '*' 

    Resque.after_fork do |job| 
    ActiveRecord::Base.establish_connection 
    end 

end 

desc "Alias for resque:work (To run workers on Heroku)" 
task "jobs:work" => "resque:work" 

希望これは、それが私のためにやったと同じくらいの人を助けます。

関連する問題