Class: OopRailsServer::Gemfile
- Inherits:
-
Object
- Object
- OopRailsServer::Gemfile
- Defined in:
- lib/oop_rails_server/gemfile.rb
Overview
This is not intended to be anything even close to a real Gemfile parser – it is just enough to create/parse the simple Gemfiles we create or that are generated by ‘rails new’.
Instance Method Summary collapse
- #add_version_constraints!(gem_name, *version_specs) ⇒ Object
- #ensure_gem!(gem_name) ⇒ Object
-
#initialize(file_path) ⇒ Gemfile
constructor
A new instance of Gemfile.
- #set_specs!(gem_name, new_specs) ⇒ Object
- #write! ⇒ Object
Constructor Details
#initialize(file_path) ⇒ Gemfile
Returns a new instance of Gemfile.
5 6 7 |
# File 'lib/oop_rails_server/gemfile.rb', line 5 def initialize(file_path) @file_path = File.(file_path) end |
Instance Method Details
#add_version_constraints!(gem_name, *version_specs) ⇒ Object
9 10 11 12 13 14 15 |
# File 'lib/oop_rails_server/gemfile.rb', line 9 def add_version_constraints!(gem_name, *version_specs) additional_version_constraints = version_specs.map { |vs| ", '#{vs}'" }.join update_gemfile_line!(gem_name) do |gemdecl, specs| "#{gemdecl}#{additional_version_constraints}#{specs}" end end |
#ensure_gem!(gem_name) ⇒ Object
30 31 32 33 34 |
# File 'lib/oop_rails_server/gemfile.rb', line 30 def ensure_gem!(gem_name) update_gemfile_line!(gem_name) do |gemdecl, specs| "#{gemdecl}#{specs}" end end |
#set_specs!(gem_name, new_specs) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/oop_rails_server/gemfile.rb', line 17 def set_specs!(gem_name, new_specs) new_specs_line = new_specs.inspect if new_specs_line =~ /^\s*\{\s*(.*?)\s*\}\s*$/ new_specs_line = $1 else raise "Object doesn't seem to #inspect into a Hash string: #{new_specs.inspect}" end update_gemfile_line!(gem_name) do |gemdecl, specs| "#{gemdecl}, #{new_specs_line}" end end |
#write! ⇒ Object
36 37 38 39 40 |
# File 'lib/oop_rails_server/gemfile.rb', line 36 def write! File.open(file_path, "w") do |f| contents.each { |l| f.puts l } end end |