← All posts tagged yesod

dr-Chaos
жисть Сперва поломал машину где собираю вебсервер на yesod-е. Поставив libc6 более страшей версии. Пытался понять в чем проблема и откртывал стёр единственный пароль от postgresql базы.
Молодцом!
dr-Chaos
? Haskell Чо это мы все про раст.
Вот господа расскажите мне за полностью статический бинарник на хаскеле (даже с glibc и т.п.) , а то что-то у меня не выходит yesod так собрать, а советы отсюда stackoverflow.com как-то расстраивают.
dr-Chaos
WTF Amazon Haskell aws yesod Пока не поменял ендпоинт европейскому бкету на EU-шный. При аплоаде периодически пугал меня ошибками
hClose: resource vanished
и
FailedConnectionException "bucket_name.s3.amazonaws.com" 443
после удаления. Хотя и удалял
Срань какая-то...
dr-Chaos
WTF Haskell cabal yesod блин какая-то магия. Делаю всё то же что и в #2522513 , но не в виртуалке. Не хочет собираться, как залипло. Кажет ошибку :

Resolving dependencies...
cabal: Could not resolve dependencies:
trying: AxxonCloud-0.0.1 (user goal)
trying: asn1-types-0.2.1 (dependency of AxxonCloud-0.0.1)
next goal: yesod-platform (dependency of AxxonCloud-0.0.1)
rejecting: yesod-platform-1.2.4.2, 1.2.4.1, 1.2.4 (conflict:
asn1-types==0.2.1, yesod-platform => asn1-types==0.2.0)
rejecting: yesod-platform-1.2.3, 1.2.2, 1.2.1, 1.2.0.1, 1.2.0, 1.1.9.1, 1.1.9,
1.1.8, 1.1.7.2, 1.1.7.1, 1.1.7, 1.1.6.1, 1.1.6, 1.1.5, 1.1.4.1, 1.1.4, 1.1.3,
1.1.2, 1.1.1, 1.1.0, 1.0.6.1, 1.0.6, 1.0.5, 1.0.4.2, 1.0.4.1, 1.0.4, 1.0.3.4,
1.0.3.3, 1.0.3.2, 1.0.2, 1.0.1, 1.0.0, 0.10.3, 0.10.2 (conflict: AxxonCloud =>
yesod-platform>=1.2.4 && <1.3)
Backjump limit reached (change with --max-backjumps).
Note: when using a sandbox, all packages are required to have consistent
dependencies. Try reinstalling/unregistering the offending packages or
recreating the sandbox.
cabal-meta:
log of commands saved to: /home/yuriy-shelyag/sandboxes/axxoncloud/.shelly/4.txt
Exception: error running: cabal install hashable -fsse41 /home/yuriy-shelyag/sandboxes/axxoncloud/ vendor/starling
exit status: 1
stderr: cabal: Could not resolve dependencies:
trying: AxxonCloud-0.0.1 (user goal)
trying: asn1-types-0.2.1 (dependency of AxxonCloud-0.0.1)
next goal: yesod-platform (dependency of AxxonCloud-0.0.1)
rejecting: yesod-platform-1.2.4.2, 1.2.4.1, 1.2.4 (conflict:
asn1-types==0.2.1, yesod-platform => asn1-types==0.2.0)
rejecting: yesod-platform-1.2.3, 1.2.2, 1.2.1, 1.2.0.1, 1.2.0, 1.1.9.1, 1.1.9,
1.1.8, 1.1.7.2, 1.1.7.1, 1.1.7, 1.1.6.1, 1.1.6, 1.1.5, 1.1.4.1, 1.1.4, 1.1.3,
1.1.2, 1.1.1, 1.1.0, 1.0.6.1, 1.0.6, 1.0.5, 1.0.4.2, 1.0.4.1, 1.0.4, 1.0.3.4,
1.0.3.3, 1.0.3.2, 1.0.2, 1.0.1, 1.0.0, 0.10.3, 0.10.2 (conflict: AxxonCloud =>
yesod-platform>=1.2.4 && <1.3)
Backjump limit reached (change with --max-backjumps).
Note: when using a sandbox, all packages are required to have consistent
dependencies. Try reinstalling/unregistering the offending packages or
recreating the sandbox.
dr-Chaos
WTF Haskell yesod Чувствую себя дибилом. #2521749 . Сделал всё начисто — работает.
Т.е. удалил весь локальный кабал, поставил системный, им поставил последнюю версию локально, прибил системный, вышел из баша , добавил ~/.cabal/bin в пути ; поставил cabal-meta и cabal-src , создал сендбокс, поставил сборку. И оно, сука, собралось.
dr-Chaos
WTF Haskell yesod я так понял прописывать в cabal-файл зависимост от yesod-platform проставлять бессмысленно. Платфоорму надо просто поставить, а затем собирать свой пакет?
dr-Chaos
? Haskell Дано: Есть тип данных App и его инстансы тайпклассов Yesod, YesodAuth и т.п. У тайпкласса Yesod есть функция isAuthenticated. Я специализирую её для каждого типа роутов и назначаю ту или иную функцию аутентификации. Функции для аутентификации лежат в отдельном от этого типа и его инстансов файле (Authentication.hs), который импортится в Foundation.hs.

Проблема: Одной из функций аутентификации необходимы данные из конфига, но чтобы их достать мне необходимо знать тип App и его инстансы, т.е. переносить часть функций из Authentication.hs в Foundation.hs , чего не хочется. Явно передавать конфиг тоже не хочется, поскольку функции аутентификации выполняются в обобщённой монаде (HandlerT master IO), которая при вызове является HandlerT App IO . Т.е. конфиг есть, но получить его можно только зная о типе App.
Есть ли какой-то вариант решения этой проблемы, кроме сливания всего в один файл?
dr-Chaos
жисть нанырялся, наконец, с маской за 2 дня. Наловил рапанов и скормил их @zamotivator под треп про монады и yesod.
Сижу отдыхаю, а морская водичка потихоньку вытекает из пазух...
dr-Chaos
WTF code Haskell yesod persist
Забавный прикол 
Этот хендлер отправляет приложение в SegFault

getFileMetaR  fileId = do
    File {..} <- runDB $ get404 fileId
    returnJson $ object ["id" .= fileId, "mime-type" .= fileMimetype, "ttl" .= fileTtl]

а этот нет
getFileMetaR  fileId = do
    File {..} <- fromJust404 $ runDB $ get fileId
    returnJson $ object ["id" .= fileId, "mime-type" .= fileMimetype, "ttl" .= fileTtl]

Где 
fromJust404 ::MonadHandler m => m (Maybe a) -> m a
fromJust404 l = l >>= maybe notFound return

а get404 http://hackage.haskell.org/packages/archive/yesod-persistent/1.2.0/doc/html/src/Yesod-Persist.html#get404
dr-Chaos
? Haskell tests yesod hspec Господа, подскажите как лучше сделать.
Задача: тестирование веб приложения на yesod.
Как я это себе вижу — идёт последовательно несколько тестов:
1. Добавление пользователя
2. Добавление этому пользователю некоего хранилища с секретом для подписывания (здесь мы где-то запоминаем id хранилища и секрет)
3. Добавление файлов в это хранилище.

Т.е. мне надо как-то шарить состояние между тестами. А hspec такого не умеет :( github.com И походу yesod.test основанный на нём не умеет тоже.
Можно, конечно, погдотовить некое тестовое окружение, т.е. добавить в базу нужные значения и пользоваться захардкожеными значениями.
Возможно, есть какие-то готовые рекомндации или всё самому?
dr-Chaos
? Haskell yesod Чувствую себя идиотом, но никак не могу ответить на вопрос. Как правильно работать с файлами открытыми на время жизни приложения?
Вот есть у меня тип App для которого я делаю инстанс Yesod тайпкласа. Запихнул я в него хендл файла. Открыл файл в makeFoundations функции открыл этот файл, а в других фитаю из него. Вопрос в том куда запихать closeFile? Я сперва подумал про ResourceT и его register, но не тут то было. Сигнатура makeFoundation Этого не позволяет. Делать обёртки вида withFile? Что-то как-то совсем криво получется...
dr-Chaos
Haskell io conduit Господа, есть вопрос по кондуитам.
Я хочу доработать биндинги для memcached-а. И одна из идей была использовать conduit-ы. И как я сейчас понимаю для этой задачи source/sink не особо то и нужны (т.е. обработка чанками в константной памяти конечно прикольно, однако в моём случае я всегда знаю размер), с другй стороны в yesod-е всё в resourceT и будет освобождение ресурсов в случае ексепшена.
Собственно вопрос, какие есть альтенативы и есть ли они вообще.