Class Plugin
In: vendor/rails/railties/lib/commands/plugin.rb
Parent: Object

Methods

find   git_url?   info   install   installed?   new   svn_url?   to_s   uninstall  

Attributes

name  [R] 
uri  [R] 

Public Class methods

[Source]

     # File vendor/rails/railties/lib/commands/plugin.rb, line 163
163:   def self.find(name)
164:     name =~ /\// ? new(name) : Repositories.instance.find_plugin(name)
165:   end

[Source]

     # File vendor/rails/railties/lib/commands/plugin.rb, line 158
158:   def initialize(uri, name=nil)
159:     @uri = uri
160:     guess_name(uri)
161:   end

Public Instance methods

[Source]

     # File vendor/rails/railties/lib/commands/plugin.rb, line 175
175:   def git_url?
176:     @uri =~ /^git:\/\// || @uri =~ /\.git$/
177:   end

[Source]

     # File vendor/rails/railties/lib/commands/plugin.rb, line 216
216:   def info
217:     tmp = "#{rails_env.root}/_tmp_about.yml"
218:     if svn_url?
219:       cmd = "svn export #{@uri} \"#{rails_env.root}/#{tmp}\""
220:       puts cmd if $verbose
221:       system(cmd)
222:     end
223:     open(svn_url? ? tmp : File.join(@uri, 'about.yml')) do |stream|
224:       stream.read
225:     end rescue "No about.yml found in #{uri}"
226:   ensure
227:     FileUtils.rm_rf tmp if svn_url?
228:   end

[Source]

     # File vendor/rails/railties/lib/commands/plugin.rb, line 184
184:   def install(method=nil, options = {})
185:     method ||= rails_env.best_install_method?
186:     if :http == method
187:       method = :export if svn_url?
188:       method = :git    if git_url?
189:     end
190: 
191:     uninstall if installed? and options[:force]
192: 
193:     unless installed?
194:       send("install_using_#{method}", options)
195:       run_install_hook
196:     else
197:       puts "already installed: #{name} (#{uri}).  pass --force to reinstall"
198:     end
199:   end

[Source]

     # File vendor/rails/railties/lib/commands/plugin.rb, line 179
179:   def installed?
180:     File.directory?("#{rails_env.root}/vendor/plugins/#{name}") \
181:       or rails_env.externals.detect{ |name, repo| self.uri == repo }
182:   end

[Source]

     # File vendor/rails/railties/lib/commands/plugin.rb, line 171
171:   def svn_url?
172:     @uri =~ /svn(?:\+ssh)?:\/\/*/
173:   end

[Source]

     # File vendor/rails/railties/lib/commands/plugin.rb, line 167
167:   def to_s
168:     "#{@name.ljust(30)}#{@uri}"
169:   end

[Source]

     # File vendor/rails/railties/lib/commands/plugin.rb, line 201
201:   def uninstall
202:     path = "#{rails_env.root}/vendor/plugins/#{name}"
203:     if File.directory?(path)
204:       puts "Removing 'vendor/plugins/#{name}'" if $verbose
205:       run_uninstall_hook
206:       rm_r path
207:     else
208:       puts "Plugin doesn't exist: #{path}"
209:     end
210:     # clean up svn:externals
211:     externals = rails_env.externals
212:     externals.reject!{|n,u| name == n or name == u}
213:     rails_env.externals = externals
214:   end

[Validate]