rake assets:precompile stuck

匿名 (未验证) 提交于 2019-12-03 01:40:02

问题:

couple of days ago i noticed that jquery calendar is not working on my deployment site(heroku). on digging out the problem i noticed that source of site on my dev server has some 100 script tags related to bootstrap(i am using twitter bootstrap css) but on prod server. i have 4 script tags. on searching i found that i should run rake assets:precompile on my rails console fo asset pipeline. but while running it is taking terribly long time, last time it took 6 hours and i had to abort it.

referring to many sites and post, i found that i should change config.serve_static_assetsto true and config.assets.compile to true. but problem is still there. i also tried to remove jquery-rails/jquery-ui-rails from gembut problem is still there. here is my config/environmnets/production.rb

ProductRecall::Application.configure do   # Settings specified here will take precedence over those in config/application.rb    # Code is not reloaded between requests   config.cache_classes = true    # Full error reports are disabled and caching is turned on   config.consider_all_requests_local       = false   config.action_controller.perform_caching = true    # Disable Rails's static asset server (Apache or nginx will already do this)   config.serve_static_assets = true    # Compress JavaScripts and CSS   config.assets.compress = true    # Don't fallback to assets pipeline if a precompiled asset is missed   config.assets.compile = true    # Generate digests for assets URLs   config.assets.digest = true      # Specifies the header that your server uses for sending files   # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache    config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx    # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.   config.force_ssl = true    # Enable locale fallbacks for I18n (makes lookups for any locale fall back to   # the I18n.default_locale when a translation can not be found)   config.i18n.fallbacks = true    # Send deprecation notices to registered listeners   config.active_support.deprecation = :notify    # Log the query plan for queries taking more than this (works   # with SQLite, MySQL, and PostgreSQL)   # config.active_record.auto_explain_threshold_in_seconds = 0.5    config.action_controller.perform_caching  = false end 

my config/application.rb looks like this

require File.expand_path('../boot', __FILE__)  # Pick the frameworks you want: require "active_record/railtie" require "action_controller/railtie" require "action_mailer/railtie" require "active_resource/railtie" require "sprockets/railtie" # require "rails/test_unit/railtie"  if defined?(Bundler)   # If you precompile assets before deploying to production, use this line   Bundler.require(*Rails.groups(:assets => %w(development test)))   # If you want your assets lazily compiled in production, use this line   # Bundler.require(:default, :assets, Rails.env) end  module ProductRecall   class Application < Rails::Application      # Configure the default encoding used in templates for Ruby 1.9.     config.encoding = "utf-8"      # Configure sensitive parameters which will be filtered from the log file.     config.filter_parameters += [:password]      # Enable escaping HTML in JSON.     config.active_support.escape_html_entities_in_json = true      # Enforce whitelist mode for mass assignment.     # This will create an empty whitelist of attributes available for mass-assignment for all models     # in your app. As such, your models will need to explicitly whitelist or blacklist accessible     # parameters by using an attr_accessible or attr_protected declaration.     config.active_record.whitelist_attributes = true      # Enable the asset pipeline     config.assets.enabled = true      # Version of your assets, change this if you want to expire all your assets     config.assets.version = '1.0'     config.action_mailer.default_url_options = { host: 'localhost:3000' }   end end 

here is my Gem file:

source 'https://rubygems.org'  gem 'rails', '3.2.13' gem 'bootstrap-sass', '2.1' gem 'bcrypt-ruby', '3.0.1' gem 'therubyracer', :platforms => :ruby, :platforms => :ruby gem 'faker', '1.0.1' gem 'will_paginate', '3.0.3' gem 'bootstrap-will_paginate', '0.0.6' gem 'bootstrap-datepicker-rails' gem "google_visualr", "~> 2.1.0"  gem 'twitter-bootstrap-rails' gem "galetahub-simple_captcha", :require => "simple_captcha" gem 'rufus-scheduler'  group :development, :test do   gem 'sqlite3', '1.3.5'   gem 'rspec-rails', '2.11.0' end  group :development do   gem 'annotate', '2.5.0' end  group :assets do   gem 'sass-rails',   '3.2.5'   gem 'coffee-rails', '3.2.2'   gem 'uglifier', '1.2.3' end  gem 'jquery-rails', '2.0.2'  group :test do   gem 'capybara', '1.1.2'   gem 'factory_girl_rails', '4.1.0'   gem 'cucumber-rails', '1.2.1', :require => false   gem 'database_cleaner', '0.7.0' end  #gem 'jquery-ui-rails'  group :production do   gem 'pg', '0.12.2' end 

plz let me know what is wrong here. as i am terribly stuck with no clue since 2 days

回答1:

I had also faced the same problem. Actually gem gets conflict. Here 'rufus-scheduler' gem is the culprit. Try to remove the gem and deploy.

Next you can try this

task :precompile, :roles => :web, :except => { :no_release => true } do    run_locally("rm -rf public/assets/*")    run_locally("bundle exec rake assets:precompile")    servers = find_servers_for_task(current_task)    port_option = port ? " -e 'ssh -p #{port}' " : ''    servers.each do |server|      run_locally("rsync --recursive --times --rsh=ssh --compress --      human-readable #{port_option} --progress public/assets #{user} @#{server}:         {shared_path}")    end  end  


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!