2011-06-08 43 views
6

我使用的Play框架矢部教程,並添加標記,當跨越問題就來了。我不知道我添加了哪些代碼導致了更改,但現在Fixtures.loadModels(data.yml)代碼片段在.../some_folder/play-1.2.1/modules/docviewer/app中搜索文件/data.yml而不是.../some_folder/yabe_tutorial/conf/data.yml。問題的文件位置使用Fixtures.loadModels時(「...」)

這裏是我的代碼/ yabe_tutorial /應用程序的默認套餐:

@OnApplicationStart 
public class Bootstrap extends Job { 
    public void doJob() { 
    if (User.count() == 0) { 
     Fixtures.delete(); 
     Fixtures.loadModels("data.yml"); 
    } 
    } 
} 

有沒有我可以用它來改變loadModels使用目錄中的任何設置?

我對這一切都很陌生,所以我非常感謝一些幫助。謝謝!

+0

我有同樣的問題的根目錄的位置。在PROD模式下,燈具的路徑被破壞了:( – 2012-01-18 19:20:09

回答

0

當您在Fixtures類中加載模型時,它會掃描Play.javaPath列表中的所有目錄。正常的行爲是javaPath包含應用程序的「app」和「conf」目錄,例如根目錄(Play.applicationRoot,默認爲「。」)。嘗試調試並查看您的情況中包含的javaPath。 也許代碼此示例幫助:

 
    @Override 
    public void doJob() { 

     if (User.count() == 0) { 
      VirtualFile appRoot = VirtualFile.open(Play.applicationPath); 
      Play.javaPath.add(0, appRoot.child("conf")); 
      Fixtures.loadModels("data.yml"); 
     } 

    } 

其插入到Play.javaPath新的目錄路徑的頂部。無論如何,這段代碼非常難看。

+0

這沒有幫助,在DEV中,一切都運行正常,但是在PROD中,它被破壞了,我甚至沒有機會連接調試器 – 2012-01-18 19:20:59

1

西古德是正確的。 Fixtures.loadModels()尋找Play.javaPath中的yml文件。嘗試將您的data.yml文件重命名爲data-appname.yml等某個唯一名稱,並更改代碼中的文件名。

@OnApplicationStart 
public class Bootstrap extends Job { 
    public void doJob() { 
    if (User.count() == 0) { 
     Fixtures.loadModels("data-appname.yml"); 
    } 
    } 
} 

爲我工作。

另一種選擇是使用Play.applicationPath其中包含項目

Fixtures.loadModels(Play.applicationPath + "/app/conf/data-appname.yml"); 
+1

更改爲「data- appname.yml「也適用於我,謝謝。 – Alex 2013-08-04 14:13:03