Module: MyGems

Defined in:
lib/my_gems.rb

Class Method Summary collapse

Class Method Details

.gem_with_longest_name(gems) ⇒ Object



32
33
34
# File 'lib/my_gems.rb', line 32

def self.gem_with_longest_name(gems)
  gems.max_by { |gem| gem.name.length }
end

.my_gemsObject



17
18
19
20
# File 'lib/my_gems.rb', line 17

def self.my_gems
  gems = Gems.gems.map { |gem| GemDTO.new(gem['name'], gem['downloads']) }
  gems.sort_by(&:downloads).reverse
end

.showObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/my_gems.rb', line 36

def self.show
  puts "⭐ Let's see if you're a star!⭐ "
  return unless valid_credentials?

  gems = my_gems
  return unless valid_gems?(gems)

  puts "📚 Here's your summary:"
  puts "\n"

  gems.each do |gem|
    name_output = gem.name.ljust(gem_with_longest_name(gems).name.length)
    puts "🛑 #{name_output} 🔝 #{gem.downloads} downloads"
  end
  puts "\n"

  puts "🎉 You're a star with #{gems.map(&:downloads).sum} total downloads 🎉"

  puts "\n"
  puts 'Bye! See you soon 👋👋👋'
end

.valid_credentials?Boolean

Returns:

  • (Boolean)


8
9
10
11
12
13
14
15
# File 'lib/my_gems.rb', line 8

def self.valid_credentials?
  Gems.gems
rescue StandardError
  puts '🥺 Opps, looks like we are missing your rubygems.org credentials 😭'
  puts "🥺 Let's authenticate 😭"

  puts "💻 Please run 'gem signin' and try again 💻"
end

.valid_gems?(gems) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
25
26
27
28
29
30
# File 'lib/my_gems.rb', line 22

def self.valid_gems?(gems)
  return gems unless gems.empty?

  puts '🥺 Opps, looks like you have no gems 😭'
  puts "🥺 Let's add some 💻"

  puts "💻 Please run 'gem build & gem push' and try again 💻"
  puts "💻 Maybe you can find some funny stuff here github.com/kammradt 💻"
end