【问题标题】:Sinatra asset pipeline gem, compiles to an empty .jsonSinatra 资产管道 gem,编译为空的 .json
【发布时间】:2018-05-04 12:21:47
【问题描述】:

我正在尝试让sinatra-asset-pipeline 为我的 Sinatra 应用程序工作,这样我就可以让我的资产显示在 Heroku 上。我遵循 MVC 模式,目前将我的资产存储在 project-folder/assets/stylesheets/application.scss 中。我的 config/environment.rb 文件包含所有 gem 要求:

require 'bundler/setup'
Bundler.require
require 'sprockets'
require 'sinatra/activerecord/rake'
require 'sinatra/asset_pipeline/task'
require 'sinatra/asset_pipeline'
require 'sinatra/sprockets-helpers'
require 'rack-flash'
require 'sass/plugin/rack'
require_all 'app'

我在 ApplicationController 中配置 sinatra-asset-pipeline gem。

require './config/environment'

class ApplicationController < Sinatra::Base
  register Sinatra::Sprockets::Helpers
  register Sinatra::AssetPipeline
  set :sprockets, Sprockets::Environment.new('app')
  set :assets_prefix, '/assets'
  set :digest_assets, true

  configure do
    set :public_folder, 'public'
    set :views, 'app/views'
    sprockets.append_path File.join('app', 'assets', 'stylesheets')
  end

  get '/' do
    erb :'index'
  end

end

我的 Rakefile 包含运行 rake 任务的代码

Sinatra::AssetPipeline::Task.define! ApplicationController

当我运行rake assets:precompile --trace 时,我得到:

** Invoke assets:precompile (first_time)
** Execute assets:precompile

创建文件夹/public/assets/.sprockets-manifest-107e377ad857386671d3a9b56a890322.json。该文件只包含这行代码:{}

【问题讨论】:

    标签: ruby heroku sinatra asset-pipeline sinatra-assetpack


    【解决方案1】:

    我必须在我的控制器中指定asset_precompile,以使我的rake任务以正确的格式编译:set :assets_precompile, %w(application.css *.png *.jpg *.svg *.eot *.ttf *.woff *.woff2)我希望这个答案可以帮助其他任何在 Sinatra 和资产管道中苦苦挣扎的人。

    class ApplicationController < Sinatra::Base
      register Sinatra::Sprockets::Helpers
    
      set :assets_precompile, %w(application.css *.png *.jpg *.svg *.eot *.ttf *.woff *.woff2)
    
      register Sinatra::AssetPipeline
      set :sprockets, Sprockets::Environment.new('app')
      set :assets_prefix, '/assets'
      set :digest_assets, true
    
      configure do
        set :public_folder, 'public'
        set :views, 'app/views'
        sprockets.append_path File.join('assets', 'stylesheets')
      end
    
      get '/' do
        erb :'index'
      end
    
    end
    

    【讨论】:

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