Class: EY::Serverside::DependencyManager::Bundler::Lockfile
- Inherits:
-
Object
- Object
- EY::Serverside::DependencyManager::Bundler::Lockfile
- Defined in:
- lib/engineyard-serverside/dependency_manager/bundler.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.
145 146 147 148 149 150 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 145 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.
143 144 145 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 143 def bundler_version @bundler_version end |
Instance Method Details
#any_database_adapter? ⇒ Boolean
165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 165 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
207 208 209 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 207 def dependencies_section @dependencies_section ||= slice_section('DEPENDENCIES') end |
#fetch_version(operator, version) ⇒ Object
223 224 225 226 227 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 223 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
152 153 154 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 152 def has_ey_config? !!@contents.index(/^\s+ey_config\s\([^\)]+\)$/) end |
#parse ⇒ Object
181 182 183 184 185 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 181 def parse || parse_from_dependencies || raise("Malformed or pre bundler-1.0.0 Gemfile.lock: #{@contents[0,50]}...") end |
#parse_from_dependencies ⇒ Object
211 212 213 214 215 216 217 218 219 220 221 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 211 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
196 197 198 199 200 201 202 203 204 205 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 196 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
156 157 158 159 160 161 162 163 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 156 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
229 230 231 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 229 def scan_gem(gem, dep_section) dep_section.scan(/^\s*#{Regexp.escape(gem)}\s*\((>?=|~>)\s*([^,\)]+)/).first end |
#slice_section(header) ⇒ Object
187 188 189 190 191 192 193 194 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 187 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
177 178 179 |
# File 'lib/engineyard-serverside/dependency_manager/bundler.rb', line 177 def uses_sqlite3? !any_database_adapter? && @contents.index(/^\s+sqlite3\s\([^\)]+\)$/) end |