Class: EY::Serverside::DependencyManager::BundlerLock::Lockfile
- Defined in:
- lib/engineyard-serverside/dependency_manager/bundler_lock.rb
Instance Attribute Summary collapse
-
#bundler_version ⇒ Object
readonly
Returns the value of attribute bundler_version.
Instance Method Summary collapse
- #any_database_adapter? ⇒ Boolean
- #dependencies_section ⇒ Object
- #fetch_version(operator, version) ⇒ Object
- #has_ey_config? ⇒ Boolean
-
#initialize(lockfile_contents, default = EY::Serverside::DependencyManager::Bundler.default_version) ⇒ Lockfile
constructor
A new instance of Lockfile.
- #parse ⇒ Object
- #parse_from_dependencies ⇒ Object
- #parse_from_metadata ⇒ Object
- #rails_version ⇒ Object
- #scan_gem(gem, dep_section) ⇒ Object
- #slice_section(header) ⇒ Object
- #uses_sqlite3? ⇒ Boolean
Constructor Details
#initialize(lockfile_contents, default = EY::Serverside::DependencyManager::Bundler.default_version) ⇒ Lockfile
Returns a new instance of Lockfile.
64 65 66 67 68 69 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 64 def initialize(lockfile_contents, default = EY::Serverside::DependencyManager::Bundler.default_version) @contents = lockfile_contents @default = default @default_gem_version = Gem::Version.new(@default) parse end |
Instance Attribute Details
#bundler_version ⇒ Object (readonly)
Returns the value of attribute bundler_version.
62 63 64 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 62 def bundler_version @bundler_version end |
Instance Method Details
#any_database_adapter? ⇒ Boolean
84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 84 def any_database_adapter? any_ruby_adapter = %w[mysql2 mysql do_mysql pg do_postgres].any? do |type| @contents.index(/^\s+#{type}\s\([^\)]+\)$/) end any_jruby_adapter = %w[mysql postgresql postgres].any? do |type| @contents.index(/^\s+jdbc-#{type}\s\([^\)]+\)$/) || @contents.index(/^\s+activerecord-jdbc#{type}-adapter\s\([^\)]+\)$/) end any_ruby_adapter || any_jruby_adapter end |
#dependencies_section ⇒ Object
126 127 128 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 126 def dependencies_section @dependencies_section ||= slice_section('DEPENDENCIES') end |
#fetch_version(operator, version) ⇒ Object
142 143 144 145 146 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 142 def fetch_version(operator, version) return version || @default unless operator && version req = Gem::Requirement.new(["#{operator} #{version}"]) req.satisfied_by?(@default_gem_version) ? @default : version end |
#has_ey_config? ⇒ Boolean
71 72 73 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 71 def has_ey_config? !!@contents.index(/^\s+ey_config\s\([^\)]+\)$/) end |
#parse ⇒ Object
100 101 102 103 104 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 100 def parse || parse_from_dependencies || raise("Malformed or pre bundler-1.0.0 Gemfile.lock: #{@contents[0,50]}...") end |
#parse_from_dependencies ⇒ Object
130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 130 def parse_from_dependencies section = dependencies_section if section.empty? return nil end result = scan_gem('bundler', section) bundler_version = result ? result.last : nil version_qualifier = result ? result.first : nil @bundler_version = fetch_version(version_qualifier, bundler_version) end |
#parse_from_metadata ⇒ Object
115 116 117 118 119 120 121 122 123 124 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 115 def section = slice_section('METADATA') if section.empty? return nil end result = section.scan(/^\s*version:\s*(.*)$/).first @bundler_version = result ? result.first : @default end |
#rails_version ⇒ Object
75 76 77 78 79 80 81 82 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 75 def rails_version section = dependencies_section if section.empty? return nil end result = scan_gem('rails', section) result ? result.last : nil end |
#scan_gem(gem, dep_section) ⇒ Object
148 149 150 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 148 def scan_gem(gem, dep_section) dep_section.scan(/^\s*#{Regexp.escape(gem)}\s*\((>?=|~>)\s*([^,\)]+)/).first end |
#slice_section(header) ⇒ Object
106 107 108 109 110 111 112 113 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 106 def slice_section(header) if start = @contents.index(/^#{header}/) finish = @contents.index(/(^\S|\Z)/, start + header.length) @contents.slice(start..finish) else "" end end |
#uses_sqlite3? ⇒ Boolean
96 97 98 |
# File 'lib/engineyard-serverside/dependency_manager/bundler_lock.rb', line 96 def uses_sqlite3? !any_database_adapter? && @contents.index(/^\s+sqlite3\s\([^\)]+\)$/) end |