Приложение Rails не обслуживает активы JS и SCSS в производственной среде.

Прежде всего, все отлично работает в среде разработки. Но если я переключусь на производственную среду, мое приложение Rails не будет обслуживать активы JS и CSS.

Я развернул активы в общедоступном каталоге:

 rake assets:precompile RAILS_ENV=production

без ошибок.

В журнале говорится:

ActionController::RoutingError (No route matches [GET] "/assets/custom-9f5239947caa407b080981084efbe1b998006e083c7c79e950376483e1ac0f27.css"):

и

ActionController::RoutingError (No route matches [GET] "/assets/application-5e67105cb72dda5c0d9dcc451a325501380be971c097076180211f3e90a99ba3.js"):

активы.rb

Rails.application.config.assets.precompile += %w( cocoon.js )

производство.рб

config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local       = false
config.action_controller.perform_caching = true
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass
config.assets.compile = false
config.assets.digest = true
config.log_level = :debug
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = ::Logger::Formatter.new
config.active_record.dump_schema_after_migration = false

Gemfile

source 'https://rubygems.org'
gem 'carrierwave', '~> 0.10.0'
gem 'mini_magick'
gem 'minitest'
gem 'rails', '4.2.0'
gem 'rack'
gem 'sprockets'
gem 'therubyracer'
gem 'execjs'
gem 'sqlite3'
gem 'sass-rails', '~> 5.0'
gem 'sprockets'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'bcrypt'
gem 'bootstrap-sass', '~> 3.2.0.0'
gem 'bootstrap-will_paginate'
gem 'thin'
gem 'fog', '~> 1.23.0'
gem 'faker'
gem 'rails-i18n', github: 'svenfuchs/rails-i18n', branch: 'master' # For 4.x
gem 'simple_hashtag'
group :development, :test do
  gem 'byebug'
  gem 'web-console', '~> 2.0'
end
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem 'cocoon', '~> 1.2.0'
gem 'haml', '~> 4.0.6'

person Stef Hej    schedule 12.11.2015    source источник
comment
Можете ли вы дать нам какие-либо подробности о вашей производственной среде? Это Героку?   -  person Richard Peck    schedule 13.11.2015


Ответы (2)


Может быть, вы можете попробовать это:

Rails.application.config.assets.precompile += %w( custom.css ) # Because Asset Pipeline by default only compress application.(css|js)

И это:

config.serve_static_files = false

Я надеюсь, что это сработает для вас: D

person Community    schedule 13.11.2015
comment
Я, [2015-11-13T16: 11: 55.503532 # 5116] Информация -: начал получать /assets/custom-9f5239947CAA407B09981084EFBE1B998006E083C7C79E950376483E1AC0F27.CSS для 127.0.0.1AC0F27.csss для 127.0.0.1 в 2015-11-13 16:11:55 +0100 F, [2015 -11-13T16:11:55.505532 #5116] FATAL -- : ActionController::RoutingError (Нет маршрута, соответствующего [GET] /assets/custom-9f5239947caa407b080981084efbe1b998006e083c7c79e950376483e1ac0f27.css): - person Stef Hej; 13.11.2015
comment
Кроме того, поместите это в свой config/application.rb: config.assets.initialize_on_precompile = false - person ; 16.11.2015

в production.rb я изменил config.assets.compile с false на true:

config.assets.compile = true
person Stef Hej    schedule 13.11.2015
comment
Да, это простой способ решения, но это не рекомендуется, так как ресурсы будут компилироваться каждый раз, когда они потребуются. Это может привести к некоторым тайм-аутам для пользователя. Вы можете проверить, установили ли вы в производстве переменную окружения RAILS_SERVE_STATIC_FILES, поскольку значение по умолчанию — config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?. - person mmsilviu; 04.04.2018