1


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/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/ asserts/javascriptsにありcssファイルは/app/ asserts / stylesheetsにありますが、Padrinoは/css/main.cssと/js/application.jsの両方に対して404で応答します

何か案は?

ありがとう

4

1 に答える 1

1

とにかく、私のアプリケーションで問題を理解しましたが、 app.rb コードの外観からは、おそらく同じです。

Assetpack は、serve呼び出しで指定したディレクトリからファイルを提供します。これは、アプリケーションの root に対して相対的です。yourapplication/apppadrino/app/assets/stylesheetsでは、アプリケーションのルートはyourapplication/app/app/assets/stylesheets.

問題の 2 番目の部分は、AssetPack のドキュメントで、コードが示されていることでした。

set :root, File.dirname(__FILE__)

これは、アプリケーションのルート ディレクトリを適切に設定してregister Sinatra::AssetPack、AssetPack がapp. ただし、setapp.rb ファイルから 1 つ上のディレクトリに移動するように呼び出しを変更しても ( appPadrino のディレクトリにあるため)、AssetPack には影響がないように見えました。

要するに、from:'​​serve' 呼び出しのパスをアプリ ディレクトリからの相対パスに変更すると、問題が解決するはずです。あなたの場合、それらは次のようになります。

serve '/js',  from: '/assets/javascripts'
serve '/css', from: '/assets/stylesheets'
于 2012-04-23T19:26:56.483 に答える