1

私は古典的なスタイルの sinatra appを書いていて、自分の scss ファイルをsinatra-assetpackでパッケージ化しようとしていますが、うまくいきません。

これは私のメインの Web ファイルです。

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

私はレイアウトファイルでこれを使用しています:

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

screen.scssファイルは に保存され/views/stylesheets/screen.scssmeta.cssは に保存されます/public/fonts/meta.css。への参照はscreen.css間違っていますか? 別のディレクトリから提供する必要がありますか?

また、メインのWebファイルにこれがありました

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

挿入または削除しても何も修正されませんでした-このルートは必要ですか?

4

1 に答える 1

0

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

また、Gemfile / app ファイルにコンパスがあることにも気付きました。Sinatra AssetPack は、compass と互換性がないことを指摘しています。ただし、例のアプリケーションheresinatra/supportのように使用するために含めることができます。

serve '/stylesheets', from: '/stylesheets'ステートメントをに変更してserve '/stylesheets', from: '/views/stylesheets'、sass ファイルをどこから提供したいかを反映させます。

結局のところ、以下のようにjavascriptとscssを提供できるはずです:

= css :app, :media => 'screen'
= js :lib
于 2012-05-10T03:09:52.817 に答える