संदेश आप देख rake assets:precompile
का उत्पादन होता है।
जब आप rake assets:precompile
, डिफ़ॉल्ट उत्पादन से बचने के लिए कैसे
को
समाधान है -q
behand अपने आदेश, जोड़ने
विश्लेषण, नीचे है अगर आप देखना चाहते हैं चलाएँ:
# :gem_path/actionpack/lib/sprockets/assets.rake
namespace :assets do
# task entry, it will call invoke_or_reboot_rake_task
task :precompile do
invoke_or_reboot_rake_task "assets:precompile:all"
end
# it will call ruby_rake_task
def invoke_or_reboot_rake_task(task)
ruby_rake_task task
end
# it will call ruby
def ruby_rake_task(task, fork = true)
env = ENV['RAILS_ENV'] || 'production'
groups = ENV['RAILS_GROUPS'] || 'assets'
args = [$0, task,"RAILS_ENV=#{env}","RAILS_GROUPS=#{groups}"]
ruby(*args)
end
end
# :gem_path/rake/file_utils.rb
module FileUtils
# it will call sh
def ruby(*args,&block)
options = (Hash === args.last) ? args.pop : {}
sh(*([RUBY] + args + [options]), &block)
end
# it will call set_verbose_option
# and if options[:verbose] == true, it do not output cmd
# but default of options[:verbose] is an object
def sh(*cmd, &block)
# ...
set_verbose_option(options)
# ...
Rake.rake_output_message cmd.join(" ") if options[:verbose]
# ...
end
# default of options[:verbose] is Rake::FileUtilsExt::DEFAULT, which is an object
def set_verbose_option(options) # :nodoc:
unless options.key? :verbose
options[:verbose] =
Rake::FileUtilsExt.verbose_flag == Rake::FileUtilsExt::DEFAULT ||
Rake::FileUtilsExt.verbose_flag
end
end
end
# :gem_path/rake/file_utils_ext.rb
module Rake
module FileUtilsExt
DEFAULT = Object.new
end
end
# :gem_path/rake/application.rb
# the only to solve the disgusting output when run `rake assets:precompile`
# is add a `-q` option.
['--quiet', '-q',
"Do not log messages to standard output.",
lambda { |value| Rake.verbose(false) }
],
['--verbose', '-v',
"Log message to standard output.",
lambda { |value| Rake.verbose(true) }
],
मेरे रेल 3.1 एप को तैनात करते समय मेरे पास बिल्कुल वही है। मुझे लगता है कि [sprockets रेक कार्य] में छिपा हुआ है (https://github.com/rails/rails/blob/master/actionpack/lib/sprockets/assets.rake) कहीं, लेकिन मुझे यह नहीं दिखाई देता है। क्या यह हो सकता है कि 'precompile: संपत्ति: nondigest' कार्य stderr या कुछ के लिए एक चेतावनी लॉग, और यह capistrano द्वारा उठाया जाता है? – HectorMalot
आपको सच कहने के लिए यह नाराज सामान समझने के मेरे दायरे से थोड़ा सा है (अभी भी मेरे सिर को प्रीकंपाइल के चारों ओर लपेट रहा है :) - लेकिन मैंने इसे एक दोस्त को दिखाया और उसने यह कहा ... "मुझे नहीं लगता कि वे त्रुटियां हैं सभी मुझे लगता है कि आउटपुट किसी भी तरह से गड़बड़ हो गया है, जब यह सामान्य आउटपुट का उपयोग करता है, तब तक जब आप तैनाती खत्म कर देते हैं तो आपको एक त्रुटि स्ट्रीम लगता है, तो एक वास्तविक त्रुटि निष्पादन रोकती है – fatfrog