【问题标题】:Sinatra asset pipeline - can't use link to precompiled cssSinatra 资产管道 - 无法使用指向预编译 css 的链接
【发布时间】: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


    【解决方案1】:

    很难说到底出了什么问题。绝对是您的布局或视图的来源。 请查看working example。我只能猜测,您必须自己处理环境(productiondevelopment)。我上面的例子有view helper,你可能有兴趣。

    【讨论】:

    • 试过了,但没有改变 :( 当我认为它应该被引用时,助手总是生成一个 来自编译的尾随散列/令牌。我尝试过简单的直接访问,这里是 = stylesheet_tag '/assets/application.css' 和其他助手也无济于事。在专用服务器和 heroku 上尝试过,结果相同,没有 CSS。仍在开发中工作。
    • 神评论太丑了。
    • 您是否 100% 确定您的应用程序处于生产模式?抱歉,问这个问题,但根据您的评论,这种行为很奇怪。
    • 添加一些调试放置,环境变量在暂存和生产中都可以。经过一些测试后,自定义 JS 没有加载,是 CDN 可以让我认为 JS 已加载。编译仍然可以,但仍然没有 CSS。当我硬访问已编译的 css 时,它就在这里。只是帮手不去得到它! :(
    【解决方案2】:

    好吧,我不确定这是怎么回事:

    我从 Gemfile 中删除了gem 'sass' from(指南针还在)

    我使用了 sprockets 助手,但从不使用 ActionView::Helpers(如 stylesheet_link_tag 或 stylesheet_tag)

    我在指南针(生成的精灵)和链轮(在之前或之后重命名这些文件)有一个小问题,但现在一切正常......

    compass 使用generated_images_dircompass 配置选项解决,其值为放置生成的精灵的目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-15
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 2013-05-08
      • 2012-03-19
      • 2012-02-06
      相关资源
      最近更新 更多