2017-03-16 8 views
0

私の資産の一部を外部サイトにエクスポートする必要があります。Rails 4では、Rakeタスクで資産を縮小するにはどうしたらいいですか?

rake build:navbar 

問題が私のライブラリを縮小するために資産ライブラリを取得できません。それは私の資産(navbar.css.gz)の圧縮バージョンを生成します

desc "Build navbar assets and markup for other sites." 
task navbar: :environment do 

    # Set environment to production so pipeline will minify assets. 
    Rails.env = "production" 

    # Some setup code removed... 

    # How do we coax assets into minifying files? 
    Rails.application.config.assets.prefix = "../build/navbar/staging" 
    Rails.application.config.assets.js_compressor = :uglifier 
    Rails.application.config.assets.css_compressor = :sass 
    Rails.application.config.assets.digest = false 
    Rails.application.config.assets.compress = true 
    Rails.application.config.assets.debug = false 
    Rails.application.config.assets.paths = [Rails.root.join('/app/assets/javascripts'), 
              Rails.root.join('/app/assets/stylesheets/navbar')] 
    Rails.application.config.assets.precompile = ['navbar.js', 'navbar.css'] 

    # Compile now. 
    Rake::Task['assets:clean'].invoke 
    Rake::Task['assets:precompile'].invoke 

    # Cleanup code removed... 
end 

ではなく、縮小さバージョン(navbar.min.css):ここに私の仕事の方法からのコードです。

私はこれを上下に調べましたが、この設定のレシピがこのトリックを行うべきだと思われます。私は何が欠けていますか?

答えて

0

私は基本的な問題を特定したと思います。アセットパイプラインタスク(sprockets-rails)は、設定の設定を完全に遵守していません。 Railsの環境によっては、いくつかの設定を上書きするようです。単にchange the Rails environment within a rake taskとすることはできません。

目標は、再び、ポートにこのレーキコマンドを使用して別のプロジェクトのためのRailsアプリケーションの資産のサブセットです:

rake build:navbar 

ここで私は、これらの問題を中心に働いていた方法を示していますいくつかのサンプルコードです:

は、
namespace :build do 
    desc "Build navbar assets and markup." 
    task navbar: :environment do 
    # Prep Builder 
    builder = Navbar::Builder.new(target: target) 
    builder.prep_build 

    # Why this? Setting Rails.env or ENV['RAILS_ENV'] didn't work. 
    system("rake build:navbar_assets RAILS_ENV=production") 

    builder.generate_markup_file 
    builder.move_output_files_to_build_directory 
    builder.cleanup 
    end 

    desc "Build navbar assets." 
    task navbar_assets: :environment do 
    # Configure the asset pipeline to compile minified files. 
    # NOTE: Sprockets only minifies files in production environment (or won't 
    # do it in development) so this assumes RAILS_ENV is set to production 
    # on the command line. 
    Rails.application.config.assets.prefix = "../build/navbar/staging" 
    Rails.application.config.assets.paths = [Rails.root.join('app/assets/javascripts'), 
              Rails.root.join('app/assets/stylesheets')] 
    Rails.application.config.assets.precompile += ['navbar.js', 'navbar.css'] 

    # Let it rip. 
    Rake::Task['assets:clobber'].invoke 
    Rake::Task['assets:precompile'].invoke 
    end 
end 

問題のコードにファイルパス構築に関するいくつかの問題もありました。それらは修正されました。

関連する問題