我正在尝试将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 / assets / javascripts和/ app / assets / stylesheets中的css文件中,但Padrino对/css/main.css和/js/application.js的响应为404
有什么想法吗?
由于
答案 0 :(得分: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:
路径修改为相对于您的app目录应解决问题。在你的情况下,他们应该是:
serve '/js', from: '/assets/javascripts'
serve '/css', from: '/assets/stylesheets'