Sinatra资产管道gem,编译成空的.json

时间:2017-11-21 06:08:35

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

我正在尝试让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。此文件仅包含以下代码行:{}

1 个答案:

答案 0 :(得分:0)

我必须在我的Controller中指定asset_precompile以使我的rake任务以正确的格式进行编译:{{1​​}}我希望这个答案可以帮助其他任何与Sinatra和资产管道斗争的人。

set :assets_precompile, %w(application.css *.png *.jpg *.svg *.eot *.ttf *.woff *.woff2)