2014-04-16 42 views
0

但我有以下錯誤:播放框架+的Heroku:找不到我想要部署我玩框架來Heroku的資產

app[web.1]: [error] application - Error reading filename: create_user.json 
app[web.1]: [error] application - Error reading filename: delete_user.json 
app[web.1]: [error] application - Error reading filename: login_user.json 
... 

我使用這些以.json文件作爲架構驗證來自客戶的輸入。它們位於'app/assets/json /'目錄下。 我想他們根本沒有被推到Heroku,但我不知道如何檢查。

我看到這裏丟失的文件位於「公共」目錄下的類似問題,所以「混帳添加-A」可以解決這個問題:

Scala Play 2.1.0 - Assets not appearing on Heroku?

但是,它並不適用於我的問題。

附加信息:播放2.2.2,MongoHQ,只有服務器端。

預先感謝!

編輯:

堆棧跟蹤顯示我該應用程序在

/app/target/universal/stage/app/assets/json/ 

其中/應用對應於Heroku的測功機的應用程序的默認根尋找JSON文件(與檢查「heroku上運行的bash」),/目標/通用/階段在我Procfile被定義,並且剩餘的路徑/應用/資產/ JSON是共在我的開發環境中是正確的層次結構上面的路徑顯然不在Heroku上。

我用下面的方法來獲取JSON文件:

Play.application().getFile("app/assets/json/create_user.json"); 

工程在開發環境中,而不是在生產。我不知道如何使這些文件在生產中可訪問。

+0

一切也被推到Heroku的,請檢查您是否使用Git客戶端添加的JSON文件(commted它們)。 – biesior

+0

不幸的是,這不是問題。我使用git客戶端進行了檢查,並且已經添加並推送了這些文件。我對Github而不是Heroku做了同樣的步驟,所以我可以在repo中看到這些文件。剛開始調查一遍...... – rafaelrezend

回答

4

原來,玩遊戲!不允許這樣操作的生產模式

Play.application().getFile("app/assets/json/create_user.json"); 

根據詹姆斯·羅珀,here「這是不好的做法在播放要依靠文件系統」

相反,人們應該對文件中的「公共」文件夾是「的conf」並加載它們作爲資源。這些文件嵌入在打包的應用程序中。

由於他的解決辦法是在Scala中,我已經發現了與老戲的一些解決方案!框架1.X,我決定後究竟有Play爲我工作! 2.2.2和Java 1.7:

Play.application().classloader().getResourceAsStream("json/create_user.json"); 

與我的.json文件位於'conf/json'。多數民衆贊成致力於爲混帳回購協議

+0

你好,我也有同樣的問題,我在heroku上部署時在根目錄下添加了一個包含索引的文件夾我得到以下錯誤:'/ app/target/universal/stage/index '不存在 我從java類打開文件。 play.Play.application.getFile(「index」); – Allel

+0

我希望它已經爲你工作。 =) – rafaelrezend

+0

是的,它工作得很好:) – Allel