此处引用https://github.com/kalasjocke/sinatra-asset-pipeline/issues/42
嗨,
我无法在生产中使用它,而它在开发中可以正常工作
当我在生产中部署时,它会进行预编译,但不会加载CSS。 JS加载好,但没有CSS。 因此我有一个带有一些JS的html页面,但没有图像,没有CSS。
这是我的资产组织方式:
在本地开发环境中,资产预编译为public / assets /(rake assets:precompile
)
在Prod env中,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 app(比方说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
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' }
Rake文件:
require 'sinatra/asset_pipeline/task'
require './lib/myapp'
Sinatra::AssetPipeline::Task.define! Novagile
我错过了一些简单而明显的东西,还是一个恶意的配置技巧? :&#39;(
答案 0 :(得分:0)
很难说究竟出了什么问题。肯定会错过您的布局或视图的来源。
请查看working example。我只能猜测,你必须自己处理环境(production
或development
)。我上面的例子中有view helper,您可能会感兴趣。
答案 1 :(得分:0)
好的,我不确定这个诀窍是什么:
我从Gemfile中删除了gem 'sass' from
(罗盘仍在那里)
我使用的是sprockets助手,而不是ActionView::Helpers
(如stylesheet_link_tag或stylesheet_tag)
我在指南针(生成的精灵)和链轮(在之前或之后重命名文件)方面遇到了一个小问题,但现在每个人都可以正常工作......
指南针使用generated_images_dir
指南针配置选项解决,其中包含放置生成的精灵的目录值。