【发布时间】:2015-01-24 23:32:06
【问题描述】:
此处引用https://github.com/kalasjocke/sinatra-asset-pipeline/issues/42
你好,
我不能让它在生产中工作,而它在开发中工作正常
当我在生产中部署时,它会进行预编译,但未加载 CSS。 JS 加载正常,但没有 CSS。 因此,我有一个带有一些 JS 的 html 页面,但没有图像,没有 CSS。
这是我的资产的组织方式:
在本地开发环境中,资产在 public/assets/ 中预编译(带有rake assets:precompile)
在 Prod 环境中,capistrano 任务是这样配置的:
after 'deploy:finishing', :finalize_update do
on roles(:web), in: :sequence do
execute(:chmod, '-R g+w', release_path) if fetch(:group_writable, true)
within release_path do
execute :rake, "assets:precompile RACK_ENV=production"
execute :rake, "assets:clean RACK_ENV=production"
end
end
end
Sinatra 应用程序(比如说 myapp.rb)
# encoding: utf-8
require 'sinatra'
require 'haml'
require 'sass'
require 'compass'
require 'bootstrap-sass'
require 'sinatra/asset_pipeline'
Bundler.require
class MyApp < Sinatra::Base
set :assets_prefix, %w(assets vendor/assets)
set :assets_precompile, %w(app.js app.css *.png *.jpg *.svg *.eot *.ttf *.woff)
register Sinatra::AssetPipeline
...
app.css
*= require application
应用程序.scss
@import "bootstrap/variables";
@import "bootstrap/mixins";
...
...
@import "layout";
布局:
%link{ href: '/assets/application.css', rel: 'stylesheet' }
...
%script{ src:'//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'}
%script{ src: '//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js' }
%script{ src: '/assets/app.js' }
瑞克文件:
require 'sinatra/asset_pipeline/task'
require './lib/myapp'
Sinatra::AssetPipeline::Task.define! Novagile
我是否遗漏了一些简单明了的东西,还是一个恶毒的配置技巧? :'(
【问题讨论】:
标签: css ruby sass sinatra asset-pipeline