2012-04-13 54 views
1


我試圖將Padrino和Sinatra-Assetpack結合起來,但沒有成功。Padrino + sinatra-assetpack不能正常工作

這是我的Gemfile:

source :rubygems 

gem 'rake' 
gem 'sinatra-flash', :require => 'sinatra/flash' 

# Component requirements 
gem 'haml' 

# Assets requirements 
gem 'sinatra-assetpack', :require => 'sinatra/assetpack' 

# Test requirements 

# Padrino Stable Gem 
gem 'padrino', '0.10.6' 
在我的應用程序/文件app.rb我

設置:

require 'sinatra/assetpack' 

class Coffee < Padrino::Application 
    register Padrino::Rendering 
    register Padrino::Mailer 
    register Padrino::Helpers 

    register Sinatra::AssetPack 

    assets { 
    serve '/js', from: '/app/assets/javascripts' 
    serve '/css', from: '/app/assets/stylesheets' 

    css :main, ['/css/main.css'] 
    js :application, ['/js/application.js'] 
    } 

    enable :sessions 

end 

我的JavaScript文件在/ app /資產/ JavaScript和CSS文件在/ app/assets/stylesheets,但Padrino以/css/main.css和/js/application.js的404響應

任何想法?

感謝

+0

那是很奇怪的。我對這個問題展開了50pt賞金,但從未對這個問題的創造者頒發的,但我沒有拿到50分回來..那是怎麼回事? – 2012-05-08 19:46:27

回答

1

想通了這個問題,在我的應用,無論如何,但是從你的app.rb代碼看起來它可能是同樣的話;

Assetpack在serve電話服務從目錄中指定的文件,相對於應用程序的根。在padrino中,應用程序根目錄是yourapplication/app,所以如果您告訴assetpack從/app/assets/stylesheets提供css,例如它真的在尋找yourapplication/app/app/assets/stylesheets中的文件。

問題的第二部分是在AssetPack文檔,它顯示了代碼

set :root, File.dirname(__FILE__) 

register Sinatra::AssetPack前行,我以爲是正確設置應用程序的根目錄中,以便AssetPack會看在根應用程序目錄而不是app。但是,即使我修改了set的呼叫以從app.rb文件中上載一個目錄(因爲它位於Padrino的app目錄中),它似乎對AssetPack沒有任何影響。

總之,修改`serve'調用中的from:路徑是相對於您的應用程序目錄應該解決問題。在你的情況,他們應該是:

serve '/js', from: '/assets/javascripts' 
serve '/css', from: '/assets/stylesheets'