2012-04-24 71 views
0

我在Heroku上,其正确适用于我的开发环境中的应用。然而,在Heroku上,我的一个javascripts文件是空的。这是引导文件,由bootstrap_for_rails宝石的Rails 3.2资产管道增加了?身体= 1,但成为空资源

/assets/twitter/bootstrap-a43574b1a9d30434438a56d88ff10a70.js?body=1 
==> Returns empty file??? 

/assets/twitter/bootstrap-a43574b1a9d30434438a56d88ff10a70.js 
==> Returns the js file correctly 

提供我使用Rails 3.2资产管道,并使用在Heroku上雪松堆栈。

这里是我的production.rb资产设置

Production.rb

config.serve_static_assets = true 

config.assets.debug = true 

config.assets.compress = false 

config.assets.compile = true 

config.assets.digest = true 

# Specifies the header that your server uses for sending files 
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache 
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx 

很简单的application.js文件:

的application.js

//= require twitter/bootstrap 

的Gemfile

group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'uglifier', '>= 1.0.3' 
    gem 'twitter-bootstrap-rails', :git => 'https://github.com/seyhunak/twitter-bootstrap-rails.git' 
end 

我有麻烦搞清楚什么可能是有问题的作品。 Heroku的? Rails?链轮? CONFIGS?

我已经尝试过改变我的production.rb设置很多,包括注释掉action_dispatch.x_sendfile_header。

感谢您的帮助

回答

0

我在Heroku的资产组中遇到过一些问题。尝试将它移出它并看看它是否有效。

+0

没有工作.... – xlash 2012-04-25 01:53:50

0

你为什么直接访问单个文件?在生产中,管道的想法是将application.js清单文件中引用的所有单个文件合并到一个application.js文件中。

你的代码只应通过javascript_include_tag引用application.css文件。在发展这将显示包含的所有文件,如果你查看你的页面作为单独的js文件的来源,同时在生产什么,你应该看到的是像

/assets/application-46187b46e120ec79eabd082567660eb1.js

+0

这是生产前的状态,让我们说。我仍在调试每个组件。我一定会编译所有东西并压缩它进行生产。 – xlash 2012-04-24 18:49:19

+0

你发布了你的production.rb--你的应用程序在heroku上以生产模式运行,除非你改变了它......我不明白什么意思。这就是管道所做的事情,它正在做生产模式下应该做的事情。 – 2012-04-24 19:21:01

+0

没有提供空文件。每个其他JS(10+)都得到了正确的服务,即使使用?body = 1查询参数 – xlash 2012-04-24 20:11:36

2

一个js文件我相信这是设计。在看实际的引导文件(我在这里看:https://github.com/seyhunak/twitter-bootstrap-rails/blob/master/vendor/assets/javascripts/twitter/bootstrap.js),它没有实际的js。这只是通过“// = require”行向链轮发送信号,它应该将哪些.js文件引入并汇编在一起。在开发模式下,链轮的这些注释隐藏在前端,因为它们实际上只是链轮/导轨的实现细节。因此,总而言之,当您试图查看一个只有多个“// = require”的(app/lib/vendor)/ assets/javascript文件时,该文件将显示为空因为导轨/链轮在前端隐藏了您的实现细节。

+0

你可能是对的。奇怪的是,什么都没有编译和服务,我确实有所有其他文件服务正确,但我的页面上使用引导程序的JS不起作用。我会进一步调查,但如果你是对的,我的问题似乎在别处。谢谢 – xlash 2012-04-25 23:54:03

+0

不,javascripts应该可以正常工作。如果你还没有,看这个RailsCast。这可能很简单,你可以忽略。 http://railscasts.com/episodes/328-twitter-bootstrap-basics – shanemcd 2012-04-26 02:17:38