phoenix-powerめちゃくちゃハマりました。何故か、 article.url だけ先頭に / が来る仕様で、プロジェクトページを使った場合にパスの記述が上手くいかない問題について。

一般的なpathの問題

問題 : 私は、ルートをOctopressで構築しているため、/middleman以下にページを作成することを考えました。しかし、デフォルトの設定では、なかなかパス設定が上手く行きませんでした。

上手く言った設定は以下の通り。asset_hashを設定してやると良いみたいです。

./config.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
set :site_url, 'http://syui.github.io/middleman'

activate :blog do |blog|
  blog.prefix = "blog"
  #blog.sources = "{year}-{month}-{day}-{title}.html"
  blog.tag_template = "tag.html"
  blog.calendar_template = "calendar.html"
end

configure :build do
  activate :asset_host, :host => "/middleman"
  activate :asset_hash
  set :relative_links, true
end

更に、ところどころに/をそのまま記述しているところがあったので、$ grep -R "'/'" .など検索をして、その箇所を#{site_url}に変更しました。

ちなみに、 Middleman の記事は、$ middleman article TITLEで作成し、上記の設定だとsyui.github.io/middleman/blog以下にポストされます。

この辺り、blog.prefixをプロジェクト名にするのだと勘違いしていました。

article.urlの問題

問題 : プレビューでは上手くアクセスできているのに、実際に公開されると、「続きを読む」のリンクからはアクセス出来ない現象が起こりました。

そこで、./build/index.htmlをみてみると、続きを読むのところだけ、リンクの先頭に/が来ているようでした。

したがって、./source/index.html.slimを確認してみると、どうやら個別記事の URL が入っているarticle.urlを使っているみたいでした。

つまり、通常の略式記述では、{tag}/{title}.htmlとなるところが、article.urlだと、/tag/title.htmlとなってしまているのです。

時間がかかった理由としては、プレビューで確認できませんできないため、pushしまくって地道に確認していくやりかたしか思いつきませんでした。

また、最初なので、slimの記述から何から何までよくわかりませんでした。

最終的には、article.urlの辺りを以下のように変更しました。具体的には、link_to articleを使います。

./source/*.slim
1
2
  = article.summary
  = link_to 'Read more…', article

とりあえず、応急処置としてはこんな感じで。疲れました…。

http://syui.github.io/middleman/