Rails资产:预编译不编译要求

时间:2014-04-28 07:27:13

标签: ruby-on-rails ruby asset-pipeline

出于某种原因,在运行rake assets:precompile后,require中的application.js语句保持不变。以下是编译 application.js的样子:

//
//= require jquery
//= require jquery_ujs
//= require_directory .
//= require twitter/bootstrap
//= require rails.validations

$(document).on("click", '.show', function(e) {
    var value = $(this).attr('data-big-url');
$('.image_container img').attr('src', value);
return false;
});

应该替换//= require个陈述!

有什么想法吗?..

谢谢!

编辑:未编译application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require_directory .
//= require twitter/bootstrap
//= require rails.validations

$(document).on("click", '.show', function(e) {
var value = $(this).attr('data-big-url');
$('.image_container img').attr('src', value);
return false;
});

// $(window).load(function() {
//    $('#featured').orbit();
//   // $('#featured-bg').orbit();

...

它看起来完全一样!

这是我的production.rb

config.serve_static_assets = true
config.assets.compress = false
config.assets.compile = false
config.assets.digest = false

2 个答案:

答案 0 :(得分:1)

我可能错了,但我不相信你在预编译的JS文件中需要require ____

  

原因是require行被称为指令指南   为您的资产创建manifest.json文件。该   manifest基本上告诉Rails哪些文件组成了你的资产,   允许它有效地编译它们

您可以在Rails指南here中看到预编译文档 - 基本上说您从预编译中获得的文件是" standalone"文件。它们是作为静态文件加载的,没有任何预处理器或指令

我会试试这个:

$ rake assets:precompile RAILS_ENV=production 

这将编译文件,就好像它是生产环境一样,并将它们作为裸JS / CSS文件存储在/public/assets

答案 1 :(得分:0)

最后,我解决了这个问题:

我不得不降级到Ruby 1.9.3。

不幸的是,我仍然不知道问题的原因是什么,但现在我的资产编译正确。