Rails不会预编译.js.erb

为什么Rails不会预编译.js.erb资产?

我的config/application.rb

 require File.expand_path('../boot', __FILE__) require 'rails/all' Bundler.require(:default, Rails.env) module Sflitmap class Application < Rails::Application # these precompile OK config.assets.precompile += ['edge/edge.1.5.0.min.js', 'edge/ink-falling_edgeActions.js', 'edge/inkAnimationTrigger.js'] # this will not precompile config.assets.precompile += ['edge/ink-falling_edge.js.erb'] end end 

我的config/environments/production.rb

 Sflitmap::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 # Eager load code on boot. This eager loads most of Rails and # your application in memory, allowing both thread web servers # and those relying on copy on write to perform better. # Rake tasks automatically ignore this option for performance. config.eager_load = true # Full error reports are disabled and caching is turned on. config.consider_all_requests_local = false config.action_controller.perform_caching = true # Enable Rack::Cache to put a simple HTTP cache in front of your application # Add `rack-cache` to your Gemfile before enabling this. # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid. # config.action_dispatch.rack_cache = 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.js_compressor = :uglifier # config.assets.css_compressor = :sass # Do not fallback to assets pipeline if a precompiled asset is missed. config.assets.compile = false # Generate digests for assets URLs. config.assets.digest = true # Version of your assets, change this if you want to expire all your assets. config.assets.version = '1.0' # 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 # Set to :debug to see everything in the log. config.log_level = :info # 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" config.assets.paths << Rails.root.join('app', 'assets', 'fonts') # Precompile additional assets. # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. # config.assets.precompile += %w( search.js ) config.assets.precompile += %w( .svg .eot .woff .ttf ) # Ignore bad email addresses and do not raise email delivery errors. # Set this to true and configure the email server for immediate delivery to raise delivery errors. # config.action_mailer.raise_delivery_errors = false # 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 # Disable automatic flushing of the log to improve performance. # config.autoflush_log = false # Use default logging formatter so that PID and timestamp are not suppressed. config.log_formatter = ::Logger::Formatter.new end 

当我运行RAILS_ENV=production rake assets:precompile我得到:

 - public -- assets --- edge ---- edge.1.5.0.min-610ab04bb1d4d0ad9a2a845821f04bdf.js ---- edge.1.5.0.min-610ab04bb1d4d0ad9a2a845821f04bdf.js.gz ---- ink-falling_edgeActions-9bdaa1845a29b15bd2562058432de721.js ---- ink-falling_edgeActions-9bdaa1845a29b15bd2562058432de721.js.gz ---- inkAnimationTrigger-3c35d0b73061bb5de0e691d694925902.js ---- inkAnimationTrigger-3c35d0b73061bb5de0e691d694925902.js.gz 

为什么ink-falling_edge-....js预编译?

我正在使用ruby "2.0.0"gem 'rails', '4.0.0'

这条评论有效:

为什么不尝试这一行:config.assets.precompile + = [‘edge / ink-falling_edge.js’] – > Rails只能按其(非ERB)资产文件名引用文件 – Rich Peck