Module: ExtBundler
- Defined in:
- lib/ext_bundler.rb,
lib/ext_bundler/version.rb
Constant Summary collapse
- VERSION =
'2.1.0'
Instance Method Summary collapse
- #_gem_lock(name, *args) ⇒ Object
- #gem_dev(names, *args) ⇒ Object
- #gem_lock(name, *args) ⇒ Object
- #gem_lock_dev(name, *args) ⇒ Object
Instance Method Details
#_gem_lock(name, *args) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/ext_bundler.rb', line 37 def _gem_lock(name, *args) @gemfile_lock ||= File.read('Gemfile.lock') = args.last.is_a?(Hash) ? args.pop : {} type = .delete(:type)&.to_sym regexes = case type when :ref [ /^ revision: (\w+)(?:\n branch: \w+)?\n specs:\n #{name} \([\w\.]+\)$/m, /^ remote: .*\/#{name}.git\n revision: (\w+)(?:\n branch: \w+)?\n specs:\n/m ] else [/^ #{name} \(([\w\.]+)\)$/] end version = regexes.lazy.map{ |regex| @gemfile_lock.match(regex) }.reject(&:nil?).first[1] case type when :ref [:ref] = version when :tag [:tag] = "#{name}-v#{version}" else args.unshift(version) end args << [name, args] end |
#gem_dev(names, *args) ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/ext_bundler.rb', line 2 def gem_dev(names, *args) if names.is_a? Hash @@gem_dev = names self.class.send :define_singleton_method, :gem_dev do env = defined?(Rails.env) ? Rails.env.to_sym : false @@gem_dev.find_all do |_gem, | groups = [:groups] [:require] && (groups.empty? || groups.include?(env)) end.map(&:first).each{ |gem| require gem.to_s } end else if File.exist? '.gem-dev' @gem_dev_paths ||= File.readlines('.gem-dev').map(&:strip).compact path = @gem_dev_paths.lazy.map{ |root| File.("#{root}/#{names}") }.find{ |path| Dir.exist? path } end @@gem_dev[names.to_sym] ? gem(names, path: path, require: false) : gem(names, *args) = args.last.is_a?(Hash) ? args.last : {} groups = [:group] ? Array([:group]) : [:groups] @@gem_dev[names.to_sym] = { require: [:require].nil?, groups: (groups || @groups.dup).map(&:to_sym), } end end |
#gem_lock(name, *args) ⇒ Object
27 28 29 30 |
# File 'lib/ext_bundler.rb', line 27 def gem_lock(name, *args) name, args = _gem_lock(name, *args) gem name, *args end |
#gem_lock_dev(name, *args) ⇒ Object
32 33 34 35 |
# File 'lib/ext_bundler.rb', line 32 def gem_lock_dev(name, *args) name, args = _gem_lock(name, *args) gem_dev name, *args end |