Diary


2018-01-03(水) [長年日記]

_ [tdiary]3.2.1→5.0.7にversion upした

この手の作業は前回から実に5年ぶり.
ずいぶん間が空いたのは ruby v1.8のサポート終了によるもの.
レンタルサーバー上のrubyもそのうち updateされるだろうからそれから...と思っていたんだが未だにv1.8.7なんですね.
さすがに待ちくたびれて帰省に合わせてゴニョゴニョと.まぁヒマなんです.

まずは手元のマシンでテスト用環境の構築から開始.
gemとかrbenvってナニからw
大凡わかったところで $HOME/local にrbenvとbundlerを入れて ruby v2.5.0をインストール.
今時 configureとかmakeとかしなくていいのな.
pyenvやphpenv, plenvなんかもあるらしいんで世の中コレが常識なのか.

で,肝心のtdiaryは5.0.7のfullセットとcontribを落としてきて展開.
こちらは多少自分好みにごにょごにょすることになると思うんで,gemではなくいつも通りアーカイブを展開する方向とした.

立ち上げ自体は割とあっさり成功したけど, いつも使っているpluginを動かすために少々修正が必要だったりしてテストを含めて意外と時間食った.
image_ex.rb がサムネイル作ってくれないが一番はまったな.
これだけは譲れないのと代替手段が思い浮かばないのでどうにかこうにか使えるようにしたのが以下.

 ■image_ex.rb を使えるようにする.
   image_size.rbに代わりにfastimageを使うように変更
   % rbenv exec gem install fastimage
   で,インストールして
   image_ex.rb内にimage_size.rbに関係するところを以下に変更.
     require 'fastimage'
     size = FastImage.size(image_file)
     width = size[0]
     height = size[1]
     orig_type = FastImage.type(image_file)


さらに Ligthbox をdownloadしてimage_ex.rbを書き換え.

 ■Loghtboxを使う
 * http://lokeshdhakar.com/projects/lightbox2/ からdownload.
 * 展開後,distディレクトリのjsとcssにあるファイルを./jsにコピー,
   imagesにあるファイルを ./images にコピー
 * vews/footer.rhtml の最後の </div> の後を以下にする.
   <script type="text/javascript" src="./js/lightbox-plus-jquery.js"></script>
   <script>
     lightbox.option({
       'resizeDuration': 200,
       'fitImagesInViewport' : true,
       'wrapAround': true
     })
   </script>
 * image_ex.rbの修正
     %Q[<a href="#{h image_url}#{h list[id.to_i]}" data-lightbox="#{@image_date}" data-title="#{h alt}"><img src="#{h image_url}#{h slist[id.to_i]}" alt="#{h alt}" title="#{h alt}" #{width_tag} class="#{h place}"></a>]
    として,最後にadd_header_proc_doを追加.
      add_header_proc do
         %Q|\t<link href="./js/lightbox.css" rel="stylesheet" media="all" type="text/css" />\n|
      end

等々実施しつつ,もう使わないよなぁと思うpluginはバッサリ整理.
そもそもコレなんだっけというのが結構いたりしてw
今回はモチベーション維持とそれでいて軽く,でも見た目はほとんど変わっていないをコンセプトにしているのですが,まぁまぁバッサリ捨てたつもり.

まぁいいかと思えるくらいテストした(したつもり)でレンタルサーバー上で作業.
rbenv入れてrubyを入れるのは同じなんだけど2.5.0でコンパイルエラーが発生.
レンタルサーバー上のgccが古いためで,ココによるとHEADは修整された模様なんだが,とりあえず2.4.3をインストール.
テスト環境にも2.4.3を入れてチェックしてみたり,こんな感じでversionをサクッと入れ替えることができるのは便利...なんだが...そんなに使い込むことないな,仕事と関係ないしw
あ,車も仕事と全然関係ないかwww

で,レンタルサーバー上で動作チェックを開始したら...

500 Internal Server Error

サーバーログは...

[Tue Jan 02 17:27:10.807585 2018] [cgi:error] [pid 49832] [client 219.167.17.176:58399] AH01215: suexec policy violation: see suexec log for more details: /home/hogehoge/www/tdiary/update.cgi, referer: http://void.jpn.org/tdiary/
[Tue Jan 02 17:27:10.807680 2018] [cgi:error] [pid 49832] [client 219.167.17.176:58399] End of script output before headers: update.cgi, referer: http://void.jpn.org/tdiary/

まぁ,よくあることとは思いつつ,パーミッションはどう見ても問題ないし,windowsは使わないんで改行コードも問題なしと.
ググってみてもそんなんばっかりで参ったなぁと思っていたら pyenv で同様なことが起こるらしい@さくらを発見.
それではということで scriptの一行目をrbenvのshell script経由ではなくバイナリを直接参照に変更.

 #!/home/hogehoge/local/rbenv/shims/ruby
 これを以下へ
 #!/home/hogehoge/local/rbenv/versions/2.4.3/bin/ruby

これでバッチリ.できた.

各種確認をしてとりあえず問題ないレベルへ.
最後にスマホで確認してみたら...全然ダメー.
サイドバーが重なって頭のentryが読めない.
これまでは <% unless @conf.smartphone? %> から <% end %> で sidebar を消すようにしていたんだが,cssで対応することになったらしい.
thema/default/default.cssを参考にcssの書き方をグーグルに聞きながらそれっぽく参照できるように修正.
cssの書き方なんて知らないんだがW3C CSS Validation Serviceで検証した結果「おめでとうございます! エラーはありません。」と言われたからたぶん大丈夫w

久しぶりに家でパソコンでパソコンらしいことしたw