css - para - tipos de hojas de estilo




Rieles: el activo de application.css no se encuentra en el modo de producción (3)

Estoy actualizando una aplicación para usar el flujo de activos.

Tengo la compilación de activos css en un archivo css de la aplicación, pero no se encuentran cuando ejecuto la aplicación en modo de producción con

RAILS_ENV=production bundle exec rails s

y visito cualquier página, obtengo el resultado correcto de la base de datos, pero no hay estilo y el registro muestra:

ActionController::RoutingError (No route matches [GET] 
"/assets/default.scss-1a27c...f07c.css"):

A pesar de que ese archivo existe en público / activos

$ ls public/assets/def*
public/assets/default.scss-1a27c...f07c.css     public/assets/default.scss.css
public/assets/default.scss-1a27c...f07c.css.gz  public/assets/default.scss.css.gz

¿Qué necesito cambiar para que el servidor encuentre el archivo de activos?

Lo mismo está sucediendo con mis otros archivos .css. Se compilan en público / activos con huellas digitales pero luego no se encuentran.

La fuente de la página se muestra:

<link href="/assets/default.scss-1a27c...f07c.css" 
media="screen" rel="stylesheet" type="text/css" />

La fuente de los rieles (haml) es = stylesheet_link_tag 'default.scss.css'

public.assets incluye public.assets los siguientes archivos.

$ ls public/assets/def*
public/assets/default.scss-1a27c22229b7b522066181f27af4f07c.css
public/assets/default.scss-1a27c22229b7b522066181f27af4f07c.css.gz
public/assets/default.scss.css
public/assets/default.scss.css.gz

application.rb tiene

$ cat 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 Linker
  class Application < Rails::Application
    config.encoding = "utf-8"
    config.filter_parameters += [:password]
    config.assets.enabled = true
    config.assets.initialize_on_precompile = false # For Heroku
    config.assets.version = '1.0'
  end
end

config/environments/production tiene:

$ cat config/environments/production.rb 
Linker::Application.configure do
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
  config.assets.precompile += ['default.scss.css','main.css', 'jquery-ui-1.8.22.custom.css']
  config.serve_static_assets = false
  config.assets.compress = true
  config.assets.compile = false
  config.assets.digest = true
  config.log_level = :debug
  config.i18n.fallbacks = true
  config.active_support.deprecation = :notify
end

Esto parece estar sucediendo para todos los activos, por ejemplo,

Started GET "/assets/default.scss-1a27c22229b7b522066181f27af4f07c.css" for 127.0.0.1 at 2014-02-23 10:24:47 -0500
ActionController::RoutingError (No route matches [GET] "/assets/default.scss-1a27c22229b7b522066181f27af4f07c.css"):
Started GET "/assets/main-6864687b4114a1c316e444bd90f233ff.css" for 127.0.0.1 at 2014-02-23 10:24:47 -0500
ActionController::RoutingError (No route matches [GET] "/assets/main-6864687b4114a1c316e444bd90f233ff.css"):
Started GET "/assets/jquery-ui-1.8.22.custom-24319b4b1218846a3fe22a0479ae98b4.css" for 127.0.0.1 at 2014-02-23 10:24:47 -0500
ActionController::RoutingError (No route matches [GET] "/assets/jquery-ui-1.8.22.custom-24319b4b1218846a3fe22a0479ae98b4.css"):
Started GET "/assets/application-fc1d492d730f2a45581a40eac4607db8.js" for 127.0.0.1 at 2014-02-23 10:24:47 -0500
ActionController::RoutingError (No route matches [GET] "/assets/application-fc1d492d730f2a45581a40eac4607db8.js"):
Started GET "/images/link.ico" for 127.0.0.1 at 2014-02-23 10:24:48 -0500
ActionController::RoutingError (No route matches [GET] "/images/link.ico"):

Cuando realiza un rake assets:precompile , sus activos entran en el directorio público. Vea si puede encontrar esos archivos en public/assets/

Debería ver algo como esto:

I, [2014-02-23T20:06:21.853314 #26915]  INFO -- : Writing app_root/public/assets/application-ecd8636fc80ea2b712039c4abc365da9.css

En Rails 4, puede hacer que se muestren en producción (ejecutándose localmente) al pasar una variable de entorno:

RAILS_SERVE_STATIC_FILES=true rails server -e production

Esto debería funcionar siempre que tenga esta línea en /config/environments/production.rb :

config.serve_static_files = ENV ['RAILS_SERVE_STATIC_FILES']. present?


Los rieles por defecto no sirven a los activos public . Vea su production.rb :

  config.serve_static_assets = true

Cambia eso a verdadero y ya estás listo. (Nota: no desea que eso sea true en la producción, ¡recuerde volver a cambiarlo antes de implementarlo!)

Consulte Configuración de aplicaciones de Rails para más detalles.





asset-pipeline