简体   繁体   English

耙资产:预编译卡住

[英]rake assets:precompile stuck

couple of days ago i noticed that jquery calendar is not working on my deployment site(heroku). 几天前,我注意到jquery日历在我的部署站点(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. 在挖掘问题时,我注意到开发服务器上的站点源具有与引导程序相关的大约100个脚本标签(我在使用Twitter引导程序CSS),但在生产服务器上。 i have 4 script tags. 我有4个脚本标签。 on searching i found that i should run rake assets:precompile on my rails console fo asset pipeline. 在搜索时,我发现我应该在资产管道的Rails控制台上运行rake assets:precompile but while running it is taking terribly long time, last time it took 6 hours and i had to abort it. 但是在运行时要花很长时间,而上次却花了6个小时,所以我不得不中止它。

referring to many sites and post, i found that i should change config.serve_static_assets to true and config.assets.compile to true . 提到许多站点和帖子,我发现我应该将config.serve_static_assets更改为true并将config.assets.compile更改为true but problem is still there. 但是问题仍然存在。 i also tried to remove jquery-rails/jquery-ui-rails from gem but problem is still there. 我也试图从gem删除jquery-rails/jquery-ui-rails ,但问题仍然存在。 here is my config/environmnets/production.rb 这是我的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 我的config/application.rb看起来像这样

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 因为我两天以来一直无所适从

I had also faced the same problem. 我也遇到过同样的问题。 Actually gem gets conflict. 实际上,宝石会发生冲突。 Here 'rufus-scheduler' gem is the culprit. 罪魁祸首是“ rufus-scheduler”宝石。 Try to remove the gem and deploy. 尝试删除gem并部署。

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 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM