Create  Edit  Diff  FrontPage  Index  Search  Changes  RSS  Login

clear.rb

tDiaryのキャッシュを消去する

clear.rb

tDiaryのキャッシュをクリアするCGIです。 index.rbやupdate.rbと同じディレクトリに置いて使用します。CGIなので、CGIとして実行可能なように実行権を付加する必要があります。

やっつけ仕事なんであまり期待しないでください。 update.rbからかなりコードをもらってるので、当然tDiaryのライセンスに従って再配布可能です。(配布したくなるものかどうかはわかりませんが...)

#! /usr/bin/env ruby
$KCODE= 'e'
BEGIN { $defout.binmode }

class String
   def to_output(mobile)
      if mobile
         self.to_sjis
      else
         self.to_euc
      end
   end
end

begin
   if FileTest::symlink?( __FILE__ ) then
      org_path = File::dirname( File::readlink( __FILE__ ) )
   else
      org_path = File::dirname( __FILE__ )
   end
   $:.unshift org_path
   require 'tdiary'

   @cgi = CGI::new
   conf = TDiary::Config::new
   tdiary = nil

# キャッシュを消去する。
#
   head = @cgi.header(
      'status' => '200 OK',
      'type' => 'text/html',
      'charset' => conf.charset( conf.mobile_agent? )
   )
   print head
   print "<html><head><title>cache cleard</title></head><body>"

   begin
      ['*.rb', '*.parser'].each do |m|
         Dir["#{conf.data_path}cache/#{m}"].each do |f|
            File::delete( f )
         end
      end
   rescue
      print "<p>エラーです。</p><p><a href=""./update.rb"">更新</a></p></body></html>".to_output( conf.mobile_agent? )
      exit
   end
   print "<p>キャッシュを消去しました。</p><p><a href=""./update.rb"">更新</a></p></body></html>".to_output( conf.mobile_agent? )
end

clear.rb (tDiary 2.x 対応版)

上の clear.rb を、tDiary 2.0.x/2.1.x で動作できるように手直ししたものです。[戻る] のリンクを付け足したりなど、少しだけ改良もしてあります。

#!/usr/bin/env ruby
#
# clear.rb
#
# You can redistribute it and/or modify it under GPL2.
#
# * modified for tDiary 2.0.X and 2.1.X (Mar 3, 2007)
#
$KCODE= 'e'
BEGIN { $defout.binmode }

begin
  if FileTest::symlink?( __FILE__ ) then
    org_path = File::dirname( File::readlink( __FILE__ ) )
  else
    org_path = File::dirname( __FILE__ )
  end
  $:.unshift org_path
  require 'tdiary'

  cgi = CGI::new
  if TDIARY_VERSION =~ %r[^2\.0] then
    conf = TDiary::Config::new
  else
    conf = TDiary::Config::new( cgi )
  end

  class << conf
    def charset
      mobile_agent? ? mobile_encoding : encoding
    end
    def to_out( str )
      mobile_agent? ? to_mobile( str ) : to_native( str )
    end
  end

  print cgi.header(
    'status' => '200 OK',
    'type' => 'text/html',
    'Pragma' => 'no-cache',
    'Cache-Control' => 'no-cache',
    'charset' => conf.charset
  )
  print conf.to_out(
    %Q[<html>
       <head><title>キャッシュのクリア</title></head>
       <body>
       <div align="right">
       <a href="#{conf.index}">最新</a>
       <a href="#{conf.update}">追記</a>
       <a href="javascript:history.back()">戻る</a>
       </div>\n].gsub( /^\s+/, '' )
  )

  begin
    ['*.rb', '*.parser'].each do |m|
      Dir["#{conf.data_path}cache/#{m}"].each do |f|
        File::delete( f )
      end
    end
  rescue
    print conf.to_out( %Q[<p>ファイル削除中のエラーです。</p>\n] )
    print %Q[<pre>#{CGI::escapeHTML($!.message)}</pre>\n]
  else
    print conf.to_out( %Q[<p>キャッシュを消去しました。</p>\n] )
  end
  print %Q[</body>\n</html>\n]
end

zz_clear.rb

clear.rbを呼び出すメニューをnavi_adminに追加するプラグインです。

alias navi_admin_zz_clear navi_admin

def navi_admin
  str = navi_admin_zz_clear
  if /^(latest|month|day|comment|conf|nyear|category.*)$/ !~ @mode then
    str << %Q[ <span class="adminmenu"><a href="./clear.rb">キャッシュクリア</a></span>\n]
  end
  str
end

これをzz_clear.rbの名前でpluginディレクトリにおいてください。 -- woods org?

Last modified:2013/12/07 08:09:51
Keyword(s):
References:[PluginList]