2012-05-02 22 views
1

classic style sinatra appと書いていて、sinatra-assetpackでscssファイルをパッケージしようとしていますが、動作しません。私は私のレイアウトファイルでこれを使用していsinssra-assetpackでScss/Sassが動作しない

require 'rubygems' 
require 'sinatra' 
require 'haml' 
require 'sass' 
require 'compass' 
require 'sinatra/assetpack' 

set :root, File.dirname(__FILE__) 
set :environment, ENV["RACK_ENV"] || "development" 

configure do 
    Compass.configuration do |config| 
    config.project_path = File.dirname(__FILE__) 
    config.sass_dir = 'views/stylesheets' 
    end 

    set :haml, { :format => :html5 } 
    set :scss, Compass.sass_engine_options 

    assets { 
    serve '/javascripts', from: 'public/javascripts' 
    serve '/stylesheets', from: '/stylesheets' 

    # The second parameter defines where the compressed version will be served. 
    # (Note: that parameter is optional, AssetPack will figure it out.) 
    js :lib, '/javascripts/script.js', [ 
     '/javascripts/lib/modernizr-2.5.3.js', 
     '/javascripts/lib/underscore-min.js', 
     '/javascripts/lib/slides.min.jquery.js', 
     '/javascripts/lib/jquery.scrollTo-1.4.2-min.js' 
    ] 

    css :app, '/stylesheets/screen.css', [ 
     '/stylesheets/screen.css', 
     '/fonts/meta.css' 
    ] 

    js_compression :jsmin 
    css_compression :sass 
    } 
end 

これは私のメインのWebファイルである

= css :app, :media => 'screen' 

screen.scssファイルが/views/stylesheets/screen.scssに保存されている、とmeta.css/public/fonts/meta.cssになっています。 screen.cssへの参照は間違っていますか?彼らは別のディレクトリから提供されるべきですか?

はまた、私はそれを置くか、それは何も解決しませんでした削除

get '/stylesheets/screen.css' do 
    content_type 'text/css', :charset => 'utf-8' 
    scss :'stylesheets/screen' 
end 

私のメインのWebファイルでこれを持っていた - このルートは必要なのか?

+0

それはルートスコープにブロックし、私はまだそれを試していませんでした資産を置くように見える... 以下をご覧ください。 exampleディレクトリにサンプルコードがあります。 https://github.com/rstacruz/sinatra-assetpack – ma2gedev

答えて

0

get '/stylesheets/screen.css'ルートをもう使用しないでください。

あなたのGemfile/appファイルにコンパスがあることに気付きました。 Sinatra AssetPackはコンパスと互換性がないことに注意しています。使用例としてhereなどのように、sinatra/supportを使用することもできます。

serve '/stylesheets', from: '/stylesheets'ステートメントをserve '/stylesheets', from: '/views/stylesheets'に変更して、sassファイルを配信する場所を反映させます。

すべてその後、あなたは以下のようなあなたのJavaScriptとSCSSを提供することができるはずです。

= css :app, :media => 'screen' 
= js :lib 
関連する問題