0

我今天在使用 Ruby on Rails 时遇到了一个令人不安的问题。我的资产没有被编译:我的意思是即使使用asset:precompiled,它们也没有被编译。

我相信这将更好地说明问题。预编译资产后,/public/assets/application.js 如下所示:

// This is a manifest file that'll be compiled into including all the files listed below.
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
// be included in the compiled file accessible from http://example.com/assets/application.js
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require twitter/bootstrap
//= require_tree .
;

css也是如此。该项目在其他计算机上运行良好,所以我怀疑我的配置在这里有问题。但是什么可能导致这种问题呢?Rails 并不是不尝试预编译,而是当他得到文件时,他只是将它们复制到资产文件夹而不预编译它们。

关于如何解决这个问题的任何线索?

编辑:添加资产输出:预编译

** Invoke assets:precompile (first_time)
** Execute assets:precompile
/home/plaristote/.rvm/rubies/ruby-2.0.0-p0/bin/ruby /home/plaristote/.rvm/gems/ruby-2.0.0-p0@visibleo_commApp/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace
** Invoke assets:precompile:all (first_time)
** Execute assets:precompile:all
** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:primary
/home/plaristote/.rvm/rubies/ruby-2.0.0-p0/bin/ruby /home/plaristote/.rvm/gems/ruby-2.0.0-p0@visibleo_commApp/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets --trace
** Invoke assets:precompile:nondigest (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:nondigest
4

2 回答 2

2

检查你是否在 config/enviroments/production.rb 中有这个:

# 禁用 Rails 的静态资源服务器(Apache 或 nginx 已经这样做了)

config.serve_static_assets = false

# 压缩 JavaScript 和 CSS

config.assets.compress = true

# 如果预编译资产丢失,不要回退到资产管道

config.assets.compile = false

# 为资产 URL 生成摘要

config.assets.digest = true

于 2013-04-04T15:06:38.810 回答
0

我有完全相同的问题。在看到这个问题之前,我最近在生产环境中将 Ruby 升级到了 2.0.0。通常情况下,预编译需要几分钟,但有了这个问题,它只需要几秒钟并且不会产生错误。

由于我使用 RVM 管理 Ruby,我能够轻松切换回 1.9.3 并重新尝试预编译。当我重新尝试使用 Ruby 1.9.3 进行预编译时,我收到了有关丢失文件的错误,这些错误都与第三方 gem CSS 中的错误有关。在我手动修复这些之后,预编译成功(使用 1.9.3)。

但是,我没有尝试切换回 Ruby 2.0.0 并在修复错误后进行预编译——这是一个正在停机的生产服务器,所以一旦我让它恢复运行,我就没有更多的时间了。但我的理论是,如果我切换回 2.0.0,预编译就会成功。我可能会在计划的停机时间内尝试确认这一点并更新此答案。

因此,似乎与 Ruby 2.0.0 和预编译任务没有显示错误存在某种关系。

于 2013-06-24T13:55:50.497 回答