2017-11-27 24 views
2

문제는 생성 된 애셋 경로가 아무 것도 가리 키지 않습니다. 프로젝트 디렉토리가 변경되지 않거나 스프로킷이 js를 작성/압축하지 않습니다. asset_pipeline.rbSinatra를 방문했을 때 스프 라켓 애셋이 컴파일되지 않았습니다.

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 

나는 앱을 실행하는거야 내 app.rb에서

<%= javascript_tag 'app' %> 

(주시나 파일)

register AssetPipeline 

: 내 ERB에

RACK_ENV=production puma 

마지막 스 니펫에서 볼 수 있듯이 Uglifier 압축기 설정이 있습니다.

내가 브라우저에 표시되는 문제는 /assets/app-digesthash.js가 발견되지 않는 (그리고시나/퓨마 로그뿐만 아니라 404이다)

관련 보석 버전이다 :

puma (3.11.0) 
sinatra (2.0.0) 
sprockets (4.0.0.beta6) 
sprockets-helpers (1.2.1) 
+0

ActionMailer로 전환했습니다. '보석 'actionmailer', 필요 : 'action_mailer'' 그리고 내 문제가 사라 졌어요 : - \ – NullVoxPopuli

+3

당신의 질문이 해결되면 해결로 표시하십시오. –

+0

내 질문이 해결되지 않았습니다. 나는 지문 인식 방법에 대해서 아직도 모른다. – NullVoxPopuli

답변

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