2011-08-23 14 views
6

मुझे पूरा यकीन नहीं है कि वास्तविक व्यवहार क्या है, इसलिए मेरा पहला सवाल है:
एक मणि (मेरे मामले में स्प्री) में संपत्तियां (जैसे जावास्क्रिप्ट) हमेशा संकलित होती हैं ? मैं स्प्री की जावास्क्रिप्ट का उपयोग नहीं करता, और इसलिए नहीं चाहता कि उन्हें संकलित किया जाए। मैं उन्हें अपने application.js या किसी अन्य जावास्क्रिप्ट फ़ाइल में की आवश्यकता नहीं है, लेकिनरेल 3.1 संपत्ति पाइपलाइन: एक मणि से संपत्तियों को अनदेखा करें

rake assets:precompile 

उन्हें फिर भी संकलित करता है। मैं बस उन्हें अपने public/assets फ़ोल्डर में चारों ओर झूठ नहीं बोलना चाहता हूं।

तो मुझे लगता है कि मेरा सवाल है, क्या एक मणि से संकलित जावास्क्रिप्ट को अक्षम करने का कोई तरीका है?

उत्तर

2

मुझे लगता है कि sprockets का उपयोग करके अपने लक्ष्य को प्राप्त करने का एक शानदार तरीका है। require_tree के बजाय शायद कुछ require_directory

लेकिन सबसे प्रत्यक्ष बात यह है कि संपत्तियों को आपके परिसंपत्तियों से हटा दें। इस लक्ष्य को हासिल करने के लिए, बहुत अंत अपने application.rb फ़ाइल पर इस जोड़ने (एक प्रारंभकर्ता में काम नहीं करता है):

class Engine < Rails::Engine 
    initializer "remove assets directories from pipeline" do |app| 
    app.config.assets.paths = app.config.assets.paths - app.config.assets.paths.grep(/nice_regexp_here_to_match_the_dir_where_the_unwanted_files_live/) 
    end 
end 

बस एक हैक करने की कोशिश की: एक initializer में कोड डाल लेकिन अपने application.rb के अंत में यह आवश्यकता होती है:

require "config/initializers/your_file' 

मैं इस तरह से दिखाई दे सकता है बहुत विशिष्ट कोड पसंद करते हैं।

+0

thnx एक बहुत, मैं कोशिश करता हूँ कि! –

+0

रेल 4.0.0 में ऐसा लगता है कि प्रारंभकर्ता को अनदेखा किया जाता है। आज़माएं: कक्षा इंजन <रेल :: इंजन config.assets.paths = ... अंत – mmell

3

यह रेल 4.x पर काम नहीं किया, एक संभव (गंदा) समाधान नहीं है:

require 'sprockets/railtie' 

Bundler.require(:default, Rails.env) 

module Sprockets 
    module Paths 
    SKIP_GEMS = ["rails-assets-jquery", "rails-assets-bootstrap"] 

    def append_path_with_rails_assets(path) 
     append_path_without_rails_assets(path) unless SKIP_GEMS.any? { |gem| path.to_s.start_with?(Gem.loaded_specs[gem].full_gem_path) } 
    end 

    alias_method_chain :append_path, :rails_assets 
    end 
end 
+0

इसे कॉन्फ़िगर/प्रारंभकर्ता/duplicate_assets.rb में डालने के लिए भी मेरे लिए ठीक काम किया। रेल रनर के साथ परीक्षण किया जा सकता है "Rails.application.assets.find_asset ('jquery.js') डालता है। To_a.map (&: पथनाम)" – grosser

संबंधित मुद्दे