tengo una pequeña aplicación Sinatra incluyendo este módulo:Sinatra aplicación con ruedas dentadas que no trabaja en Heroku
module Sprockets
module Helpers
def asset_path(source)
"/assets/#{Environment.instance.find_asset(source).digest_path}"
end
def sprockets
Environment.instance.call(env)
end
end
class << self
def precompile
dir = 'public/assets'
FileUtils.rm_rf(dir, secure: true)
::Sprockets::StaticCompiler.new(Environment.instance, 'public/assets', [/\.(png|jpg)$/, /^(application|ie)\.(css|js)$/]).compile
end
end
class Environment < ::Sprockets::Environment
include Singleton
def initialize
super
%w[app lib vendor].each do |dir|
%w[images javascripts stylesheets].each do |type|
path = File.join(root, dir, 'assets', type)
append_path(path) if File.exist?(path)
end
end
js_compressor = Uglifier.new
css_compressor = YUI::CssCompressor.new
context_class.instance_eval do
include Helpers
end
end
end
end
y con el siguiente recorrido definido:
get('/assets/*') do
sprockets # Defined in the module above
end
Todo funciona simplemente genial, los activos se cargan y se se muestra correctamente en mi máquina local usando pow
. Pero en Heroku no se carga ningún activo, el servidor simplemente devuelve 404 para cada archivo de activos.
Ha intentado: https://github.com/jeffrydegrande/sprockets_on_heroku, hay una [pregunta para raíles] similar (http://stackoverflow.com/questions/2530584/how- to-use-sprockets-rails-plugin-on-heroku) – topek
¿Estás seguro de que esto tiene algo que ver con los piñones? un 404 indica que falta un recurso. ¿Pusiste tu ruta en algún lugar que podría no ser reconocido por heroku? ¿Está configurado correctamente tu archivo config.ru? – phoet
donde obtuviste este '"/assets/# {Environment.instance.find_asset (source) .digest_path} "' ??, ¿qué versión de Sprokets? – Synxmax