我的资产没有在Heroku上预编译。我在雪松上运行,并将application.js和application.css定义为(js):
...
//= require jquery
//= require jquery_ujs
//= require data_table
//= require_tree .
当我使用
在我的机器上本地运行时bundle exec rake assets:precompile RAILS_ENV=production
它有效,js和css l。当我部署时,我看到了:
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /tmp/build_b3aac0a4-54a9-4423-bba2-c15771931ae2/Rakefile:7)
Asset precompilation completed (6.04s)
所以它做了一些事情,但是我从heroku提供的appliation.js仍然是这样的:
...
//= require jquery
//= require jquery_ujs
//= require data_table
//= require_tree .
我的production.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 = true
# 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'
# Set to :debug to see everything in the log.
config.log_level = :info
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
...
...
以下是我在部署时看到的内容:
-----> Ruby/Rails app detected
-----> Using Ruby version: ruby-2.0.0
-----> Installing dependencies using Bundler version 1.3.2
Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin --deployment
Using rake (10.1.0)
Using i18n (0.6.5)
Using multi_json (1.8.0)
Using activesupport (3.2.6)
Using builder (3.0.4)
Using activemodel (3.2.6)
Using erubis (2.7.0)
Using journey (1.0.4)
Using rack (1.4.5)
Using rack-cache (1.2)
Using rack-test (0.6.2)
Using hike (1.2.3)
Using tilt (1.4.1)
Using sprockets (2.1.3)
Using actionpack (3.2.6)
Using mime-types (1.25)
Using polyglot (0.3.3)
Using treetop (1.4.15)
Using mail (2.4.4)
Using actionmailer (3.2.6)
Using active_model_serializers (0.8.1)
Using arel (3.0.2)
Using tzinfo (0.3.37)
Using activerecord (3.2.6)
Using activeresource (3.2.6)
Using addressable (2.3.5)
Using extlib (0.9.16)
Using autoparse (0.3.3)
Using multi_xml (0.5.5)
Using httparty (0.11.0)
Using json (1.8.0)
Using mini_portile (0.5.1)
Using nokogiri (1.6.0)
Using uuidtools (2.1.4)
Using aws-sdk (1.5.8)
Using bcrypt-ruby (3.0.1)
Using climate_control (0.0.3)
Using cocaine (0.5.1)
Using coffee-script-source (1.6.3)
Using execjs (2.0.1)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.3)
Using rdoc (3.12.2)
Using thor (0.18.1)
Using railties (3.2.6)
Using coffee-rails (3.2.2)
Using faker (1.2.0)
Using multipart-post (1.2.0)
Using faraday (0.8.8)
Using flickraw (0.9.6)
Using jwt (0.1.8)
Using launchy (2.3.0)
Using signet (0.4.5)
Using google-api-client (0.6.4)
Using jquery-rails (3.0.4)
Using kgio (2.8.1)
Using mono_logger (1.1.0)
Using paperclip (3.5.1)
Using pg (0.16.0)
Using rack-protection (1.5.0)
Using bundler (1.3.2)
Using rails (3.2.6)
Using raindrops (0.12.0)
Using redis (3.0.4)
Using redis-namespace (1.3.1)
Using sinatra (1.4.3)
Using vegas (0.1.11)
Using resque (1.24.1)
Using rufus-scheduler (2.0.24)
Using resque-scheduler (2.0.1)
Using sass (3.2.10)
Using sass-rails (3.2.6)
Using uglifier (2.2.1)
Using unicorn (4.6.3)
Using will_paginate (3.0.4)
Your bundle is complete! It was installed into ./vendor/bundle
Cleaning up the bundler cache.
-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /tmp/build_1e4f5b44-48d7-48fc-b409-67b7c5e18c47/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /tmp/build_1e4f5b44-48d7-48fc-b409-67b7c5e18c47/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /tmp/build_1e4f5b44-48d7-48fc-b409-67b7c5e18c47/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /tmp/build_1e4f5b44-48d7-48fc-b409-67b7c5e18c47/Rakefile:7)
Asset precompilation completed (4.63s)
-----> WARNINGS:
Injecting plugin 'rails_log_stdout'
Injecting plugin 'rails3_serve_static_assets'
Add 'rails_12factor' gem to your Gemfile to skip plugin injection
You have not declared a Ruby version in your Gemfile.
To set your Ruby version add this line to your Gemfile:
ruby '2.0.0'
# See https://devcenter.heroku.com/articles/ruby-versions for more information."
-----> Discovering process types
Procfile declares types -> web
Default types for Ruby/Rails -> console, rake, worker
-----> Compiled slug size: 50.7MB
-----> Launching... done, v25
http://NAME.herokuapp.com deployed to Heroku
所以应该是所有的老大,但没有运气。我需要做什么来启用slug资产编译?
更新:
创建了一个repo https://github.com/whoisstan/asset-test.herokuapp.com和一个演示行为的heroku应用程序:
http://asset-test.herokuapp.com/welcome/index
application.js仍为空白。
我如何描述我的生产环境?我不想在本地预编译。
https://github.com/whoisstan/asset-test.herokuapp.com/blob/master/config/environments/production.rb
答案 0 :(得分:1)
我会首先尝试确保标志:
config.assets.initialize_on_precompile = false
在生产环境配置中设置。如果这不能解决,您可以尝试在本地编译并将预编译的部署与应用程序一起部署到heroku。最后,将新的rails_12factor
gem添加到gemfile中的生产组也可能有意义。
答案 1 :(得分:0)
在heroku支持的帮助下,我们找到了一个解决方案:
“与Ruby 2.0相关的链接中存在一个错误,所以它不会 正确编译application.js: https://github.com/sstephenson/sprockets/issues/352。既然你是 使用Rails 3.2.6,你的链轮是旧的,并导致此问题。至 支持Ruby 2.0,你应该使用最新的Rails 3.2版本:3.2.14 或升级到Rails 4.“