Haskell 和 Yesod 新手在这里。我一直在尝试遵循 Yesod 书 (http://www.yesodweb.com/book/persistent) 中 Persistent 章节中的与 Yesod 集成的示例。 Sqlite 似乎编译并运行良好。但是,我正在尝试使用 MongDB 并且很难让事情正常工作。具体来说:
在 sqlite 的示例中:
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persist|
Yesod 书说“Mongo 代码将使用 mongoSettings 代替。”但是我在任何模块中都找不到它,并且代码无法编译。因此,我不得不使用它而不是 mongoSettings:
MkPersistSettings { mpsBackend = ConT ''Action }
我必须导入 Language.Haskell.TH.Syntax 来编译它,我假设它应该对用户隐藏,所以我肯定做的不对。
另外,我发现在 Mongo 的持久测试中没有“共享”和“迁移”部分。我其实不知道为什么,我猜是因为 MongoDB 是 Schema-less 并且不需要迁移?
SqlPersist
我认为 MongoPersist 将是 SqlPersist 的对应物,我猜它几乎是——我在 test 目录的 init.hs 中找到了一个 MongoPersist 实例的持久性。但是它被注释掉了,所以我觉得它已经过时了?否则,据我所知,它无论如何都没有定义。所以我不知道如何转换以下行(Yesod 书的 P.115,或接近 http://www.yesodweb.com/book/persistent 的结尾)以适用于 MongoDB:
instance YesodPersist PersistTest where
type YesodPersistBackend PersistTest = SqlPersist
runDB action = do
PersistTest pool <- getYesod
runSqlPool action pool
与 MongoDBConn 一起使用
所以对于 sqlite,代码是(上面网页中的第一个示例):
main :: IO ()
main = withSqliteConn ":memory:" $ runSqlConn $ do
runMigration migrateAll
johnId <- insert $ Person "John Doe" $ Just 35
... and so on
但是
main :: IO()
main = withMongoDBConn ":memory:" $ runMongoDBConn $ do
runMigration migrateAll
johnId <- insert $ Person "John Doe" $ Just 35
... and so on
不起作用。首先,出于某种原因, runMigration 不在范围内。好的,也许我不需要迁移 MongoDB,所以我删除了该行。然后,编译器提示:
无法将预期类型AccessMode'与实际类型m0 b0'相匹配
预期类型:m0 t0 -> (t0 -> m0 b0) -> AccessMode
实际类型:m0 t0 -> (t0 -> m0 b0) -> m0 b0 等等。到了这个阶段,我对 monad 的粗略了解还不足以弄清楚这一点。
总而言之,我很难将书中的与 Yesod 集成示例从 Sqlite 转换为 MongoDB。有人可以为我提供一个使用 MongoDB 的 Yesod/Persistent 的具体示例吗?非常感谢。
最佳答案
我今天在 Github Yesod Cookbook 中添加了一个页面,该页面将 MongoDB 与 Persistent 结合使用。但是,它没有使用 withMongoDBConn,也没有避免 TH。另外,我在那里解释了为什么我使用单独的 YAML 配置文件。链接:https://github.com/yesodweb/yesod/wiki/Non-scaffolded-MongoDB-App
关于Yesod/Persistent 的 MongoDB 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11731953/
//1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json
我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby-vips的github页面上的链接,我们将不胜感激!如果有ruby-
我已经有很多两个值数组,例如下面的例子ary=[[1,2],[2,3],[1,3],[4,5],[5,6],[4,7],[7,8],[4,8]]我想把它们分组到[1,2,3],[4,5],[5,6],[4,7,8]因为意思是1和2有关系,2和3有关系,1和3有关系,所以1,2,3都有关系我如何通过ruby库或任何算法来做到这一点? 最佳答案 这是基本Bron–Kerboschalgorithm的Ruby实现:classGraphdefinitialize(edges)@edges=edgesenddeffind_maximum_
很高兴看到google代码:google-api-ruby-client项目,因为这对我来说意味着Ruby人员可以使用GoogleAPI-s来完善代码。虽然我现在很困惑,因为给出的唯一示例使用Buzz,并且根据我的实验,Google翻译(v2)api的行为必须与google-api-ruby-client中的Buzz完全不同。.我对“Explorer”演示示例很感兴趣——但据我所知,它并不是一个探索器。它所做的只是调用一个Buzz服务,然后浏览它已经知道的关于Buzz服务的事情。对我来说,Explorer应该让您“发现”所公开的服务和方法/功能,而不一定已经知道它们。我很想听听使用这个
如何通过HTTPClient使用持久HTTP连接?发送HTTP请求时是否只是设置KeepAlive的问题?文档指出支持持久连接,但没有告诉我们如何使用它们。 最佳答案 是availableinNet::HTTP如文档中所写,Net::HTTP.startimmediatelycreatesaconnectiontoanHTTPserverwhichiskeptopenforthedurationoftheblock.Theconnectionwillremainopenformultiplerequestsintheblockift
在他们的网站上找不到任何内容。我主要只是想看看哪个值得一试(当然是RIA)。谢谢 最佳答案 SproutCoredemos 关于ruby-是否有SproutCore或Cappuccino的现场演示/示例应用程序,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1419788/
我对自动测试的工作方式的印象(基于cucumbergithubwiki和其他在线内容)是它应该重新运行红色示例,直到它们通过。我的问题是它会重新运行规范文件中找到失败示例的所有示例,包括通过的示例。我不想浪费时间在修复失败示例的同时重新运行通过的示例。是否可以配置自动测试以便仅运行失败的示例? 最佳答案 您需要rspec-retrygem。以下是文档中有关如何实现它的一些示例:将它应用到覆盖整个测试套件的configureblock中...RSpec.configuredo|config|config.verbose_retry=t
我找不到任何使用Rack::Session::Cookie的简单示例,并且希望能够将信息存储在cookie中,并在以后的请求中访问它并让它过期.这些是我能找到的唯一示例:HowdoIset/getsessionvarsinaRackapp?http://rack.rubyforge.org/doc/classes/Rack/Session/Cookie.html这是我得到的:useRack::Session::Cookie,:key=>'rack.session',:domain=>'foo.com',:path=>'/',:expire_after=>2592000,:secret=
我正在构建一个部署在heroku上的rails5应用程序。我想用AWScongnito来实现单点登录,但是没有足够的例子来实现。我正在使用devise进行身份验证。现在我的目标是让我的所有用户都使用AWScognito并通过我的Rails应用程序对他们进行身份验证。这是我在AWScongnitowithrails上找到的唯一资源,我正在寻找一些示例应用程序或指向工具或rubyAPI文档的链接来实现此目的。请帮助。UpdateOnbasisOfBalaAnswerrequire'aws-sdk'ENV['AWS_ACCESS_KEY_ID']='XXXXXXXXXXXXXXXXX'E
在一堆rspecrails单元规范中,我做了类似的事情:describeFoodo[:bar,:baz].eachdo|a|it"shouldhavemany#{a}"doFoo.shouldhave_many(a)endendend为了更简洁的代码,我宁愿这样做:describeFoodospec_has_manyFoo,:bar,:bazend那么我该如何编写像spec_has_many()这样的辅助方法来像rspec的it()方法那样插入DSL代码呢?如果它是一个普通的实例方法,我会做类似的事情:defspec_has_many(model,*args)args.eachdo|a