ruby-on-rails - portable - learn heroku
CSS no carga en Heroku (3)
config.serve_static_assets = true
estos cambios config.serve_static_assets = true
en su production.rb
Por favor, hágame saber lo que sucede. Espero que funcione ...
Gracias
Desplegué mi aplicación a Heroku pero solo se están cargando los assets / images. Los archivos CSS (especialmente el que contiene el 90% de CSS, custom.css) no se están cargando. Precompilé los activos localmente y los empujé a Heroku sin suerte. Solo se están cargando las imágenes, no el archivo custom.css.
Noté un error interesante en el registro de Heroku:
Comenzó a obtener "/users/css/parallax-slider.css" para 77.777.777.77 a 2013-06-13 02:42:09 +0000 2013-06-13T02: 42: 09.016864 + 00: 00 aplicación [web.1] : ActionController :: RoutingError (Ninguna ruta coincide con [GET] "/users/css/parallax-slider.css"):
¿Por qué está buscando el CSS en la carpeta del controlador de mi usuario? ¿Es por esto que la aplicación no puede cargar el archivo custom.css?
production.rb
App::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 = false
# Compress JavaScripts and CSS
config.assets.compress = false
# Don''t fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
# Generate digests for assets URLs
config.assets.digest = true
# Defaults to nil and saved in location specified by config.assets.prefix
# config.assets.manifest = YOUR_PATH
# 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
# See everything in the log (default is :info)
# config.log_level = :debug
# Prepend all log lines with the following tags
# config.log_tags = [ :subdomain, :uuid ]
# Use a different logger for distributed setups
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
# Use a different cache store in production
# config.cache_store = :mem_cache_store
# Enable serving of images, stylesheets, and JavaScripts from an asset server
# config.action_controller.asset_host = "http://assets.example.com"
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
config.assets.precompile += %w(custom.css hover.css users.css works.css styleie9.css)
# Disable delivery errors, bad email addresses will be ignored
# config.action_mailer.raise_delivery_errors = false
# Enable threaded mode
# config.threadsafe!
# 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
#TODO: Edit devise mailer config
config.action_mailer.default_url_options = { :host => ''localhost:3000'' }
end
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 App
class Application < Rails::Application
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/extras)
# Only load the plugins named here, in the order given (default is alphabetical).
# :all can be used as a placeholder for all plugins not explicitly named.
# config.plugins = [ :exception_notification, :ssl_requirement, :all ]
# Activate observers that should always be running.
# config.active_record.observers = :cacher, :garbage_collector, :forum_observer
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
# config.time_zone = ''Central Time (US & Canada)''
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
# config.i18n.load_path += Dir[Rails.root.join(''my'', ''locales'', ''*.{rb,yml}'').to_s]
# config.i18n.default_locale = :de
# 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
# Use SQL instead of Active Record''s schema dumper when creating the database.
# This is necessary if your schema can''t be completely dumped by the schema dumper,
# like if you have constraints or database-specific column types
# config.active_record.schema_format = :sql
# 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''
#Required for Heroku deployment
config.assets.initialize_on_precompile = false
#get precompilation working on heroku:
#config.assets.initialize_on_precompile = true
config.serve_static_assets = false
#Add fonts for Bootstrap theme
config.assets.paths << Rails.root.join("app", "assets", "fonts")
#Prevent passwords from being written to logs
config.filter_parameters += [:password, :password_confirmation]
end
end
Cualquier ayuda sería muy apreciada. He pasado dos noches sin dormir en esto y estoy completamente perplejo.
¡Gracias! -segundo
EDIT 1
application.css:
/*
* This is a manifest file that''ll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You''re free to add application-wide styles to this file and they''ll appear at the top of the
* compiled file, but it''s generally better to create a new file per style scope.
*
*= require_self
*= require_tree .
*/
.pagination {
background: white;
cursor: default;
margin-top: 20px;
a, span, em {
padding: 0.2em 0.5em;
display: block;
float: left;
margin-right: 1px;
}
Rutas:
authenticated :user do
root :to => ''activities#index''
end
root :to => "home#index"
devise_for :users, :controllers => { :registrations => "registrations" }
resources :users do
member do
get :following, :followers, :posts, :comments, :activities
end
end
resources :works do
resources :comments
end
resources :relationships, only: [:create, :destroy]
resources :posts
resources :activities
resources :reposts
resources :comments do
member do
put :toggle_is_contribution
end
end
resources :explore
end
¿Qué tal hacer un cambio en application.css (.scss) (como agregar una nueva línea vacía) y confirmarlo? Parece que Heroku está buscando los archivos de diferencias y precompila los activos en consecuencia. Lo descubrí accidentalmente, así que puedes probar si te sirve.
Actualiza tu gemfile con
*group :production, :staging do
gem ''rails_12factor''
end*
Instale su paquete y empújelo a Heroku
Installing rails_serve_static_assets (0.0.1)
Installing rails_stdout_logging (0.0.1)
Installing rails_12factor (0.0.2)
Me ayuda cuando tuve el mismo problema.