SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
Hakyllで遊んでみた
             2013-04-06 広島Ruby勉強会 #031




13年4月7日日曜日
Hakyllって?



             Jekyll みたいなやつ

             静的サイトジェネータ




13年4月7日日曜日
Jekyllじゃダメなん?



             いや、いいけど。

             Haskellしたい。




13年4月7日日曜日
Jekyll と何が違うん?

             Jekyll はルールが決まってる

             Hakyll はルールから定義できる

              デフォだとJekyll似てる感じの構成

             カスタマイズしやすそう



13年4月7日日曜日
Jekyll と何が違うん?



             コードハイライトに pygements が不要

              pandoc 使いたい




13年4月7日日曜日
目標・要求

             Markdown でかきたい

             Pandoc つかいたい

             SCSS つかいたい

             compass つかいたい



13年4月7日日曜日
資料


             http://jaspervdj.be/hakyll/

             http://jaspervdj.be/hakyll/tutorials/01-
             installation.html




13年4月7日日曜日
インストール


             haskellの環境をインストール

               http://www.haskell.org/platform/

             $ cabal install hakyll




13年4月7日日曜日
セットアップ


             $ hakyll-init my-site

               ファイルが生成されます

             $ cd my-site




13年4月7日日曜日
作成されたファイル
        ├── about.rst
        ├── contact.markdown
        ├── css
        │ └── default.css
        ├── images
        │ └── haskell-logo.png
        ├── index.html
        ├── posts
        │ ├── 2012-08-12-spqr.markdown
        │ ├── 2012-10-07-rosa-rosa-rosam.markdown
        │ ├── 2012-11-28-carpe-diem.markdown
        │ └── 2012-12-07-tu-quoque.markdown
        ├── site.hs
        └── templates
         ├── archive.html
         ├── default.html
         ├── post-item.html
         └── post.html


13年4月7日日曜日
コンパイル

             サイトを生成するためのプログラムは作る

               基本的な構成の例が用意してある

               site.hs

             $ ghc --make site.hs



13年4月7日日曜日
サイトの生成



             $ ./site build

               HTML が生成されます




13年4月7日日曜日
_site の中身
        _site
        ├── about.html
        ├── archive.html
        ├── contact.html
        ├── css
        │ └── default.css
        ├── images
        │ └── haskell-logo.png
        ├── index.html
        └── posts
           ├── 2012-08-12-spqr.html
           ├── 2012-10-07-rosa-rosa-rosam.html
           ├── 2012-11-28-carpe-diem.html
           └── 2012-12-07-tu-quoque.html



13年4月7日日曜日
サイトのプレビュー



             $ ./site preview

             $ open http://localhost:8000/




13年4月7日日曜日
デプロイ



             ./site deploy

             設定がいるけどね




13年4月7日日曜日
13年4月7日日曜日
あれどっかでみた?




13年4月7日日曜日
railsdoc.eiel.info




13年4月7日日曜日
13年4月7日日曜日
解説



             生成したファイルは _site

             その他のメタデータ _cache




13年4月7日日曜日
解説

             マッチするファイルがみつかる

              登録した処理をする

             作成したいファイル名を登録

              ファイルを生成

              他のファイルの情報を利用したり


13年4月7日日曜日
解説



             依存性の扱いがよくわからない

              要勉強




13年4月7日日曜日
markdown を使う



             なにもしなくても使える

             pandocCompilerを使う




13年4月7日日曜日
pandocを使う



             pandocCompiler使った




13年4月7日日曜日
SCSS を使う


             マッチしたときの処理の途中で

              unixFilter で コマンドをフィルターに

              sass コマンドで。




13年4月7日日曜日
SCSS を使う場合


        http://jaspervdj.be/hakyll/reference/Hakyll-Core-UnixFilter.html
        にかいてあるとおりでいけます

        match "css/*.scss" $ do
          route $ setExtension "css"
          compile $ getResourceString
              >>= withItemBody (unixFilter "sass" ["-s", "--scss"])
              >>= return . fmap compressCss




13年4月7日日曜日
compassを使う
             いろいろやったけどうまくいかない

              preprocess ってのがあったけど

              preprocess で生成したファイルを更新
              したと認識してくれない

             仕方ないので

              rake でラッパーかいた

13年4月7日日曜日
Rakefile



        desc 'generate site'
        task :generate do
         sh 'ghc --make site.hs && compass compile && ./site build'
        end




13年4月7日日曜日
URLまわり

             hoge.md には hoge/ でアクセスしたい

              hoge.md -> hoge/indexhtml

             customRoute に関数を渡せばよい

              Identify -> FilePath な関数



13年4月7日日曜日
例



        let addIndex x = replaceBaseName x $ (takeBaseName x) ++ "/index"
        route $ customRoute $
          addIndex . (`replaceExtension` "html") . toFilePath




13年4月7日日曜日
ソースコード
      https://github.com/eiel/raildoc.eiel.info




13年4月7日日曜日
ご清聴ありがとうございます




13年4月7日日曜日

Mais conteúdo relacionado

Semelhante a Hakyllで遊んでみた。

Mysql casual talks vol4
Mysql casual talks vol4Mysql casual talks vol4
Mysql casual talks vol4matsuo kenji
 
PhpStormとGrunt.jsで作るCakePHP快適開発環境
PhpStormとGrunt.jsで作るCakePHP快適開発環境 PhpStormとGrunt.jsで作るCakePHP快適開発環境
PhpStormとGrunt.jsで作るCakePHP快適開発環境 kamiyam .
 
Scala2.10.x bytecode problems in Android
Scala2.10.x bytecode problems in AndroidScala2.10.x bytecode problems in Android
Scala2.10.x bytecode problems in AndroidTaisuke Oe
 
20101106 ramaze発表
20101106 ramaze発表20101106 ramaze発表
20101106 ramaze発表Fukui Osamu
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶHiroshi Oyamada
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memoKiyotaka Oku
 
JavaEE6 First Application #glassfishjp
JavaEE6 First Application #glassfishjpJavaEE6 First Application #glassfishjp
JavaEE6 First Application #glassfishjpSatoshi Kubo
 
Rails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2editionRails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2editionSatomi Tsujita
 
Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)hiboma
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門Tomoya Kawanishi
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
Word camptokyo2012セッション資料
Word camptokyo2012セッション資料Word camptokyo2012セッション資料
Word camptokyo2012セッション資料horike37
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話Keishi Hosoba
 
Building document with the Sphinx public edtion
Building document with the Sphinx public edtionBuilding document with the Sphinx public edtion
Building document with the Sphinx public edtionYukihiko SAWANOBORI
 
バージョンアップに負けないためのプラクティス
バージョンアップに負けないためのプラクティスバージョンアップに負けないためのプラクティス
バージョンアップに負けないためのプラクティスYuji Tokuda
 
New Generation Build System "Fly"
New Generation Build System "Fly"New Generation Build System "Fly"
New Generation Build System "Fly"deepblue will
 

Semelhante a Hakyllで遊んでみた。 (20)

Mysql casual talks vol4
Mysql casual talks vol4Mysql casual talks vol4
Mysql casual talks vol4
 
PhpStormとGrunt.jsで作るCakePHP快適開発環境
PhpStormとGrunt.jsで作るCakePHP快適開発環境 PhpStormとGrunt.jsで作るCakePHP快適開発環境
PhpStormとGrunt.jsで作るCakePHP快適開発環境
 
Scala2.10.x bytecode problems in Android
Scala2.10.x bytecode problems in AndroidScala2.10.x bytecode problems in Android
Scala2.10.x bytecode problems in Android
 
20101106 ramaze発表
20101106 ramaze発表20101106 ramaze発表
20101106 ramaze発表
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memo
 
JavaEE6 First Application #glassfishjp
JavaEE6 First Application #glassfishjpJavaEE6 First Application #glassfishjp
JavaEE6 First Application #glassfishjp
 
Rails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2editionRails初心者レッスン lesson5 2edition
Rails初心者レッスン lesson5 2edition
 
Sacss sp5
Sacss sp5Sacss sp5
Sacss sp5
 
Railsの基礎
Railsの基礎Railsの基礎
Railsの基礎
 
Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
#31 愛しのst2
#31 愛しのst2#31 愛しのst2
#31 愛しのst2
 
Word camptokyo2012セッション資料
Word camptokyo2012セッション資料Word camptokyo2012セッション資料
Word camptokyo2012セッション資料
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話
 
Building document with the Sphinx public edtion
Building document with the Sphinx public edtionBuilding document with the Sphinx public edtion
Building document with the Sphinx public edtion
 
バージョンアップに負けないためのプラクティス
バージョンアップに負けないためのプラクティスバージョンアップに負けないためのプラクティス
バージョンアップに負けないためのプラクティス
 
New Generation Build System "Fly"
New Generation Build System "Fly"New Generation Build System "Fly"
New Generation Build System "Fly"
 

Mais de Tomohiko Himura

つながりをゆるふわにしよう Active supprt notifications
つながりをゆるふわにしよう Active supprt notificationsつながりをゆるふわにしよう Active supprt notifications
つながりをゆるふわにしよう Active supprt notificationsTomohiko Himura
 
コンピュータをもっと使おう
コンピュータをもっと使おうコンピュータをもっと使おう
コンピュータをもっと使おうTomohiko Himura
 
OSC2013 HIROSHIMA ライトニングトーク すごい広島
OSC2013 HIROSHIMA ライトニングトーク すごい広島OSC2013 HIROSHIMA ライトニングトーク すごい広島
OSC2013 HIROSHIMA ライトニングトーク すごい広島Tomohiko Himura
 
広島で Ruby が流行らないのはどう考えても俺たちが悪い
広島で Ruby が流行らないのはどう考えても俺たちが悪い広島で Ruby が流行らないのはどう考えても俺たちが悪い
広島で Ruby が流行らないのはどう考えても俺たちが悪いTomohiko Himura
 
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。Tomohiko Himura
 
Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術Tomohiko Himura
 
Rails プロジェクトでスタートダッシュを決める
Rails プロジェクトでスタートダッシュを決めるRails プロジェクトでスタートダッシュを決める
Rails プロジェクトでスタートダッシュを決めるTomohiko Himura
 
すごい cron ? - Jenkins 試した
すごい cron ? - Jenkins 試したすごい cron ? - Jenkins 試した
すごい cron ? - Jenkins 試したTomohiko Himura
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門Tomohiko Himura
 
すごい Hiroshima で楽しく学ぼう
すごい Hiroshima で楽しく学ぼうすごい Hiroshima で楽しく学ぼう
すごい Hiroshima で楽しく学ぼうTomohiko Himura
 
軽量マークアップ言語で気楽にマークアップ
軽量マークアップ言語で気楽にマークアップ軽量マークアップ言語で気楽にマークアップ
軽量マークアップ言語で気楽にマークアップTomohiko Himura
 
Rails Guide 翻訳しようぜ。
Rails Guide 翻訳しようぜ。Rails Guide 翻訳しようぜ。
Rails Guide 翻訳しようぜ。Tomohiko Himura
 
SNS 「github」で遊ぼう
SNS 「github」で遊ぼうSNS 「github」で遊ぼう
SNS 「github」で遊ぼうTomohiko Himura
 

Mais de Tomohiko Himura (20)

つながりをゆるふわにしよう Active supprt notifications
つながりをゆるふわにしよう Active supprt notificationsつながりをゆるふわにしよう Active supprt notifications
つながりをゆるふわにしよう Active supprt notifications
 
Hiroshimarbについて
HiroshimarbについてHiroshimarbについて
Hiroshimarbについて
 
コンピュータをもっと使おう
コンピュータをもっと使おうコンピュータをもっと使おう
コンピュータをもっと使おう
 
OSC2013 HIROSHIMA ライトニングトーク すごい広島
OSC2013 HIROSHIMA ライトニングトーク すごい広島OSC2013 HIROSHIMA ライトニングトーク すごい広島
OSC2013 HIROSHIMA ライトニングトーク すごい広島
 
広島で Ruby が流行らないのはどう考えても俺たちが悪い
広島で Ruby が流行らないのはどう考えても俺たちが悪い広島で Ruby が流行らないのはどう考えても俺たちが悪い
広島で Ruby が流行らないのはどう考えても俺たちが悪い
 
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
O/R Mapping の話をするよ。ActiveRecord の話をしたかった。
 
Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術
 
Rails プロジェクトでスタートダッシュを決める
Rails プロジェクトでスタートダッシュを決めるRails プロジェクトでスタートダッシュを決める
Rails プロジェクトでスタートダッシュを決める
 
すごい cron ? - Jenkins 試した
すごい cron ? - Jenkins 試したすごい cron ? - Jenkins 試した
すごい cron ? - Jenkins 試した
 
すごい広島
すごい広島すごい広島
すごい広島
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門
 
すごい Hiroshima で楽しく学ぼう
すごい Hiroshima で楽しく学ぼうすごい Hiroshima で楽しく学ぼう
すごい Hiroshima で楽しく学ぼう
 
軽量マークアップ言語で気楽にマークアップ
軽量マークアップ言語で気楽にマークアップ軽量マークアップ言語で気楽にマークアップ
軽量マークアップ言語で気楽にマークアップ
 
Liquid の紹介
Liquid の紹介Liquid の紹介
Liquid の紹介
 
Git 仕組み 入門
Git 仕組み 入門Git 仕組み 入門
Git 仕組み 入門
 
Rails Guide 翻訳しようぜ。
Rails Guide 翻訳しようぜ。Rails Guide 翻訳しようぜ。
Rails Guide 翻訳しようぜ。
 
Hiroshimarb 027-fiber
Hiroshimarb 027-fiberHiroshimarb 027-fiber
Hiroshimarb 027-fiber
 
Hiroshimarb 027-fiber
Hiroshimarb 027-fiberHiroshimarb 027-fiber
Hiroshimarb 027-fiber
 
OSC 2012 HIROSHIMA
OSC 2012 HIROSHIMAOSC 2012 HIROSHIMA
OSC 2012 HIROSHIMA
 
SNS 「github」で遊ぼう
SNS 「github」で遊ぼうSNS 「github」で遊ぼう
SNS 「github」で遊ぼう
 

Último

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Último (10)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

Hakyllで遊んでみた。

  • 1. Hakyllで遊んでみた 2013-04-06 広島Ruby勉強会 #031 13年4月7日日曜日
  • 2. Hakyllって? Jekyll みたいなやつ 静的サイトジェネータ 13年4月7日日曜日
  • 3. Jekyllじゃダメなん? いや、いいけど。 Haskellしたい。 13年4月7日日曜日
  • 4. Jekyll と何が違うん? Jekyll はルールが決まってる Hakyll はルールから定義できる デフォだとJekyll似てる感じの構成 カスタマイズしやすそう 13年4月7日日曜日
  • 5. Jekyll と何が違うん? コードハイライトに pygements が不要 pandoc 使いたい 13年4月7日日曜日
  • 6. 目標・要求 Markdown でかきたい Pandoc つかいたい SCSS つかいたい compass つかいたい 13年4月7日日曜日
  • 7. 資料 http://jaspervdj.be/hakyll/ http://jaspervdj.be/hakyll/tutorials/01- installation.html 13年4月7日日曜日
  • 8. インストール haskellの環境をインストール http://www.haskell.org/platform/ $ cabal install hakyll 13年4月7日日曜日
  • 9. セットアップ $ hakyll-init my-site ファイルが生成されます $ cd my-site 13年4月7日日曜日
  • 10. 作成されたファイル ├── about.rst ├── contact.markdown ├── css │ └── default.css ├── images │ └── haskell-logo.png ├── index.html ├── posts │ ├── 2012-08-12-spqr.markdown │ ├── 2012-10-07-rosa-rosa-rosam.markdown │ ├── 2012-11-28-carpe-diem.markdown │ └── 2012-12-07-tu-quoque.markdown ├── site.hs └── templates ├── archive.html ├── default.html ├── post-item.html └── post.html 13年4月7日日曜日
  • 11. コンパイル サイトを生成するためのプログラムは作る 基本的な構成の例が用意してある site.hs $ ghc --make site.hs 13年4月7日日曜日
  • 12. サイトの生成 $ ./site build HTML が生成されます 13年4月7日日曜日
  • 13. _site の中身 _site ├── about.html ├── archive.html ├── contact.html ├── css │ └── default.css ├── images │ └── haskell-logo.png ├── index.html └── posts ├── 2012-08-12-spqr.html ├── 2012-10-07-rosa-rosa-rosam.html ├── 2012-11-28-carpe-diem.html └── 2012-12-07-tu-quoque.html 13年4月7日日曜日
  • 14. サイトのプレビュー $ ./site preview $ open http://localhost:8000/ 13年4月7日日曜日
  • 15. デプロイ ./site deploy 設定がいるけどね 13年4月7日日曜日
  • 20. 解説 生成したファイルは _site その他のメタデータ _cache 13年4月7日日曜日
  • 21. 解説 マッチするファイルがみつかる 登録した処理をする 作成したいファイル名を登録 ファイルを生成 他のファイルの情報を利用したり 13年4月7日日曜日
  • 22. 解説 依存性の扱いがよくわからない 要勉強 13年4月7日日曜日
  • 23. markdown を使う なにもしなくても使える pandocCompilerを使う 13年4月7日日曜日
  • 24. pandocを使う pandocCompiler使った 13年4月7日日曜日
  • 25. SCSS を使う マッチしたときの処理の途中で unixFilter で コマンドをフィルターに sass コマンドで。 13年4月7日日曜日
  • 26. SCSS を使う場合 http://jaspervdj.be/hakyll/reference/Hakyll-Core-UnixFilter.html にかいてあるとおりでいけます match "css/*.scss" $ do route $ setExtension "css" compile $ getResourceString >>= withItemBody (unixFilter "sass" ["-s", "--scss"]) >>= return . fmap compressCss 13年4月7日日曜日
  • 27. compassを使う いろいろやったけどうまくいかない preprocess ってのがあったけど preprocess で生成したファイルを更新 したと認識してくれない 仕方ないので rake でラッパーかいた 13年4月7日日曜日
  • 28. Rakefile desc 'generate site' task :generate do sh 'ghc --make site.hs && compass compile && ./site build' end 13年4月7日日曜日
  • 29. URLまわり hoge.md には hoge/ でアクセスしたい hoge.md -> hoge/indexhtml customRoute に関数を渡せばよい Identify -> FilePath な関数 13年4月7日日曜日
  • 30. let addIndex x = replaceBaseName x $ (takeBaseName x) ++ "/index" route $ customRoute $ addIndex . (`replaceExtension` "html") . toFilePath 13年4月7日日曜日
  • 31. ソースコード https://github.com/eiel/raildoc.eiel.info 13年4月7日日曜日