更新
我收到此错误是因为我有一个public.css和public.js文件,该文件未使用其余的.css和.js文件进行编译.解决方案是将此行添加到production.rb文件中
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) config.assets.precompile += %w( public.js public.css )
从评论中可以看出,所有文件名应用程序都已添加.所以,我只需添加那些没有被称为应用程序的那些.
希望它可以帮到某人!
原始问题
我有这个宝石文件
gem 'rails', '3.1.0' group :production do gem 'pg' end group :development, :test do gem 'sqlite3' end gem "heroku" gem 'thin' gem 'sass-rails', " ~> 3.1.0" gem 'coffee-rails', "~> 3.1.0" gem 'tabulous' gem 'json' gem "paperclip", "~> 2.4" gem "devise" gem "redcarpet" group :assets do gem 'uglifier' end gem 'jquery-rails' gem "rspec-rails", :group => [:test, :development] group :test do end
当我使用"git push heroku master"进行部署时,我看到了这一点
Preparing app for Rails asset pipeline Running: rake assets:precompile mkdir -p /tmp/build_2m34y4hj01m4o/public/assets mkdir -p /tmp/build_2m34y4hj01m4o/public/assets mkdir -p /tmp/build_2m34y4hj01m4o/public/assets mkdir -p /tmp/build_2m34y4hj01m4o/public/assets/admin mkdir -p /tmp/build_2m34y4hj01m4o/public/assets/admin -----> Rails plugin injection Injecting rails_log_stdout Injecting rails3_serve_static_assets -----> Discovering process types Procfile declares types -> (none) Default types for Ruby/Rails -> console, rake, web, worker -----> Compiled slug size is 31.2MB -----> Launching... done, v5 http://maktaba.herokuapp.com deployed to Heroku
但是在heroku日志中我得到了这个ActionView :: Template :: Error.css没有预编译奇怪..我认为它正在查看部署反馈
2011-11-23T22:59:48+00:00 app[web.1]: Rendered public/index.html.erb within layouts/first (0.7ms) 2011-11-23T22:59:48+00:00 app[web.1]: Completed 500 Internal Server Error in 30ms 2011-11-23T22:59:48+00:00 app[web.1]: 2011-11-23T22:59:48+00:00 app[web.1]: ActionView::Template::Error (public/public.css isn't precompiled): 2011-11-23T22:59:48+00:00 app[web.1]: 2: 2011-11-23T22:59:48+00:00 app[web.1]: 3: 2011-11-23T22:59:48+00:00 app[web.1]: 4:Maktaba 2011-11-23T22:59:48+00:00 app[web.1]: 5: <%= stylesheet_link_tag "public/public" %> 2011-11-23T22:59:48+00:00 app[web.1]: 6: <%= javascript_include_tag "public/public" %> 2011-11-23T22:59:48+00:00 app[web.1]: 7: <%= csrf_meta_tags %> 2011-11-23T22:59:48+00:00 app[web.1]: 8: <%= csrf_meta_tags %> 2011-11-23T22:59:48+00:00 app[web.1]: app/views/public/index.html.erb:5:in `_app_views_public_index_html_erb___1726244208117637261_45234420' 2011-11-23T22:59:48+00:00 app[web.1]: app/controllers/public_controller.rb:13:in `block (2 levels) in index' 2011-11-23T22:59:48+00:00 app[web.1]: 2011-11-23T22:59:48+00:00 app[web.1]: app/controllers/public_controller.rb:12:in `index'
谁能看到我做错了什么?
运行bundle exec rake assets:precompile
本地代码
提交更改并部署到heroku
如果这是您第一次将应用程序部署到heroku,则在解决此问题后可能会遇到更多错误.让我知道发生什么事.
实际上,您需要为生产环境运行预编译:
RAILS_ENV=production bundle exec rake assets:precompile
在本地运行
提交并部署到Heroku
更广泛地说,Heroku文档描述了Cedar上Rails 3.1+资产编译的三个选项:
在本地编译(在此答案中介绍)
在slug编译期间编译
在运行时编译