Class: Ji2p::Package::Gemset
Instance Attribute Summary collapse
-
#gems ⇒ Object
Returns the value of attribute gems.
-
#gemspec ⇒ Object
Returns the value of attribute gemspec.
-
#sources ⇒ Object
Returns the value of attribute sources.
Instance Method Summary collapse
- #add_gem(_gem) ⇒ Object
-
#copy ⇒ Object
deep clone self.
-
#find_gem(name) ⇒ Gem
Found gem or nil if not found.
-
#initialize ⇒ Gemset
constructor
A new instance of Gemset.
-
#overwrite_gem(_gem) ⇒ Object
update existing or add new.
-
#remove_gem(name) ⇒ Gem
Removed gem or nil if not found.
- #to_s ⇒ Object
-
#update_gem(_gem) ⇒ Object
update existing or add new.
Constructor Details
#initialize ⇒ Gemset
Returns a new instance of Gemset.
94 95 96 97 98 99 |
# File 'lib/ji2p/package/gemfile.rb', line 94 def initialize @sources = [] # list of urls @gems = [] # list of Gem class @gems_by_name = {} # hash of name => Gem @gemspec = {} # gemspec is a options hash end |
Instance Attribute Details
#gems ⇒ Object
Returns the value of attribute gems.
92 93 94 |
# File 'lib/ji2p/package/gemfile.rb', line 92 def gems @gems end |
#gemspec ⇒ Object
Returns the value of attribute gemspec.
92 93 94 |
# File 'lib/ji2p/package/gemfile.rb', line 92 def gemspec @gemspec end |
#sources ⇒ Object
Returns the value of attribute sources.
92 93 94 |
# File 'lib/ji2p/package/gemfile.rb', line 92 def sources @sources end |
Instance Method Details
#add_gem(_gem) ⇒ Object
111 112 113 114 115 |
# File 'lib/ji2p/package/gemfile.rb', line 111 def add_gem(_gem) raise(GemfileError, "duplicate gem #{_gem.name}") if find_gem(_gem.name) @gems << _gem @gems_by_name[_gem.name.downcase] = _gem end |
#copy ⇒ Object
deep clone self
149 150 151 |
# File 'lib/ji2p/package/gemfile.rb', line 149 def copy Marshal.load(Marshal.dump(self)) end |
#find_gem(name) ⇒ Gem
Returns found gem or nil if not found.
106 107 108 |
# File 'lib/ji2p/package/gemfile.rb', line 106 def find_gem(name) @gems_by_name[name.downcase] end |
#overwrite_gem(_gem) ⇒ Object
update existing or add new
131 132 133 134 135 136 137 138 |
# File 'lib/ji2p/package/gemfile.rb', line 131 def overwrite_gem(_gem) if old = find_gem(_gem.name) @gems[@gems.index(old)] = _gem else @gems << _gem end @gems_by_name[_gem.name.downcase] = _gem end |
#remove_gem(name) ⇒ Gem
Returns removed gem or nil if not found.
141 142 143 144 145 146 |
# File 'lib/ji2p/package/gemfile.rb', line 141 def remove_gem(name) if _gem = @gems_by_name.delete(name.downcase) @gems.delete_at(@gems.index(_gem)) end _gem end |
#to_s ⇒ Object
101 102 103 |
# File 'lib/ji2p/package/gemfile.rb', line 101 def to_s [sources_to_s, gemspec_to_s, gems_to_s].select{|s| !s.empty?}.join("\n") + "\n" end |
#update_gem(_gem) ⇒ Object
update existing or add new
118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/ji2p/package/gemfile.rb', line 118 def update_gem(_gem) if old = find_gem(_gem.name) # always overwrite requirements if specified old.requirements = _gem.requirements unless no_constrains?(_gem.requirements) # but merge options old. = old..merge(_gem.) else @gems << _gem @gems_by_name[_gem.name.downcase] = _gem end end |