Haskell之Yesod开发–边踩坑边开发(3)

今天我们来认识一下yesod-bin

从一个干净的环境下进行如下安装步骤,以windows为例

  1. 安装haskell-platform(你可以手动安装cabal和ghc)
  2. 更新cabal。 cabal update
  3. 更新caball-install。 cabal install –global cabal-install 记得一定要带上global参数,否则你的更新只是在当前的cabal环境中,并没有什么luan用
  4. 切换到一个目录下(例如c:\lib\yesod) 这个目录会成为你的yesod的主目录,就像jdk一样
  5. 执行cabal sandbox init 我们使用沙盒技术,来将所需要的依赖都安装在此目录中
  6. 这里是可以复制一个叫做cabal.config的文件的,但是我尝试过两个链接https://www.stackage.org/nightly-2015-05-28http://www.stackage.org/lts/cabal.config,反而会引起yesod安装不成功,故跳过此步
  7. 安装yesod-bin。 cabal install yesod-bin (在http://blog.pangyanhan.com/haskell/2013-11-31-using-cabal-sandbox-libraries.html这里,第7步和第8步是相反的,但是我按照他说的安装不了,倒置之后可以成功)
  8. 安装yesod。 cabal install yesod (觉得没什么luan用,但保险起见还是安装一下)
  9. 设置环境变量,将c:\lib\yesod.cabal-sandbox和c:\lib\yesod.cabal-sandbox\bin增加到path中,你应该会注意到在\bin下面有一个yesod.exe.对的,我们接下来主要使用这个东西
  10. 现在进入到你的工程目录中
  11. 执行yesod init 按提示生成你需要的工程种类。我这里选择了simple
  12. 现在可以http://www.yesodweb.com/book/basics 这里的Helloworld来测试一下。

    Done

接下来我们想搞搞数据库方面。按照http://www.yesodweb.com/book-1.4/persistent第一段代码,实验一下。

>runHaskell -package-db=c:\lib\yesod\.cabal-sandbox\i386-windows-ghc-7.8.3-packages.conf.d Db 

不出意外的话,你会收到一条Error信息,提示Database.Persist.Sqlite找不到,那我们回来安装一下

切换到c:\lib\yesod,执行 cabal install persistent-sqlite

重新执行。

Done!

如果你想尝试mysql的连接,可以使用yesod init 来生成带有mysql的项目,然后执行

runHaskell -package-db=c:\lib\yesod\.cabal-sandbox\i386-windows-ghc-7.8.3-packages.conf.d app/main

会提示你,ClassyPrelude.Yesod,Database.Persist.MySql,Yesod.Static,Yesod.Jesmini没有安装

还是回到c:\lib\yesod目录

执行cabal install yesod.static 可以消除Yesod.static和Yesod.Jesmini的错误

但是当你安装cabal install persistent-mysql时,会提示你需要linux环境来编译pcre-light包。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-08 23:47:38

Haskell之Yesod开发–边踩坑边开发(3)的相关文章

Haskell之Yesod开发–边踩坑边开发(2)

今天继续上一节的开发 今天我们需要具体的开发一个图书馆网站,分为以下几个页面 / HomeR GET 主页 /login LoginR GET 用户登录页面 /library LibraryR GET 图书馆介绍页面 /booklist BookListR GET 图书列表页面 /book/#Integer BookR GET 具体图书页面 /user/#Integer UserR GET 具体用户页面 首先我们简单完成HomeR和LibraryR的页面(具体代码省略,大家自己完成). 如果要做

Haskell之Yesod开发–边踩坑边开发(4)

现在我们来搞定Linux下的Yesod,环境为14.0.2 首先拜读一下先辈的文章 https://www.evernote.com/shard/s279/sh/e8f4ca4d-dbb7-4759-af1d-257da135bed1/578c36b6283807d1 先下载ghc,建议7.8.4版本,ubuntu请下载 ghc-7.8.4-i386-unknown-linux-deb7.tar.bz2 再下载cabal 我这里从git上下载的是1.22 设置软链,先查找一下libgmp的位置

微信小程序开发问题踩坑整理,web-view、openID、小程序支付等汇总

微信小程序开发过程中遇到的问题踩坑整理,内容包括web-view.openID.小程序支付.网络请求等等一系列问题汇总,希望对大家能有一定帮助和启发. 内容如下: 关于小程序web-view bindmessage 真机不触发的问题 小程序iOS访问服务器访问不上,但android没有问题 关于ssl证书加密后小程序访问出错问题 微信拨打电话数据调用问题,如何一键拨号 后台php调用微信小程序接口获取openid,返回的是null 小程序图片显示问题,开发者工具显示,手机预览不显示 微信小程序支

快应用开发的踩坑之旅

前言 尝试一款新的开发框架的时候势必会遇见各种各样的问题.可能因为一开始不熟悉文档,导致配置错误,或是api使用错误.当然开发的时候我们也不能确认框架没有问题,是否存在bug.所以在某些出错的情况下,我们也许会不断怀疑自己,怀疑框架,最终怀疑人生.这时候就需要开发者们发挥无私的精神,积极讨论,记录并贡献自己的填坑秘笈,供大家讨论参考.所以在这里我就先记录自己收集及遇见的坑,希望起到抛砖引玉的作用.大家有不同的问题的可以一起讨论,方便后来的开发者. 容易出错的地方 1.更新 rpk 的时候出现版本

iOS开发遇到的坑之一: 开发遇见如下错误:Undefined symbols for architecture arm64

博客处女作,写得不好望谅解! “for architecture arm64”就是说没有支持arm64,在Build settings里architecture相关的几项需要配置正确 在最近升级cocoapod工具管理中,由于我们的工程版本号已经升级到了2.1了,所以升级过程中遇见了很多问题,折腾了好几天.这个问题便是其中一个.下面说说我们的解决方案 升级过后编译报 ld: can't link with a main executable file '/Users/WayneLiu_Mac/L

Android开发在路上:少去踩坑,多走捷径【转】

作者:gzjay,腾讯MIG无线产品部 高级工程师 最近一朋友提了几个Android问题让我帮忙写个小分享,我觉得对新人还是挺有帮助的,所以有了这个小分享. 1.目前, Android APP开发完成后,通常需要在哪些机型上进行测试? 2.目前, 开发Android APP时,需要考虑的分辨率有哪些? 这两个问题可以合起来回答的. http://developer.android.com/about/dashboards/index.html 源自Google Play的数据,每月都会进行upd

(转载)Android开发在路上:少去踩坑,多走捷径

1. 目前, Android APP开发完成后,通常需要在哪些机型上进行测试? 2. 目前, 开发Android APP时,需要考虑的分辨率有哪些? 这两个问题可以合起来回答的. http://developer.android.com/about/dashboards/index.html 源自Google Play的数据,每月都会进行update,可以及时了解Android版本比例趋势. 屏幕密度数据 OpenGL ES版本 也可以参考一下国内一个第三方数据:http://www.umind

网站移动版本开发踩坑实录一

最近公司项目需要开始做wap版本开发,虽然在上一家公司也有做过类似的工作,由于当时公司产品没有严格要求适配各个移动设备,也并没有很多动作效果和图片自适应这类的效果,相对来说体系没有那么成熟,更多是在wap版本上可以用就ok了(其实更多的工作集中在功能和cssser身上,交互效果没有那么强,唯一做的好玩一点的工作是菜单滑动.图片缩放[未被上线过]),因此基本上没有在移动端踩各种坑:说了这么多上一家公司的wap版本,下面开始讲讲现在做的项目让我在wap版本上踩的各种坑开始说起.   第一坑:技术选型

iOS开发-OpenGLES 入门踩坑

Flat coloring(单色) 是通知OpenGL使用单一的颜色来渲染,OpenGL将一直使用指定的颜色来渲染直到你指定其它的颜色. 指定颜色的方法为 public abstract void glColor4f(float red, float green, float blue, float alpha). 缺省的red,green,blue为1,代表白色. Smooth coloring (平滑颜色过渡) 当给每个顶点定义一个颜色时,OpenGL自动为不同顶点颜色之间生成中间过渡颜色(