Class: Plugin
Attributes
| Name | Read/write? |
|---|---|
| name | R |
| uri | R |
Public Class Methods
find (name)
# File vendor/rails/railties/lib/commands/plugin.rb, line 153 153: def self.find(name) 154: name =~ /\// ? new(name) : Repositories.instance.find_plugin(name) 155: end
new (uri, name=nil)
# File vendor/rails/railties/lib/commands/plugin.rb, line 148 148: def initialize(uri, name=nil) 149: @uri = uri 150: guess_name(uri) 151: end
Public Instance Methods
git_url? ()
# File vendor/rails/railties/lib/commands/plugin.rb, line 165 165: def git_url? 166: @uri =~ /^git:\/\// || @url =~ /\.git$/ 167: end
info ()
# File vendor/rails/railties/lib/commands/plugin.rb, line 206 206: def info 207: tmp = "#{rails_env.root}/_tmp_about.yml" 208: if svn_url? 209: cmd = "svn export #{@uri} \"#{rails_env.root}/#{tmp}\"" 210: puts cmd if $verbose 211: system(cmd) 212: end 213: open(svn_url? ? tmp : File.join(@uri, 'about.yml')) do |stream| 214: stream.read 215: end rescue "No about.yml found in #{uri}" 216: ensure 217: FileUtils.rm_rf tmp if svn_url? 218: end
install (method=nil, options = {})
# File vendor/rails/railties/lib/commands/plugin.rb, line 174 174: def install(method=nil, options = {}) 175: method ||= rails_env.best_install_method? 176: if :http == method 177: method = :export if svn_url? 178: method = :clone if git_url? 179: end 180: 181: uninstall if installed? and options[:force] 182: 183: unless installed? 184: send("install_using_#{method}", options) 185: run_install_hook 186: else 187: puts "already installed: #{name} (#{uri}). pass --force to reinstall" 188: end 189: end
installed? ()
# File vendor/rails/railties/lib/commands/plugin.rb, line 169 169: def installed? 170: File.directory?("#{rails_env.root}/vendor/plugins/#{name}") \ 171: or rails_env.externals.detect{ |name, repo| self.uri == repo } 172: end
svn_url? ()
# File vendor/rails/railties/lib/commands/plugin.rb, line 161 161: def svn_url? 162: @uri =~ /svn(?:\+ssh)?:\/\/*/ 163: end
to_s ()
# File vendor/rails/railties/lib/commands/plugin.rb, line 157 157: def to_s 158: "#{@name.ljust(30)}#{@uri}" 159: end
uninstall ()
# File vendor/rails/railties/lib/commands/plugin.rb, line 191 191: def uninstall 192: path = "#{rails_env.root}/vendor/plugins/#{name}" 193: if File.directory?(path) 194: puts "Removing 'vendor/plugins/#{name}'" if $verbose 195: run_uninstall_hook 196: rm_r path 197: else 198: puts "Plugin doesn't exist: #{path}" 199: end 200: # clean up svn:externals 201: externals = rails_env.externals 202: externals.reject!{|n,u| name == n or name == u} 203: rails_env.externals = externals 204: end
Private Instance Methods
git_command (cmd, options = {})
# File vendor/rails/railties/lib/commands/plugin.rb, line 272 272: def git_command(cmd, options = {}) 273: root = rails_env.root 274: mkdir_p "#{root}/vendor/plugins" 275: base_cmd = "git #{cmd} --depth 1 #{uri} \"#{root}/vendor/plugins/#{name}\"" 276: puts base_cmd if $verbose 277: puts "removing: #{root}/vendor/plugins/#{name}/.git" 278: system(base_cmd) 279: rm_rf "#{root}/vendor/plugins/#{name}/.git" 280: end
guess_name (url)
# File vendor/rails/railties/lib/commands/plugin.rb, line 282 282: def guess_name(url) 283: @name = File.basename(url) 284: if @name == 'trunk' || @name.empty? 285: @name = File.basename(File.dirname(url)) 286: end 287: @name.gsub!(/\.git$/, '') if @name =~ /\.git$/ 288: end
install_using_checkout (options = {})
# File vendor/rails/railties/lib/commands/plugin.rb, line 236 236: def install_using_checkout(options = {}) 237: svn_command :checkout, options 238: end
install_using_clone (options = {})
# File vendor/rails/railties/lib/commands/plugin.rb, line 258 258: def install_using_clone(options = {}) 259: git_command :clone, options 260: end
install_using_export (options = {})
# File vendor/rails/railties/lib/commands/plugin.rb, line 232 232: def install_using_export(options = {}) 233: svn_command :export, options 234: end
install_using_externals (options = {})
# File vendor/rails/railties/lib/commands/plugin.rb, line 240 240: def install_using_externals(options = {}) 241: externals = rails_env.externals 242: externals.push([@name, uri]) 243: rails_env.externals = externals 244: install_using_checkout(options) 245: end
install_using_http (options = {})
# File vendor/rails/railties/lib/commands/plugin.rb, line 247 247: def install_using_http(options = {}) 248: root = rails_env.root 249: mkdir_p "#{root}/vendor/plugins/#{@name}" 250: Dir.chdir "#{root}/vendor/plugins/#{@name}" do 251: puts "fetching from '#{uri}'" if $verbose 252: fetcher = RecursiveHTTPFetcher.new(uri, -1) 253: fetcher.quiet = true if options[:quiet] 254: fetcher.fetch 255: end 256: end
rails_env ()
# File vendor/rails/railties/lib/commands/plugin.rb, line 290 290: def rails_env 291: @rails_env || RailsEnvironment.default 292: end
run_install_hook ()
# File vendor/rails/railties/lib/commands/plugin.rb, line 222 222: def run_install_hook 223: install_hook_file = "#{rails_env.root}/vendor/plugins/#{name}/install.rb" 224: load install_hook_file if File.exist? install_hook_file 225: end
run_uninstall_hook ()
# File vendor/rails/railties/lib/commands/plugin.rb, line 227 227: def run_uninstall_hook 228: uninstall_hook_file = "#{rails_env.root}/vendor/plugins/#{name}/uninstall.rb" 229: load uninstall_hook_file if File.exist? uninstall_hook_file 230: end
svn_command (cmd, options = {})
# File vendor/rails/railties/lib/commands/plugin.rb, line 262 262: def svn_command(cmd, options = {}) 263: root = rails_env.root 264: mkdir_p "#{root}/vendor/plugins" 265: base_cmd = "svn #{cmd} #{uri} \"#{root}/vendor/plugins/#{name}\"" 266: base_cmd += ' -q' if options[:quiet] and not $verbose 267: base_cmd += " -r #{options[:revision]}" if options[:revision] 268: puts base_cmd if $verbose 269: system(base_cmd) 270: end