2015-04-01 41 views
1

我的Yesod子网站需要编写一些与应用程序根目录相关的文件。如何访问位于单独包中的子网站中的环境变量?

Looking at this,它似乎是一个脚手架的Yesod网站已经做了大部分的管道,但我怎么能访问这个不知道关于App记录的子网站?

approot = ApprootMaster $ appRoot . appSettings 

是否有给我的应用程序的根的函数(或至少:

approot本身使用一个参照appSettings,这是App的元件在脚手架耶索德项目定义一个到根目录的有效文件路径),而不必知道实现细节?当然,能够重复使用现有的Yesod功能将是最好的。

回答

2

在不知道主站点本身的类型的情况下,您无法访问主站点的字段,这通常会影响建立子站点的目的。典型的选项包括:

  1. 让你正在寻找一个明确的说法子网站
  2. 需要一个额外的类型类的约束,即主站点必须是一个实例的数据,从主获取数据site

yesod-static是前一种方法的一个很好的例子; yesod-auth是后者的一个例子。

+0

我似乎无法找到它在yesod-static或yesod-auth中定义或使用的位置。下面是我想要做的要点: 'saveToYesodRoot ::(YesodDataSource一)=>文件路径 - > IO() saveToYesodRoot文件=做 令根=(getAppRoot ::为approot一) 回报() ' 简而言之:我想获取应用程序的根目录,为其添加一个FilePath,并向其中写入一个文件。 Approot是一种数据类型,我也不确定如何将其转换为实际的文件路径。 – 2015-04-09 15:59:37