2012-09-19 144 views
1

Rails應用程序包含了兩次我的問題是類似於此的一些其他問題仍然沒有我的情況jQuery是在在Heroku

我包括jQuery的寶石鑲嵌在我的應用程序中的Gemfile提供一個答案:

gem 'jquery-rails' 

而且在application.js中:

//= require jquery 
//= require jquery-ui 
//= require jquery_ujs 
... 
//= require_tree . 

我development.rb有

# Do not compress assets 
config.assets.compress = false 
# Expands the lines which load the assets 
config.assets.debug = true 

我的資產沒有預編譯,沒有公共/資產。 本地一切都運行良好。但是當我推送到heroku時,我在頁面上獲得了不同的application.js文件。它不是一個清單文件,而是縮小了jQuery的版本。所以我得到了兩次jQuery。這裏是我的網頁的源的樣子:

<script src="/assets/jquery.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script> 
... 
<script src="/assets/application.js?body=1" type="text/javascript"></script> 

當我點擊/assets/application.js?body=1我看精縮jQuery的。當我在本地運行我的應用並單擊/assets/application.js?body=1時,我只能看到清單。 我試圖添加到development.rb

config.serve_static_assets = false 

它沒有幫助。我也清理了資產和緩存多次。 爲我的作品的唯一的事情是設置

config.assets.debug = false 

但我想知道是否有不會影響調試任何其他選項。

+0

當您部署到Heroku時,您的應用將使用'production.rb'配置而不是'development.rb'。 – jakeonrails

+0

我們在Heroku上爲同一個應用程序提供了多種環境。我最初沒有設置它,但我非常確定應用程序在開發模式下運行。在日誌中我看到'用命令啓動進程'bundle exec thin start -R config.ru -e development -p 59152' – lanan

+0

嗯..這可能不是設置它的首選方式 - 如果你鍵入heroku config你'你會看到你的RAILS_ENV和RACK_ENV變量,它會說'開發/生產/登臺/測試'等。 然後在你的Procfile中,你可以編輯你的web進程的行來說'web:bundle exec thin start -p $ PORT '它將使用RAILS/RACK_ENV來確定要運行哪個環境。 – jakeonrails

回答

0

在heroku上查看關於預編譯資產的this article。當您推送到heroku時,您是否看到以下部分的任何錯誤消息:

-----> Preparing Rails asset pipeline 
     Running: rake assets:precompile 

+0

沒有。我看到'rake assets:precompile',然後我看到預編譯需要多長時間,沒有錯誤。 '資產預編譯完成(62.74s) ' – lanan

1

我刪除了這條線

//= require_tree . 

和創建JavaScript中的子文件夾,然後移動所有的JavaScript目錄到子文件夾,除了的application.js

js文件,並寫下這行

//= require_tree ./sub_folder_name 

這是awsome和工作。

一件重要的事情需要注意:

這可能會導致你,你是兩次手動javascript_include_tag一個和其他由application.js中包含相同的文件。首先確認,如果是這種情況,你必須包括一次。

0

開發和生產,應該是不同的(/應用程序/資產,而不是縮小在開發中,公共/資產和縮小生產。

至於雙重包含,如果您的製作網頁服務頁面同時存在,我會檢查您的應用程序的頁面,如application.html.erb,看看它是否在那裏定義。如果是這樣,請將其刪除。