2012-04-13 3 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ファイルがに/アプリ/資産/ JavaScriptとCSSファイルであります/ app/assets/stylesheetsが含まれていますが、Padrinoは/css/main.cssと/js/application.jsの両方で404と応答します

アイデアはありますか?

おかげ

+0

ザッツ非常に奇妙な...私はこの質問に50ptの恩恵を開始し、それが問題の作成者によって授与されることはなかったが、私は戻って50のPTSを取得できませんでした。..どうしたの? –

答えて

1

はとにかく私のアプリケーションでは、問題を考え出したが、あなたのapp.rbコードのルックスから、それはあなたのために、おそらく同じです。

Assetpackは、アプリケーションのルートを基準にして、serveコールで指定したディレクトリ()のファイルを処理します。 padrinoでは、アプリケーションのルートはyourapplication/appなので、assetpackに/app/assets/stylesheetsなどのCSSを提供するように言うと、実際にはyourapplication/app/app/assets/stylesheetsのファイルを探しています。

問題の第二部は、AssetPackのドキュメントでは、それは私がAssetPackがになりますように、適切にアプリケーションのルートディレクトリを設定していると仮定しregister Sinatra::AssetPack行の前にコード

set :root, File.dirname(__FILE__) 

を示すことでしたルートアプリケーションディレクトリappではなく。しかし、たとえ私がsetへの呼び出しを変更してapp.rbファイル(Padrinoのappディレクトリにあるので)から1つのディレクトリに上がっても、AssetPackには何の影響も与えていないようです。

つまり、 `serve '呼び出しのパスを変更すると、アプリケーションディレクトリからの相対パスで問題が解決されます。あなたのケースでは、彼らは次のようになります。

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