2011-07-13 15 views
6

Heroku Cedar yığına yerleştirilmiş basit bir Rails uygulaması var.Heroku Cedar - takılı sabit ön cepheye sahip statik varlıklar yok

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

Bu harika çalışıyor, ancak Heroku dağıtılan zaman, Resque front-end's CSS & JavaScript sunulmayan:

uygulaması Ben sırasını izleyebilir böylece Resque ve Resque Sinatra ön uç uygulaması monte edilir kullanır.

... 
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 

nasıl bu varlıkları hizmet alabilirsiniz:

Heroku günlüklerinden bir pasajı sıfır bayt döndürüyor gösterir?

cevap

6

Rotayı kaldırmayı ve uygulamayı config.ru ürününüze yüklemeyi deneyin.

ezkl ama şifre korumalı aynı
require ::File.expand_path('../config/environment', __FILE__) 
require 'resque/server' 

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

Teşekkürler ezki, bir tedavi çalışır. – zefer

+2

Benim için çalışmıyor. – Simpleton

0

Bir köprünün ayarlanması gerektiğine inanıyorum. Örneğin, ben app.rb böylece de config.ru yılında

require './app' 
run ExampleApp 

belirterek ve kök ayarlayarak sinatra uygulamayı önyükleme:

bir sinatra uygulamada sunulmakta olup statik varlıkların sorunu çözer
class ExampleApp < Sinatra::Base 
    set :root, File.dirname(__FILE__) 
end 

, benim için. Resque için, belki de sınıfı genişletebilir ve bunun yerine root'u ayarlayabilirsin?

+0

Teşekkürler tiredpixel, gelecek için bu seçeneği bilmek güzel. – zefer

5

, benim için çalışıyor: Ben çizgisinde bir şey kullanıyorum

# 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

Teşekkürler kain, iyi öneri. Ancak, kimlik doğrulamamı resque.rb başlatıcımda tanımlamaya karar verdim, öyle bir şey var: '# reset ön uçta temel auth kullanın Resque :: Server.use (Rack :: Auth :: Basic) kullanıcı, şifre | password == "secret" sonu – zefer

0

Sedir yığını ve kurtarma veritabanı bağlantı hatalarını önlemek için bu kod satırını ihtiyaç Heroku . Örneğin /lib/tasks/resque.rake

: Yukarıdaki kod

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

yerleştirilmelidir

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" 

Umut bu, benim için did kadar birisi yardımcı olur.