サンプルスクリプトを書く
path: “/index.html” リクエストで source/index.html.md を HTML に変換するスクリプトを書いてみます:
|
|
実行します:
|
|
ポイントは、
- Middleman::Application の派生クラスのインスタンスを生成すると、extensions の読み込み、activate や local config の読み込みが行われる
- :ready フックを run することで実際の resources の読み込みが行われる
- このフックを起動しないとリソースの読み込みは完全に行われない
extensions の仕組みや、resources の読み込みの過程を洗ってみます。
参考サイト
https://github.com/yterajima/middleman-tansu
Wiki-like automatic linking in Middleman
MiddlemanのExtensionやTemplateを色々と試しました
Middlemanでwikiっぽいことができたら便利だなと思ったからmiddleman-tansu v0.1.0をリリースした | e2esound.com業務日誌
gem
middleman-pry
- カスタマイズ
- CSS: style.css
template-aks の構成と説明
- layout
- helpers
- extentions
middlelamn-core を読み解く
- Middleman::Application
- define_hook する::before, :ready, :before_build, :after_build
- include Middleman::Coreextensions::Extensions
- => register() が使えるように成る
- register Middleman::CoreExtensions::Request, FileWacher,Data., Middleman::Sitemap
- => class なら extension.new、module などなら extension.registered(self) を呼ぶ
- Middleman::Application.new
- build cmd なら Middleman::BuildAction.new() で base.class.shared_instance で new される
- リクエスト毎に Middleman::Application から派生されたクラスを作り、そこから new する
- register したときに、Middleman::CoreExtensions::*:registered で InstanceMethod module 内の関数(initialize()含む)を app に include するよう send してるため、それぞれの initialize が呼ばれる
- initialized() を持ってるのはData, Extensions のみ
- 各種 extensions で hook などを設定
- Extensions.new
- initialized, before_configuration hook を呼ぶ
- “config.rb” を実行する
- activate する
- extensions に登録
- activate する
- after_configuration hook を呼ぶ
- build cmd なら Middleman::BuildAction.new() で base.class.shared_instance で new される
- require middleman
require middleman-core
application.rb
conf.rb
core-extensions/data
InstanseMethod
initialize: load config.rb
register
initialize
activate
after_configulation
sitemap を読み解く
- build
https://github.com/middleman/middleman/blob/v3-stable/middleman-core/lib/middleman-core/cli/build.rb
Thor
middleman-blog を読み解く
- BlogData
- BlogArticle