2017-11-27 10 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コンプレッサーセットアップを持っています。

私はブラウザでご覧問題は(およびシナトラ/ピューマログが同様に404を示している) /assets/app-digesthash.jsが発見されていないということです

関連する宝石のバージョン:

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

私はActionMailerに切り替えました。 'gem 'actionmailer'、require: '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 
関連する問題