tDiary 4.0.1へのアップデート
2014年2月20日追記:
tDiaryユーザー掲示板にて質問したところ、ただただしさんにblogkitを修正していただいた。これによりtDiary 4.0.2とblogkitの組み合わせでも動くようになった。
本エントリーは今後同様のことが起きた際に参考になるかもしれないので残しておく。tDiary 4.0.2 + blogkitについては別エントリーを参照していただきたい。
tDiaryを最新版に上げる件、結局最新の4.0.2ではblogkitと組み合わせるとうまく動かすことができず、試行錯誤の末4.0.1では動くようになった。以下その記録。
目次
前提
動作環境はRuby 2.1.0とgem 1.8.25をさくらのレンタルサーバにインストールするで整備したもの。詳細は以下の通り。
- さくらのレンタルサーバ
- FreeBSD 7.1-RELEASE-p16 (SAKURA11S) #0: Fri May 4 06:01:53 JST 2012
- $HOME/localにインストールしたruby 2.1.0p0 (2013-12-25 revision 44422) [i386-freebsd7.1]
- $HOME/local/lib/ruby/gemsにインストールしたRubyGems 1.8.25
もともと$HOME/www/blogにtDiary 3.1.0がインストールされている。すなわち、今回行うのは運用中のblogのシステムの入れ替えである。いきなり上書きは怖いので、とりあえず$HOME/www/blog-4.0.xにインストールし、成功したらblogと入れ替えることとする。
念のためデータディレクトリをバックアップしておく。
なお、以下$HOMEおよび ~ は /home/yoshimura-s を指す。文中やシェルスクリプトでは$HOMEと書くが、コマンドプロンプトでは ~ を使用、またエラーメッセージでは /home/yoshimura-s と表示されている。
tDiary 4.0.2での経緯
本題ではないので手短に。
本家のダウンロードページからtdiary-full-v4.0.2.tar.gz, tdiary-blogkit-v4.0.2.tar.gz, tdiary-contrib-v4.0.2.tar.gzを入手し、指示通りにインストール。Bundlerのインストールとbundle installの実行やシェバング行の書き換えなどを行ったが、styleまわりのnamespace変更の関係からか、記事が表示できなかった。
500 Internal Server Error uninitialized constant BlogwikiDiary (NameError) /home/yoshimura-s/www/blog-4.0.2/tdiary/io/base.rb:49:in `const_get' /home/yoshimura-s/www/blog-4.0.2/tdiary/io/base.rb:49:in `block in load_styles' /home/yoshimura-s/www/blog-4.0.2/tdiary/io/base.rb:48:in `each' /home/yoshimura-s/www/blog-4.0.2/tdiary/io/base.rb:48:in `load_styles' /home/yoshimura-s/www/blog-4.0.2/tdiary/io/base.rb:15:in `initialize' /home/yoshimura-s/www/blog-4.0.2/tdiary/base.rb:24:in `new' /home/yoshimura-s/www/blog-4.0.2/tdiary/base.rb:24:in `initialize' /home/yoshimura-s/www/blog-4.0.2/tdiary/view.rb:8:in `initialize' /home/yoshimura-s/www/blog-4.0.2/tdiary/view.rb:316:in `initialize' /home/yoshimura-s/www/blog-4.0.2/tdiary/dispatcher/index_main.rb:104:in `new' /home/yoshimura-s/www/blog-4.0.2/tdiary/dispatcher/index_main.rb:104:in `create_tdiary' /home/yoshimura-s/www/blog-4.0.2/tdiary/dispatcher/index_main.rb:21:in `run' /home/yoshimura-s/www/blog-4.0.2/tdiary/dispatcher/index_main.rb:6:in `run' /home/yoshimura-s/www/blog-4.0.2/tdiary/dispatcher.rb:26:in `dispatch_cgi' index.rb:32:in `<main>'
BlogKitのみGitHubで取得できる最新版(2014年2月11日現在)を入れることで、トップページは表示できるようになった。しかし、記事単位の表示をしようとすると、下記のようなエラーが出る。
Plugin Error Errors in plugins? Retry to Update or Configure. NoMethodError undefined method `stripped_title' for #<TDiary::Style::BlogwikiDiary:0x2150c62c> (plugin/title-navi.rb):54:in `navi_prev_diary' (plugin/00default.rb):307:in `index_page_tag' (plugin/00default.rb):213:in `block (2 levels) in load_plugin' /home/yoshimura-s/www/blog-4.0.2/tdiary/plugin.rb:111:in `call' /home/yoshimura-s/www/blog-4.0.2/tdiary/plugin.rb:111:in `block in header_proc' /home/yoshimura-s/www/blog-4.0.2/tdiary/plugin.rb:110:in `each' /home/yoshimura-s/www/blog-4.0.2/tdiary/plugin.rb:110:in `header_proc' (TDiary::Plugin#eval_src):5:in `block in eval_src' /home/yoshimura-s/www/blog-4.0.2/tdiary/plugin.rb:99:in `eval' /home/yoshimura-s/www/blog-4.0.2/tdiary/plugin.rb:99:in `block in eval_src' /home/yoshimura-s/www/blog-4.0.2/tdiary/core_ext.rb:112:in `block in safe' /home/yoshimura-s/www/blog-4.0.2/tdiary/core_ext.rb:114:in `call' /home/yoshimura-s/www/blog-4.0.2/tdiary/core_ext.rb:114:in `safe' /home/yoshimura-s/www/blog-4.0.2/tdiary/plugin.rb:98:in `eval_src' /home/yoshimura-s/www/blog-4.0.2/tdiary/base.rb:66:in `do_eval_rhtml' /home/yoshimura-s/www/blog-4.0.2/tdiary/base.rb:30:in `eval_rhtml' /home/yoshimura-s/www/blog-4.0.2/tdiary/view.rb:140:in `eval_rhtml' /home/yoshimura-s/www/blog-4.0.2/tdiary/dispatcher/index_main.rb:43:in `run' /home/yoshimura-s/www/blog-4.0.2/tdiary/dispatcher/index_main.rb:6:in `run' /home/yoshimura-s/www/blog-4.0.2/tdiary/dispatcher.rb:26:in `dispatch_cgi' index.rb:32:in `<main>'
これ以上追うのは私には無理と判断し、一つ前の4.0.1を入れることにした。以下はその手順。
入手
GitHubからtdiary-core、tdiary-theme、tdiary-contrib、tdiary-blogkitの、それぞれv4.0.1をダウンロードする。今回はgitを使わずwebからもらうこととする。ローカルPCのブラウザでzipをダウンロードする場合は以下の手順となる。
- 各リポジトリの[branch:master]と表示されているボタンをクリック
- [Tags]のタブを選択してv4.0.1をクリック
- ページ右の[Download ZIP]ボタンをクリック
取得したZIPファイルをサーバの適当な場所にFTPでアップロードしてunzipする。
もしくは、上記の手順で表示されたDownload ZIPボタンのリンクURLをコピーしてサーバ上でwget。私の環境ではサーバ認証が通らず、–no-check-certificate でダウンロード可能だったが、セキュリティ的には非推奨。
Webへの公開ディレクトリにコピー
「前提」での方針に伴い、上記のunzipでできたtdiary-core-4.0.1を$HOME/www/blog-4.0.1にひとまずコピーする。
%cp -rp tdiary-core-4.0.1 ~/www/blog-4.0.1
blogkit、contrib、themeについてはそれぞれ上記ディレクトリの下にコピーする。
%cp -rp tdiary-blogkit-4.0.1 ~/www/blog-4.0.1/blogkit %cp -rp tdiary-contrib-4.0.1 ~/www/blog-4.0.1/contrib %cd tdiary-theme-4.0.1 %cp -rp * ~/www/blog-4.0.1/theme
.htaccess、tdiary.confのコピー
.htaccessおよびtdiary.confについて、入手した4.0.1に含まれるサンプル(dot.htaccess及びblogkit/tdiary.conf.sample_ja)と従来の3.1.0で運用していたものを比較し、大きな変更がないことが確認できたので、従来のものをコピーする。
%cd ~/www/blog-4.0.1 %cp ../blog/.htaccess . %cp ../blog/tdiary.conf .
ただしtdiary.confについては最初に下記の行を追記。
@lang = 'ja'
なお、プラグインのパスについては、上記のコピーによってできたディレクトリ構成に合わせて下記のように設定してある(localについては後述)。
# プラグインのパスの設定 # @options['sp.path'] = ['misc/plugin', 'blogkit/plugin', 'contrib/plugin', 'local/plugin']
実行ファイルのシェバング行の書き換え
オリジナルのシェバング行は
#!/usr/bin/env ruby
となっているが、今回の環境では/usr/bin/envが使えないので、/home/yoshimura-s/local/bin/rubyに書き換える。
対象はindex.rb、update.rb、bin/tdiary、misc/convert2.rb、misc/migrate.rb。
下記のようなシェルスクリプトで実行した。
#!/bin/sh cd $HOME/www/blog-4.0.1 for f in index.rb update.rb bin/tdiary misc/convert2.rb misc/migrate.rb do echo $f cp $f ${f}.org cat ${f}.org | sed -e 's/\/usr\/bin\/env ruby/\/home\/yoshimura-s\/local\/bin\/ruby/' > $f done
スタイル、テーマ、JavaScriptのリンク生成
READMEではコピーするように指示されているが、シンボリックリンクで対処。
スタイル:
%cd ~/www/blog-4.0.1/tdiary %ln -s ../blogkit/tdiary/blog_style.rb %ln -s ../blogkit/tdiary/blogwiki_style.rb
テーマ:
%cd ~/www/blog-4.0.1/theme %ln -s ../blogkit/theme/blog
contribのsocialbuttonプラグインを使うためにはJavaScriptも必要。
%cd ~/www/blog-4.0.1/js %ln -s ../contrib/js/jquery.socialbutton.js %ln -s ../contrib/js/socialbutton.js
プラグインの追加インストール
投稿日時表示機能のプラグイン postedat.rb を使用しているので、これをインストール。先に設定したlocal/pluginに入れることとする。
配布元から入手してコピーするだけ。
%wget -O postedat-0.3.tar.gz "http://www.hiraku.ro/?c=plugin;plugin=attach_download;p=postedat;file_name=postedat-0.3.tar.gz" %tar zxvf postedat-0.3.tar.gz %cd postedat-0.3 %cp -rp * ~/www/blog-4.0.1/local/plugin
Bundlerのインストールと実行
Bundlerは、プロジェクトに必要なRubyライブラリを整合性を保ってインストールする仕組み、とでも言えば良いだろうか。現在のtDiaryではこのBundlerを使ってライブラリ管理をしている。私は初めて使ったのだが非常に便利である。
既にRubyGemsを入れてあるのでインストールは簡単。
%gem install bundler
これだけで使えるようになる。
実行する前に、少し環境を整える。まずwww/blog-4.0.1に.bundleというディレクトリを作る。
%cd ~/www/blog-4.0.1 %mkdir .bundle
$HOME/blog-4.0.1/.bundle内にconfigという名前の設定ファイルを作成する。内容は以下の通り。
--- BUNDLE_PATH: ".bundle" BUNDLE_WITHOUT: coffee:memcached:redis:gfm:server:development:test BUNDLE_DISABLE_SHARED_GEMS: '1'
この状態で、$HOME/www/blog-4.0.1にてbundle installを実行する。
%cd ~/www/blog-4.0.1 %bundle install
これにより、$HOME/www/blog-4.0.1/.bundle/ruby/2.1.0/ に必要なライブラリがインストールされる。
これでOKのはず。さてブラウザからアクセスすると…
500 Internal Server Error cannot load such file -- bundler/setup (LoadError) /home/yoshimura-s/local/lib/ruby/site_ruby/2.1.0/rubygems/custom_require.rb:36:in `require' /home/yoshimura-s/local/lib/ruby/site_ruby/2.1.0/rubygems/custom_require.rb:36:in `require' /home/yoshimura-s/www/blog-4.0.1/tdiary/environment.rb:6:in `<top (required)>' /home/yoshimura-s/local/lib/ruby/site_ruby/2.1.0/rubygems/custom_require.rb:36:in `require' /home/yoshimura-s/local/lib/ruby/site_ruby/2.1.0/rubygems/custom_require.rb:36:in `require' /home/yoshimura-s/www/blog-4.0.1/tdiary.rb:26:in `<top (required)>' /home/yoshimura-s/local/lib/ruby/site_ruby/2.1.0/rubygems/custom_require.rb:36:in `require' /home/yoshimura-s/local/lib/ruby/site_ruby/2.1.0/rubygems/custom_require.rb:36:in `require' index.rb:18:in `<main>'
orz
Bundlerをコピー
上記エラーメッセージはbundler/setupがロードできないと言っている。一方Bundlerはインストール済み。
Bundlerがインストールされている$GEM_HOME/gemsがWebサーバにとってはロードパス外であることが問題であるようだ。今回の環境ではこれをどうにかするのは面倒になりそうに思えたので、安易にまるごとmisc/libにコピーしてしまうこととする。
%cp -rp $GEM_HOME/gems/bundler-1.5.3 ~/www/blog-4.0.1/misc/lib
これで改めてブラウザからアクセスすると…正常に表示された!!
従来環境との入れ替え
blog-4.0.1をblogとして公開する。
%cd ~/www %mv blog blog-3.1.0 %mv blog-4.0.1 blog
これによって晴れてhttps://www.yoshimura-s.jp/blogでアクセスできるようになる。
プラグインの設定などは以前からキャリーされるが、念のため設定画面で確認し、必要に応じて適宜修正しておく。
卓球好き、音楽好きです。飲み食い好きが高じて料理もします。2024年ソニーグループ(株)を退職し、同年より(株)fcuro勤務のAIエンジニアです。アルゼンチンタンゴ等の音楽について雑誌に文章を書いたりすることもあります。
なお、当然ながら本サイトでの私の発言は私個人の見解であります。所属組織の方針や見解とは関係ありません (一応お約束)。
商品へのリンクには以下のアフィリエイトが設定されている場合があります。
Amazon.co.jpアソシエイト
楽天アフィリエイト
“tDiary 4.0.1へのアップデート” に対して1件のコメントがあります。