読者です 読者をやめる 読者になる 読者になる

ウェブサービスを作っています。

プラグインの削除

Rails

より。

script/plugin remove -v plugin_name

でいけます。


まぁ、それはいいんですが、vendors/plugins 以下にプラグインって入るから、フォルダごと消せばいいんじゃないの? と思っていたりしました。
で、ソースを読んでみたところ、それではいけない場合もあるみたいですね。


script/plugin のメインソースは /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/commands/plugin.rb にありました。
その中の uninstall メソッド。

def uninstall
  path = "#{rails_env.root}/vendor/plugins/#{name}"
  if File.directory?(path)
    puts "Removing 'vendor/plugins/#{name}'" if $verbose
    run_uninstall_hook
    rm_r path
  else
    puts "Plugin doesn't exist: #{path}"
  end
  # clean up svn:externals
  externals = rails_env.externals
  externals.reject!{|n,u| name == n or name == u}
  rails_env.externals = externals
end

run_uninstall_hook メソッドを実行してから、フォルダを削除してます。


で、run_uninstall_hook メソッドは

def run_uninstall_hook
  uninstall_hook_file = "#{rails_env.root}/vendor/plugins/#{name}/uninstall.rb"
  load uninstall_hook_file if File.exist? uninstall_hook_file
end

となってます。


つまり、プラグインのフォルダ直下に uninstall.rb というファイルがない場合はフォルダ丸ごと削除でも OK だけど、uninstall.rb というファイルがある場合はやばいよー、ってことですか。


何か間違ってたら教えてください...