quick_mem 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: be68ab4970079e3bb24cf02b7fc0cdde50f44868
4
- data.tar.gz: 7e974ebece2cec13697de929296d62f68e95c36e
3
+ metadata.gz: 38b11f923b2dd55da18d9352b115c3c2f74fd8ed
4
+ data.tar.gz: e4b0602e20304f1e11812479cd4281834b85098d
5
5
  SHA512:
6
- metadata.gz: 52bc3dea00c9a32564b20badf1a0a30a8e1691d3474537712d88a541ad645228cc10c80e61f47e5ec2712713824a67605afdd4dac84d870e0bb7ad47ad8aada5
7
- data.tar.gz: 6455549d8a7d4f9b0ddda54f3a35d0192494126585af23a117a1cd6c00afa7759b22e5aee07ccb317054712bca345046cd66d852e192e7453a49615b37d0ee2e
6
+ metadata.gz: b6fec4d70b0c0c82efcc9818e295482d0909f6506aba31c9276fa22069ab5e2c01303979bd08737ae66765f2e11fa0991b78720780fa75b07394243c5fa4430d
7
+ data.tar.gz: d07737fe03b174664c213fd6980c30e92c8162ee0ef1f57a369cd5d6d9f2791f65a4254c28d2d2dc543256246a8d797069038f5c512f4cf28c6bdbe2830be2d0
data/.rubocop.yml ADDED
@@ -0,0 +1,26 @@
1
+ # This configuration was generated by `rubocop --auto-gen-config`
2
+ # on 2015-03-30 13:26:25 +0530 using RuboCop version 0.29.1.
3
+ # The point is for the user to remove these configuration records
4
+ # one by one as the offenses are removed from the code base.
5
+ # Note that changes in the inspected code, or installation of new
6
+ # versions of RuboCop, may require this file to be generated again.
7
+
8
+ AllCops:
9
+ Excludes:
10
+ - quick_mem.gemspec
11
+ - pkg/**
12
+
13
+ Style/Documentation:
14
+ Enabled: false
15
+
16
+ Style/EmptyLinesAroundClassBody:
17
+ Enabled: false
18
+
19
+ Style/NumericLiterals:
20
+ MinDigits: 10
21
+
22
+ Metrics/LineLength:
23
+ Max: 100
24
+
25
+ Metrics/AbcSize:
26
+ Max: 20
data/README.md CHANGED
@@ -27,7 +27,17 @@ Or install it yourself as:
27
27
  ```ruby
28
28
  require 'quick_mem'
29
29
 
30
- QuickMem::QuickMemory.show_config
30
+ # show memory stats (more-or-less raw form)
31
+ QuickMem::QuickMemory.show_stats
32
+
33
+ # show memory summary (heap total,used,free mem in MB and percentage)
34
+ QuickMem::QuickMemory.show_summary
35
+
36
+ # view top 50 objects by descending order of size
37
+ QuickMem::QuickMemory.view_objects_by_size
38
+
39
+ # view top 50 objects by descending order of instance count
40
+ QuickMem::QuickMemory.view_objects_by_count
31
41
  ```
32
42
 
33
43
  ## Contributing
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
2
 
3
3
  Dir.glob('tasks/**/*.rake').each(&method(:import))
4
4
 
5
- task :default => :spec
5
+ task default: %w(spec quality)
@@ -0,0 +1,31 @@
1
+ require 'objspace'
2
+
3
+ module QuickMem
4
+ class Dumps
5
+
6
+ def self.top_allocated_objects
7
+ objects_by_size = Hash.new { 0 }
8
+ ObjectSpace.each_object do |obj|
9
+ objects_by_size[obj.class] += ObjectSpace.memsize_of(obj)
10
+ end
11
+ get_top_50(objects_by_size)
12
+ end
13
+
14
+ def self.count_top_allocated_objects
15
+ objects_by_count = Hash.new { 0 }
16
+ ObjectSpace.each_object do |obj|
17
+ objects_by_count[obj.class] += 1
18
+ end
19
+ get_top_50(objects_by_count)
20
+ end
21
+
22
+ class << self
23
+ private
24
+
25
+ def get_top_50(a_hash)
26
+ a_hash.sort_by(&:last).reverse![0..49].to_h
27
+ end
28
+ end
29
+
30
+ end
31
+ end
@@ -2,11 +2,11 @@ module QuickMem
2
2
  class GCConstants
3
3
 
4
4
  def self.slot_size
5
- @@rvalue_size ||= GC::INTERNAL_CONSTANTS[:RVALUE_SIZE]
5
+ @rvalue_size ||= GC::INTERNAL_CONSTANTS[:RVALUE_SIZE]
6
6
  end
7
7
 
8
8
  def self.slots_per_page
9
- @@heap_obj_limit ||= GC::INTERNAL_CONSTANTS[:HEAP_OBJ_LIMIT]
9
+ @heap_obj_limit ||= GC::INTERNAL_CONSTANTS[:HEAP_OBJ_LIMIT]
10
10
  end
11
11
 
12
12
  end
@@ -0,0 +1,52 @@
1
+ require 'quick_mem/gc_constants'
2
+
3
+ module QuickMem
4
+ class MemoryStats
5
+
6
+ def self.show
7
+ raw_data = GC.stat
8
+ stats = {}
9
+ gc_counts(stats, raw_data)
10
+ heap_statistics(stats, raw_data)
11
+ stats
12
+ end
13
+
14
+ class << self
15
+ private
16
+
17
+ def heap_statistics(stats, raw_data)
18
+ stats[:heap_reserved] = raw_data[:heap_length] * page_size
19
+ stats[:heap_allocated] = total_slots(raw_data) * slot_size
20
+ stats[:heap_used] = used_slots(raw_data) * slot_size
21
+ stats[:heap_free] = raw_data[:heap_free_slot] * slot_size
22
+ end
23
+
24
+ def gc_counts(stats, raw_data)
25
+ stats[:major_gc_count] = raw_data[:major_gc_count]
26
+ stats[:minor_gc_count] = raw_data[:minor_gc_count]
27
+ stats[:total_gc_count] = raw_data[:count]
28
+ end
29
+
30
+ def total_slots(raw_data)
31
+ used_slots(raw_data) + raw_data[:heap_free_slot]
32
+ end
33
+
34
+ def used_slots(raw_data)
35
+ raw_data[:heap_live_slot] + raw_data[:heap_final_slot]
36
+ end
37
+
38
+ def page_size
39
+ slot_size * slots_per_page
40
+ end
41
+
42
+ def slot_size
43
+ QuickMem::GCConstants.slot_size
44
+ end
45
+
46
+ def slots_per_page
47
+ QuickMem::GCConstants.slots_per_page
48
+ end
49
+ end
50
+
51
+ end
52
+ end
@@ -0,0 +1,48 @@
1
+ require 'quick_mem/gc_constants'
2
+
3
+ module QuickMem
4
+ class Summary
5
+
6
+ NUMBER_FORMAT = '%.2f'
7
+
8
+ def initialize(raw_data)
9
+ @summary = {}
10
+ @stats = raw_data
11
+ calculate_heap_summary
12
+ calculate_percentage_used
13
+ end
14
+
15
+ def show
16
+ summary
17
+ end
18
+
19
+ private
20
+
21
+ def calculate_heap_summary
22
+ summary[:heap_reserved] = pretty_bytes_to_megabytes(stats[:heap_reserved])
23
+ summary[:heap_allocated] = pretty_bytes_to_megabytes(stats[:heap_allocated])
24
+ summary[:heap_used] = pretty_bytes_to_megabytes(stats[:heap_used])
25
+ summary[:heap_free] = pretty_bytes_to_megabytes(stats[:heap_free])
26
+ end
27
+
28
+ def calculate_percentage_used
29
+ summary[:heap_used_pct] = percentage_of(stats[:heap_used], stats[:heap_allocated])
30
+ summary[:heap_free_pct] = percentage_of(stats[:heap_free], stats[:heap_allocated])
31
+ end
32
+
33
+ def pretty_bytes_to_megabytes(bytes)
34
+ NUMBER_FORMAT % bytes_to_megabytes(bytes)
35
+ end
36
+
37
+ def percentage_of(size, total)
38
+ NUMBER_FORMAT % ((bytes_to_megabytes(size) / bytes_to_megabytes(total)) * 100.00)
39
+ end
40
+
41
+ def bytes_to_megabytes(bytes)
42
+ bytes / (1024.0 * 1024.0)
43
+ end
44
+
45
+ attr_reader :summary, :stats
46
+
47
+ end
48
+ end
@@ -1,3 +1,3 @@
1
1
  module QuickMem
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
data/lib/quick_mem.rb CHANGED
@@ -1,5 +1,6 @@
1
- require 'quick_mem/version'
2
- require 'quick_mem/gc_constants'
1
+ require 'quick_mem/memory_stats'
2
+ require 'quick_mem/summary'
3
+ require 'quick_mem/dumps'
3
4
 
4
5
  module QuickMem
5
6
  class QuickMemory
@@ -8,33 +9,30 @@ module QuickMem
8
9
  QuickMem::VERSION
9
10
  end
10
11
 
11
- def self.show_config
12
- gc_stat = GC.stat
13
- config = Hash.new
14
- gc_counts(config, gc_stat)
15
- heap_statistics(config, gc_stat)
16
- config
12
+ def self.show_stats
13
+ add_meta_info(QuickMem::MemoryStats.show)
17
14
  end
18
15
 
19
- private
20
-
21
- def self.heap_statistics(config, gc_stat)
22
- config[:heap_allocated] = gc_stat[:heap_length] * slot_size * slots_per_page
23
- config[:heap_used] = gc_stat[:heap_eden_page_length] * slot_size * slots_per_page
16
+ def self.show_summary
17
+ add_meta_info(QuickMem::Summary.new(show_stats).show)
24
18
  end
25
19
 
26
- def self.gc_counts(config, gc_stat)
27
- config[:major_gc_count] = gc_stat[:major_gc_count]
28
- config[:minor_gc_count] = gc_stat[:minor_gc_count]
29
- config[:total_gc_count] = gc_stat[:count]
20
+ def self.view_objects_by_size
21
+ add_meta_info(objects_by_size: QuickMem::Dumps.top_allocated_objects)
30
22
  end
31
23
 
32
- def self.slot_size
33
- QuickMem::GCConstants.slot_size
24
+ def self.view_objects_by_count
25
+ add_meta_info(objects_by_count: QuickMem::Dumps.count_top_allocated_objects)
34
26
  end
35
27
 
36
- def self.slots_per_page
37
- QuickMem::GCConstants.slots_per_page
28
+ class << self
29
+ private
30
+
31
+ def add_meta_info(a_hash)
32
+ a_hash[:version] = version
33
+ a_hash[:timestamp] = Time.now.strftime('%d/%m/%Y %H:%M:%S')
34
+ a_hash
35
+ end
38
36
  end
39
37
 
40
38
  end
data/quick_mem.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = QuickMem::VERSION
9
9
  spec.authors = ["Rajiv Nair"]
10
10
  spec.email = ["rajivrnair@gmail.com"]
11
- spec.summary = %q{Quickly look at GC stats}
12
- spec.description = %q{A simple gem to dump memory stats}
11
+ spec.summary = 'Quickly look at GC stats'
12
+ spec.description = 'A simple gem to dump memory stats'
13
13
  spec.homepage = "https://github.com/rajivrnair/quick_mem"
14
14
  spec.license = "MIT"
15
15
  spec.post_install_message = "Live long and prosper!" # \\//,
@@ -23,6 +23,8 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency 'bundler', '~> 1.7'
24
24
  spec.add_development_dependency 'rake', '~> 10.0'
25
25
  spec.add_development_dependency 'rspec', '~>3.1.0'
26
+ spec.add_development_dependency 'rubocop', '~>0.29.1'
27
+ spec.add_development_dependency 'english', '~> 0.6.3'
26
28
  end
27
29
 
28
30
  # group :test do
data/quick_mem.txt CHANGED
@@ -1,7 +1,3 @@
1
- Total Heap size/ Heap size used / % used / % free
2
- Total number of objects
3
- Total Allocated slots / slots used
4
-
5
1
  RUBY_GC_MALLOC_LIMIT
6
2
  RUBY_GC_HEAP_INIT_SLOTS
7
3
  RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR
@@ -19,11 +15,12 @@ ObjectSpace.allocated_objects
19
15
 
20
16
  slot_size: GC::INTERNAL_CONSTANTS[:RVALUE_SIZE]
21
17
  slots_per_page: GC::INTERNAL_CONSTANTS[:HEAP_OBJ_LIMIT]
18
+ page_size = slots_per_page * slot_size
22
19
 
23
20
  GC.stat[:heap_length] - total pages allocated.
24
21
  GC.stat[:heap_used] - total pages used.
25
22
  GC.stat[:heap_increment]
26
23
 
27
- allocated_memory: heap_length * slots_per_page * slot_size
28
- used_memory: heap_eden_page_length * slots_per_page * slot_size
29
- live_objects: heap_live_slot
24
+ todo:
25
+ - stats snapshots to text files.
26
+ - graph to plot memory usage.
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+ require 'quick_mem/dumps'
3
+
4
+ module QuickMem
5
+ describe Dumps do
6
+ describe '#top_allocated_objects' do
7
+ subject { Dumps.top_allocated_objects }
8
+
9
+ it 'returns a hash' do
10
+ expect(subject).to be_a Hash
11
+ end
12
+
13
+ it 'has no more than fifty entries' do
14
+ expect(subject.size).to be <= 50
15
+ end
16
+
17
+ it 'is sorted in descending order of size' do
18
+ # Can't think of an easier way to do this :(
19
+ expected_result = subject.values.sort.reverse
20
+ expect(subject.values).to eql(expected_result)
21
+ end
22
+ end
23
+
24
+ describe '#count_top_allocated_objects' do
25
+ subject { Dumps.count_top_allocated_objects }
26
+
27
+ it 'returns a hash' do
28
+ expect(subject).to be_a Hash
29
+ end
30
+
31
+ it 'has no more than fifty entries' do
32
+ expect(subject.size).to be <= 50
33
+ end
34
+
35
+ it 'is sorted in descending order of object count' do
36
+ # Can't think of an easier way to do this :(
37
+ expected_result = subject.values.sort.reverse
38
+ expect(subject.values).to eql(expected_result)
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,55 +1,50 @@
1
1
  require 'spec_helper'
2
2
 
3
- require 'quick_mem'
4
-
5
3
  module QuickMem
6
- describe QuickMemory do
7
-
8
- describe '#version' do
9
- subject { QuickMemory.version }
10
-
11
- it 'outputs the correct version number' do
12
- expect(subject).to eq '0.0.3'
13
- end
14
- end
15
-
16
- describe '#show_config' do
17
- subject { QuickMemory.show_config }
18
- let(:mem_options) {
4
+ describe MemoryStats do
5
+ describe '#show' do
6
+ let(:mem_stats) do
19
7
  {
20
8
  count: 22,
21
- heap_eden_page_length: 226,
22
- heap_final_slot: 0,
23
- heap_free_slot: 829,
24
- heap_increment: 0,
9
+ major_gc_count: 4,
10
+ minor_gc_count: 18,
11
+
25
12
  heap_length: 237,
13
+ heap_used: 226,
14
+ heap_eden_page_length: 220,
15
+ heap_tomb_page_length: 6,
16
+
17
+ heap_final_slot: 21,
18
+ heap_free_slot: 829,
26
19
  heap_live_slot: 91292,
27
20
  heap_swept_slot: 22651,
28
- heap_tomb_page_length: 0,
29
- heap_used: 226,
30
- major_gc_count: 4,
21
+ heap_increment: 0,
22
+
31
23
  malloc_increase: 545344,
32
24
  malloc_limit: 16777216,
33
- minor_gc_count: 18,
34
- old_object: 54719,
35
- old_object_limit: 56776,
36
25
  oldmalloc_increase: 6406440,
37
26
  oldmalloc_limit: 16777216,
27
+
28
+ old_object: 54719,
29
+ old_object_limit: 56776,
30
+
38
31
  remembered_shady_object: 811,
39
32
  remembered_shady_object_limit: 758,
33
+
40
34
  total_allocated_object: 524356,
41
35
  total_freed_object: 433064
42
36
  }
43
- }
37
+ end
44
38
 
45
39
  before do
46
40
  # assuming default values for
47
41
  # GC::INTERNAL_CONSTANTS[:RVALUE_SIZE] = 40
48
42
  # GC::INTERNAL_CONSTANTS[:HEAP_OBJ_LIMIT] = 408
49
-
50
- allow(GC).to receive(:stat) { mem_options }
43
+ allow(GC).to receive(:stat) { mem_stats }
51
44
  end
52
45
 
46
+ subject { MemoryStats.show }
47
+
53
48
  it 'spits out the number of major GCs' do
54
49
  expect(subject[:major_gc_count]).to eq(4)
55
50
  end
@@ -62,15 +57,21 @@ module QuickMem
62
57
  expect(subject[:total_gc_count]).to eq(22)
63
58
  end
64
59
 
65
- it 'spits out the total heap allocated in bytes' do
66
- expect(subject[:heap_allocated]).to eq(3867840)
60
+ it 'spits out the max reserved heap in bytes' do
61
+ expect(subject[:heap_reserved]).to eq(3867840)
67
62
  end
68
63
 
69
- it 'spits out the heap used in bytes' do
70
- expect(subject[:heap_used]).to eq(3688320)
64
+ it 'spits out the allocated heap in bytes' do
65
+ expect(subject[:heap_allocated]).to eq(3685680)
71
66
  end
72
67
 
73
- end
68
+ it 'spits out the heap currently used in bytes' do
69
+ expect(subject[:heap_used]).to eq(3652520)
70
+ end
74
71
 
72
+ it 'spits out the heap free in bytes' do
73
+ expect(subject[:heap_free]).to eq(33160)
74
+ end
75
+ end
75
76
  end
76
77
  end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+ require 'quick_mem/summary'
3
+
4
+ module QuickMem
5
+ describe Summary do
6
+ describe '#show' do
7
+ let(:mem_stats) do
8
+ {
9
+ heap_reserved: 204000000,
10
+ heap_allocated: 40800000,
11
+ heap_used: 32640000,
12
+ heap_free: 8160000
13
+ }
14
+ end
15
+ subject { Summary.new(mem_stats).show }
16
+
17
+ it 'returns a summary of the memory usage' do
18
+ expect(subject).to be_a Hash
19
+ expect(subject).not_to be_empty
20
+ end
21
+
22
+ it 'displays the total memory reserved by the rvm in mb' do
23
+ expect(subject[:heap_reserved]).to eql('194.55')
24
+ end
25
+
26
+ it 'displays the memory currently allocated in mb' do
27
+ expect(subject[:heap_allocated]).to eql('38.91')
28
+ end
29
+
30
+ it 'displays the memory currently used in mb' do
31
+ expect(subject[:heap_used]).to eql('31.13')
32
+ end
33
+
34
+ it 'displays the memory currently used as a percentage of allocated memory' do
35
+ expect(subject[:heap_used_pct]).to eql('80.00')
36
+ end
37
+
38
+ it 'displays the memory currently free in mb' do
39
+ expect(subject[:heap_free]).to eql('7.78')
40
+ end
41
+
42
+ it 'displays the memory currently free as a percentage of allocated memory' do
43
+ expect(subject[:heap_free_pct]).to eql('20.00')
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,144 @@
1
+ require 'spec_helper'
2
+
3
+ require 'quick_mem'
4
+
5
+ module QuickMem
6
+ describe QuickMemory do
7
+ let(:version) { '0.0.4' }
8
+ let(:time_now) { double('time') }
9
+ let(:timestamp) { '30/03/2015 23:28:47' }
10
+
11
+ before do
12
+ allow(Time).to receive(:now) { time_now }
13
+ allow(time_now).to receive(:strftime) { timestamp }
14
+ end
15
+
16
+ describe '#version' do
17
+ subject { QuickMemory.version }
18
+
19
+ it 'outputs the correct version number' do
20
+ expect(subject).to eq version
21
+ end
22
+ end
23
+
24
+ describe '#show_stats' do
25
+ subject { QuickMemory.show_stats }
26
+
27
+ before do
28
+ allow(QuickMem::MemoryStats).to receive(:show) do
29
+ { total_gc_count: 20 }
30
+ end
31
+ end
32
+
33
+ it 'returns a hash' do
34
+ expect(subject).to be_a Hash
35
+ end
36
+
37
+ it 'is not empty' do
38
+ expect(subject).not_to be_empty
39
+ end
40
+
41
+ it 'contains statistics about the current memory usage' do
42
+ expect(subject[:total_gc_count]).to eql(20)
43
+ end
44
+
45
+ it 'contains the version' do
46
+ expect(subject[:version]).to eq version
47
+ end
48
+
49
+ it 'contains the timestamp' do
50
+ expect(subject[:timestamp]).to eq timestamp
51
+ end
52
+ end
53
+
54
+ describe '#show_summary' do
55
+ subject { QuickMemory.show_summary }
56
+ let(:summary) { double('summary') }
57
+
58
+ before do
59
+ allow(QuickMem::Summary).to receive(:new) { summary }
60
+ allow(summary).to receive(:show) { { heap_used_pct: '50.55' } }
61
+ end
62
+
63
+ it 'returns a hash' do
64
+ expect(subject).to be_a Hash
65
+ end
66
+
67
+ it 'is not empty' do
68
+ expect(subject).not_to be_empty
69
+ end
70
+
71
+ it 'contains a summary about the current memory usage' do
72
+ expect(subject[:heap_used_pct]).to eql('50.55')
73
+ end
74
+
75
+ it 'contains the version' do
76
+ expect(subject[:version]).to eq version
77
+ end
78
+
79
+ it 'contains the timestamp' do
80
+ expect(subject[:timestamp]).to eq timestamp
81
+ end
82
+ end
83
+
84
+ describe '#view_objects_by_size' do
85
+ subject { QuickMemory.view_objects_by_size }
86
+
87
+ before do
88
+ allow(QuickMem::Dumps).to receive(:top_allocated_objects) do
89
+ { Thread: 1049960, String: 2688465, Class: 976088 }
90
+ end
91
+ end
92
+
93
+ it 'returns a hash' do
94
+ expect(subject).to be_a Hash
95
+ end
96
+
97
+ it 'is not empty' do
98
+ expect(subject).not_to be_empty
99
+ end
100
+
101
+ it 'contains a map of classes to total size of all instances' do
102
+ expect(subject[:objects_by_size]).to eql(String: 2688465, Thread: 1049960, Class: 976088)
103
+ end
104
+
105
+ it 'contains the version' do
106
+ expect(subject[:version]).to eq version
107
+ end
108
+
109
+ it 'contains the timestamp' do
110
+ expect(subject[:timestamp]).to eq timestamp
111
+ end
112
+ end
113
+
114
+ describe '#view_objects_by_count' do
115
+ subject { QuickMemory.view_objects_by_count }
116
+
117
+ before do
118
+ allow(QuickMem::Dumps).to receive(:count_top_allocated_objects) do
119
+ { Thread: 104, String: 268, Class: 97 }
120
+ end
121
+ end
122
+
123
+ it 'returns a hash' do
124
+ expect(subject).to be_a Hash
125
+ end
126
+
127
+ it 'is not empty' do
128
+ expect(subject).not_to be_empty
129
+ end
130
+
131
+ it 'contains a map of classes to instance count' do
132
+ expect(subject[:objects_by_count]).to eql(String: 268, Thread: 104, Class: 97)
133
+ end
134
+
135
+ it 'contains the version' do
136
+ expect(subject[:version]).to eq version
137
+ end
138
+
139
+ it 'contains the timestamp' do
140
+ expect(subject[:timestamp]).to eq timestamp
141
+ end
142
+ end
143
+ end
144
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'bundler/setup'
2
+ require 'english'
2
3
 
3
- $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
4
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
4
5
 
5
6
  Bundler.require :default, :test
@@ -0,0 +1,7 @@
1
+ require 'rubocop'
2
+ require 'rubocop/rake_task'
3
+
4
+ desc 'Run RuboCop - config in .rubocop.yml'
5
+ RuboCop::RakeTask.new(:rubocop)
6
+
7
+ task quality: %w(rubocop)
data/tasks/rspec.rake CHANGED
@@ -1,3 +1,3 @@
1
1
  require 'rspec/core/rake_task'
2
2
 
3
- RSpec::Core::RakeTask.new(:spec)
3
+ RSpec::Core::RakeTask.new(:spec)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quick_mem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rajiv Nair
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 3.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.29.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.29.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: english
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.6.3
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.6.3
55
83
  description: A simple gem to dump memory stats
56
84
  email:
57
85
  - rajivrnair@gmail.com
@@ -61,19 +89,27 @@ extra_rdoc_files: []
61
89
  files:
62
90
  - ".gitignore"
63
91
  - ".rspec"
92
+ - ".rubocop.yml"
64
93
  - ".ruby_version"
65
94
  - Gemfile
66
95
  - LICENSE.txt
67
96
  - README.md
68
97
  - Rakefile
69
98
  - lib/quick_mem.rb
99
+ - lib/quick_mem/dumps.rb
70
100
  - lib/quick_mem/gc_constants.rb
101
+ - lib/quick_mem/memory_stats.rb
102
+ - lib/quick_mem/summary.rb
71
103
  - lib/quick_mem/version.rb
72
104
  - quick_mem.gemspec
73
105
  - quick_mem.sublime-project
74
106
  - quick_mem.txt
75
- - spec/quick_mem/quick_mem_spec.rb
107
+ - spec/quick_mem/dumps_spec.rb
108
+ - spec/quick_mem/memory_stats_spec.rb
109
+ - spec/quick_mem/summary_spec.rb
110
+ - spec/quick_mem_spec.rb
76
111
  - spec/spec_helper.rb
112
+ - tasks/quality.rake
77
113
  - tasks/rspec.rake
78
114
  homepage: https://github.com/rajivrnair/quick_mem
79
115
  licenses:
@@ -100,5 +136,8 @@ signing_key:
100
136
  specification_version: 4
101
137
  summary: Quickly look at GC stats
102
138
  test_files:
103
- - spec/quick_mem/quick_mem_spec.rb
139
+ - spec/quick_mem/dumps_spec.rb
140
+ - spec/quick_mem/memory_stats_spec.rb
141
+ - spec/quick_mem/summary_spec.rb
142
+ - spec/quick_mem_spec.rb
104
143
  - spec/spec_helper.rb