【问题标题】:rails 3.1 deployment on heroku .css isn't precompiled errorheroku .css 上的 rails 3.1 部署不是预编译错误
【发布时间】:2012-01-05 05:26:02
【问题描述】:

更新

我收到此错误是因为我有一个未与其余 .css 和 .js 文件一起编译的 public.css 和 public.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 文件

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: <html>
2011-11-23T22:59:48+00:00 app[web.1]:     3: <head>
2011-11-23T22:59:48+00:00 app[web.1]:     4:   <title>Maktaba</title>
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'

你们有谁知道我做错了什么吗?

【问题讨论】:

  • 将行 config.assets.precompile += %w( public.js public.css ) 添加到 production.rb 然后运行 ​​bundle exec rake assets:precompile 然后推送和 heroku 重新启动对我来说是诀窍。谢谢。

标签: ruby-on-rails heroku


【解决方案1】:
  • 在本地代码上运行 bundle exec rake assets:precompile
  • 提交更改并部署到 heroku

如果这是您第一次将应用部署到 Heroku,则在解决此问题后您可能会遇到更多错误。让我知道发生什么事。

【讨论】:

    【解决方案2】:

    实际上,您需要为您的生产环境运行预编译:

    • 在本地运行RAILS_ENV=production bundle exec rake assets:precompile
    • 提交并部署到 Heroku

    更广泛地说,Heroku docs 描述了在 Cedar 上为 Rails 3.1+ 进行资产编译的三个选项:

    1. 在本地编译(包含在此答案中)
    2. 在 slug 编译期间进行编译
    3. 在运行时编译

    【讨论】:

      猜你喜欢
      • 2013-03-26
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2012-06-27
      • 2013-12-13
      • 1970-01-01
      相关资源
      最近更新 更多