我遇到的问题是生成的资产路径没有指向任何内容 - 我的项目目录没有更改/ sprockets没有构建/压缩js。
在我的erb中:
<%= javascript_tag 'app' %>
在我的app.rb(主sinatra文件)
register AssetPipeline
在asset_pipeline.rb
require 'sprockets-helpers'
module AssetPipeline
module_function
def registered(app)
app.set :assets, assets = Sprockets::Environment.new(app.settings.root)
app.set :assets_path, -> { File.join(public_folder, "assets") }
app.set :assets_precompile, %w(app.js)
assets.append_path('assets/javascripts')
app.configure :development do
assets.cache = Sprockets::Cache::FileStore.new('./tmp')
app.get '/assets/*' do
env['PATH_INFO'].sub!(%r{^/assets}, '')
settings.assets.call(env)
end
end
app.configure :production do
Sprockets.register_compressor 'application/javascript', :uglify, Sprockets::UglifierCompressor
Sprockets.js_compressor = :uglify
end
Sprockets::Helpers.configure do |config|
config.environment = assets
config.prefix = '/assets'
config.debug = true if app.development?
if app.production?
config.digest = true
config.manifest = Sprockets::Manifest.new(
assets,
File.join(app.assets_path, "manifesto.json")
)
end
end
app.helpers Sprockets::Helpers
end
end
我正在使用
运行该应用RACK_ENV=production puma
正如您在最后一个片段中看到的,我有Uglifier压缩器设置。
我在浏览器中看到的问题是
找不到/assets/app-digesthash.js
(并且sinatra / puma日志也显示404)
相关宝石版本:
puma (3.11.0)
sinatra (2.0.0)
sprockets (4.0.0.beta6)
sprockets-helpers (1.2.1)
答案 0 :(得分:0)
块app.get '/assets/*' do
似乎是错误的。将它移动到它所在的块之外的顶部(并且在生产配置之后是安全的)并且它应该正常启动,如下所示:
app.configure :development do
assets.cache = Sprockets::Cache::FileStore.new('./tmp')
end
app.configure :production do
Sprockets.register_compressor 'application/javascript', :uglify, Sprockets::UglifierCompressor
Sprockets.js_compressor = :uglify
end
app.get '/assets/*' do
env['PATH_INFO'].sub!(%r{^/assets}, '')
settings.assets.call(env)
end