Class: RailsEnvironment
- Inherits:
-
Object
- Object
- RailsEnvironment
- Defined in:
- lib/rails/commands/plugin.rb
Instance Attribute Summary collapse
-
#root ⇒ Object
readonly
Returns the value of attribute root.
Class Method Summary collapse
Instance Method Summary collapse
- #best_install_method ⇒ Object
- #externals ⇒ Object
- #externals=(items) ⇒ Object
-
#initialize(dir) ⇒ RailsEnvironment
constructor
A new instance of RailsEnvironment.
- #install(name_uri_or_plugin) ⇒ Object
- #use_checkout? ⇒ Boolean
- #use_externals? ⇒ Boolean
- #use_svn? ⇒ Boolean
Constructor Details
#initialize(dir) ⇒ RailsEnvironment
Returns a new instance of RailsEnvironment.
31 32 33 |
# File 'lib/rails/commands/plugin.rb', line 31 def initialize(dir) @root = dir end |
Instance Attribute Details
#root ⇒ Object (readonly)
Returns the value of attribute root.
29 30 31 |
# File 'lib/rails/commands/plugin.rb', line 29 def root @root end |
Class Method Details
.default ⇒ Object
43 44 45 |
# File 'lib/rails/commands/plugin.rb', line 43 def self.default @default ||= find end |
.default=(rails_env) ⇒ Object
47 48 49 |
# File 'lib/rails/commands/plugin.rb', line 47 def self.default=(rails_env) @default = rails_env end |
.find(dir = nil) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/rails/commands/plugin.rb', line 35 def self.find(dir=nil) dir ||= pwd while dir.length > 1 return new(dir) if File.exist?(File.join(dir, 'config', 'environment.rb')) dir = File.dirname(dir) end end |
Instance Method Details
#best_install_method ⇒ Object
85 86 87 88 89 90 91 92 |
# File 'lib/rails/commands/plugin.rb', line 85 def best_install_method return :http unless use_svn? case when use_externals? then :externals when use_checkout? then :checkout else :export end end |
#externals ⇒ Object
94 95 96 97 98 99 100 101 |
# File 'lib/rails/commands/plugin.rb', line 94 def externals return [] unless use_externals? ext = `svn propget svn:externals "#{root}/vendor/plugins"` lines = ext.respond_to?(:lines) ? ext.lines : ext lines.reject{ |line| line.strip == '' }.map do |line| line.strip.split(/\s+/, 2) end end |
#externals=(items) ⇒ Object
103 104 105 106 107 108 109 110 111 112 |
# File 'lib/rails/commands/plugin.rb', line 103 def externals=(items) unless items.is_a? String items = items.map{|name,uri| "#{name.ljust(29)} #{uri.chomp('/')}"}.join("\n") end Tempfile.open("svn-set-prop") do |file| file.write(items) file.flush system("svn propset -q svn:externals -F \"#{file.path}\" \"#{root}/vendor/plugins\"") end end |
#install(name_uri_or_plugin) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/rails/commands/plugin.rb', line 51 def install(name_uri_or_plugin) if name_uri_or_plugin.is_a? String if name_uri_or_plugin =~ /:\/\// plugin = Plugin.new(name_uri_or_plugin) else plugin = Plugins[name_uri_or_plugin] end else plugin = name_uri_or_plugin end unless plugin.nil? plugin.install else puts "Plugin not found: #{name_uri_or_plugin}" end end |
#use_checkout? ⇒ Boolean
78 79 80 81 82 83 |
# File 'lib/rails/commands/plugin.rb', line 78 def use_checkout? # this is a bit of a guess. we assume that if the rails environment # is under subversion then they probably want the plugin checked out # instead of exported. This can be overridden on the command line File.directory?("#{root}/.svn") end |
#use_externals? ⇒ Boolean
74 75 76 |
# File 'lib/rails/commands/plugin.rb', line 74 def use_externals? use_svn? && File.directory?("#{root}/vendor/plugins/.svn") end |
#use_svn? ⇒ Boolean
68 69 70 71 72 |
# File 'lib/rails/commands/plugin.rb', line 68 def use_svn? require 'active_support/core_ext/kernel' silence_stderr {`svn --version` rescue nil} !$?.nil? && $?.success? end |