Pertanyaan Sumber aplikasi Yesod di sub direktori


Saya membuat situs web rintisan Yesod menggunakan yesod init dan bisa berlari yesod devel untuk pengujian. Namun, saya biasanya menempatkan sumber-sumber haskell yang sebenarnya dalam subdirektori src dari direktori proyek utama, yaitu satu tingkat di bawah tempat di mana <project>.cabal file berada.

Namun ketika saya pindah situs yaod ke src dan mengubah file komplotan untuk menambahkan baris hs-source-dir: src, Saya mendapat kesalahan yang serupa dengan yang berikut -

src/Model.hs:12:57:
Exception when trying to run compile-time code:
  config/models: openFile: does not exist (No such file or directory)
  Code: persistFile "config/models"
In the second argument of `share', namely
  `$(persistFile "config/models")'
In the expression:
  share
    [mkPersist sqlSettings, mkMigrate "migrateAll"]
    ($(persistFile "config/models"))

Sepertinya Yesod menggunakan banyak waktu kompilasi yang dihasilkan kode yang membutuhkan path ke berbagai direktori untuk dikodekan. Apa cara terbaik untuk memperbaiki masalah ini? Apa yang saya idealnya ingin lakukan adalah tidak membuat kode hard path ke "src" alll over the codebase. Apakah ada cara untuk membaca itu dari file komplotan itu sendiri?


4
2017-09-12 21:44


asal


Jawaban:


Bisa saja kamu bisa menulis beberapa kode TH yang mem-parsing file komplotan untuk menentukan hs-source-dirs, tapi saya pikir itu berlebihan. Cukup tambahkan ".." ke filepaths yang bersangkutan. Anda juga akan ingin mengedit Pengaturan dan bermain dengan fungsi glob.


0
2017-09-13 02:53