| Class | Plugin |
| In: |
vendor/rails/railties/lib/commands/plugin.rb
|
| Parent: | Object |
| name | [R] | |
| uri | [R] |
# 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
# 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
# File vendor/rails/railties/lib/commands/plugin.rb, line 175
175: def git_url?
176: @uri =~ /^git:\/\// || @uri =~ /\.git$/
177: end
# 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
# 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
# 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
# File vendor/rails/railties/lib/commands/plugin.rb, line 171
171: def svn_url?
172: @uri =~ /svn(?:\+ssh)?:\/\/*/
173: end
# File vendor/rails/railties/lib/commands/plugin.rb, line 167
167: def to_s
168: "#{@name.ljust(30)}#{@uri}"
169: end
# 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