better_rails_debugger 0.0.1
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +98 -0
- data/Rakefile +36 -0
- data/app/assets/config/better_rails_debugger_manifest.js +2 -0
- data/app/assets/images/avatars/1.jpg +0 -0
- data/app/assets/images/avatars/2.jpg +0 -0
- data/app/assets/images/avatars/3.jpg +0 -0
- data/app/assets/images/avatars/4.jpg +0 -0
- data/app/assets/images/avatars/5.jpg +0 -0
- data/app/assets/images/avatars/6.jpg +0 -0
- data/app/assets/images/avatars/7.jpg +0 -0
- data/app/assets/images/avatars/8.jpg +0 -0
- data/app/assets/images/favicon.png +0 -0
- data/app/assets/images/logo-symbol.png +0 -0
- data/app/assets/images/logo.png +0 -0
- data/app/assets/javascripts/better_rails_debugger/Chart.min.js +10 -0
- data/app/assets/javascripts/better_rails_debugger/app.js +146 -0
- data/app/assets/javascripts/better_rails_debugger/application.js +24 -0
- data/app/assets/javascripts/better_rails_debugger/bootstrap.min.js +7 -0
- data/app/assets/javascripts/better_rails_debugger/jquery-3.0.0.min.js +4 -0
- data/app/assets/javascripts/better_rails_debugger/jquery.min.js +4 -0
- data/app/assets/javascripts/better_rails_debugger/moment.min.js +7 -0
- data/app/assets/javascripts/better_rails_debugger/pace.min.js +2 -0
- data/app/assets/javascripts/better_rails_debugger/popper.min.js +5 -0
- data/app/assets/javascripts/better_rails_debugger/popper.min.js.map +1 -0
- data/app/assets/javascripts/better_rails_debugger/prism.js +7 -0
- data/app/assets/javascripts/better_rails_debugger/views/charts.js +196 -0
- data/app/assets/javascripts/better_rails_debugger/views/main.js +533 -0
- data/app/assets/javascripts/better_rails_debugger/views/popovers.js +8 -0
- data/app/assets/javascripts/better_rails_debugger/views/tooltips.js +5 -0
- data/app/assets/javascripts/better_rails_debugger/views/widgets.js +564 -0
- data/app/assets/stylesheets/better_rails_debugger/analysis_group_controller.css +4 -0
- data/app/assets/stylesheets/better_rails_debugger/application.scss +16 -0
- data/app/assets/stylesheets/better_rails_debugger/group_instances_controller.css +4 -0
- data/app/assets/stylesheets/better_rails_debugger/memory.css +4 -0
- data/app/assets/stylesheets/better_rails_debugger/prism.css +215 -0
- data/app/assets/stylesheets/better_rails_debugger/style.min.css +12 -0
- data/app/controllers/better_rails_debugger/analysis_groups_controller.rb +75 -0
- data/app/controllers/better_rails_debugger/application_controller.rb +5 -0
- data/app/controllers/better_rails_debugger/group_instances_controller.rb +29 -0
- data/app/controllers/better_rails_debugger/memory_controller.rb +21 -0
- data/app/helpers/better_rails_debugger/analysis_groups_helper.rb +4 -0
- data/app/helpers/better_rails_debugger/application_helper.rb +4 -0
- data/app/helpers/better_rails_debugger/group_instances_helper.rb +4 -0
- data/app/helpers/better_rails_debugger/memory_helper.rb +4 -0
- data/app/jobs/better_rails_debugger/analysis_recorder_job.rb +35 -0
- data/app/jobs/better_rails_debugger/application_job.rb +4 -0
- data/app/mailers/better_rails_debugger/application_mailer.rb +6 -0
- data/app/models/better_rails_debugger/analysis_group.rb +49 -0
- data/app/models/better_rails_debugger/application_record.rb +5 -0
- data/app/models/better_rails_debugger/group_instance.rb +42 -0
- data/app/models/better_rails_debugger/object_information.rb +19 -0
- data/app/views/better_rails_debugger/analysis_groups/_form.html.haml +41 -0
- data/app/views/better_rails_debugger/analysis_groups/edit.html.haml +23 -0
- data/app/views/better_rails_debugger/analysis_groups/index.html.haml +36 -0
- data/app/views/better_rails_debugger/analysis_groups/new.html.haml +23 -0
- data/app/views/better_rails_debugger/analysis_groups/show.html.haml +35 -0
- data/app/views/better_rails_debugger/group_instances/objects.html.haml +62 -0
- data/app/views/better_rails_debugger/memory/index.html.haml +20 -0
- data/app/views/better_rails_debugger/memory/show.html.haml +26 -0
- data/app/views/better_rails_debugger/shared/_header.html.haml +4 -0
- data/app/views/better_rails_debugger/shared/_sidebar.html.haml +5 -0
- data/app/views/layouts/better_rails_debugger/application.html.erb +47 -0
- data/config/initializers/setup.rb +10 -0
- data/config/mongoid.yml +160 -0
- data/config/routes.rb +21 -0
- data/lib/better_rails_debugger/config.rb +45 -0
- data/lib/better_rails_debugger/engine.rb +5 -0
- data/lib/better_rails_debugger/memory_analyzer.rb +109 -0
- data/lib/better_rails_debugger/version.rb +3 -0
- data/lib/better_rails_debugger.rb +16 -0
- data/lib/tasks/better_rails_debugger_tasks.rake +4 -0
- metadata +247 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
Rails.application.config.assets.precompile += %w(
|
|
2
|
+
better_rails_debugger/jquery.min.js
|
|
3
|
+
better_rails_debugger/bootstrap.min.js
|
|
4
|
+
better_rails_debugger/moment.min.js
|
|
5
|
+
better_rails_debugger/place.min.js
|
|
6
|
+
better_rails_debugger/popper.min.js
|
|
7
|
+
better_rails_debugger/Chart.min.js
|
|
8
|
+
better_rails_debugger/prism.css
|
|
9
|
+
better_rails_debugger/prism.js
|
|
10
|
+
)
|
data/config/mongoid.yml
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
development:
|
|
2
|
+
# Configure available database clients. (required)
|
|
3
|
+
clients:
|
|
4
|
+
# Defines the default client. (required)
|
|
5
|
+
default:
|
|
6
|
+
# Defines the name of the default database that Mongoid can connect to.
|
|
7
|
+
# (required).
|
|
8
|
+
database: dummy_development
|
|
9
|
+
# Provides the hosts the default client can connect to. Must be an array
|
|
10
|
+
# of host:port pairs. (required)
|
|
11
|
+
hosts:
|
|
12
|
+
- localhost:27017
|
|
13
|
+
options:
|
|
14
|
+
# Change the default write concern. (default = { w: 1 })
|
|
15
|
+
# write:
|
|
16
|
+
# w: 1
|
|
17
|
+
|
|
18
|
+
# Change the default read preference. Valid options for mode are: :secondary,
|
|
19
|
+
# :secondary_preferred, :primary, :primary_preferred, :nearest
|
|
20
|
+
# (default: primary)
|
|
21
|
+
# read:
|
|
22
|
+
# mode: :secondary_preferred
|
|
23
|
+
# tag_sets:
|
|
24
|
+
# - use: web
|
|
25
|
+
|
|
26
|
+
# The name of the user for authentication.
|
|
27
|
+
# user: 'user'
|
|
28
|
+
|
|
29
|
+
# The password of the user for authentication.
|
|
30
|
+
# password: 'password'
|
|
31
|
+
|
|
32
|
+
# The user's database roles.
|
|
33
|
+
# roles:
|
|
34
|
+
# - 'dbOwner'
|
|
35
|
+
|
|
36
|
+
# Change the default authentication mechanism. Valid options are: :scram,
|
|
37
|
+
# :mongodb_cr, :mongodb_x509, and :plain. Note that all authentication
|
|
38
|
+
# mechanisms require username and password, with the exception of :mongodb_x509.
|
|
39
|
+
# Default on mongoDB 3.0 is :scram, default on 2.4 and 2.6 is :plain.
|
|
40
|
+
# auth_mech: :scram
|
|
41
|
+
|
|
42
|
+
# The database or source to authenticate the user against.
|
|
43
|
+
# (default: the database specified above or admin)
|
|
44
|
+
# auth_source: admin
|
|
45
|
+
|
|
46
|
+
# Force a the driver cluster to behave in a certain manner instead of auto-
|
|
47
|
+
# discovering. Can be one of: :direct, :replica_set, :sharded. Set to :direct
|
|
48
|
+
# when connecting to hidden members of a replica set.
|
|
49
|
+
# connect: :direct
|
|
50
|
+
|
|
51
|
+
# Changes the default time in seconds the server monitors refresh their status
|
|
52
|
+
# via ismaster commands. (default: 10)
|
|
53
|
+
# heartbeat_frequency: 10
|
|
54
|
+
|
|
55
|
+
# The time in seconds for selecting servers for a near read preference. (default: 0.015)
|
|
56
|
+
# local_threshold: 0.015
|
|
57
|
+
|
|
58
|
+
# The timeout in seconds for selecting a server for an operation. (default: 30)
|
|
59
|
+
# server_selection_timeout: 30
|
|
60
|
+
|
|
61
|
+
# The maximum number of connections in the connection pool. (default: 5)
|
|
62
|
+
# max_pool_size: 5
|
|
63
|
+
|
|
64
|
+
# The minimum number of connections in the connection pool. (default: 1)
|
|
65
|
+
# min_pool_size: 1
|
|
66
|
+
|
|
67
|
+
# The time to wait, in seconds, in the connection pool for a connection
|
|
68
|
+
# to be checked in before timing out. (default: 5)
|
|
69
|
+
# wait_queue_timeout: 5
|
|
70
|
+
|
|
71
|
+
# The time to wait to establish a connection before timing out, in seconds.
|
|
72
|
+
# (default: 5)
|
|
73
|
+
# connect_timeout: 5
|
|
74
|
+
|
|
75
|
+
# The timeout to wait to execute operations on a socket before raising an error.
|
|
76
|
+
# (default: 5)
|
|
77
|
+
# socket_timeout: 5
|
|
78
|
+
|
|
79
|
+
# The name of the replica set to connect to. Servers provided as seeds that do
|
|
80
|
+
# not belong to this replica set will be ignored.
|
|
81
|
+
# replica_set: name
|
|
82
|
+
|
|
83
|
+
# Whether to connect to the servers via ssl. (default: false)
|
|
84
|
+
# ssl: true
|
|
85
|
+
|
|
86
|
+
# The certificate file used to identify the connection against MongoDB.
|
|
87
|
+
# ssl_cert: /path/to/my.cert
|
|
88
|
+
|
|
89
|
+
# The private keyfile used to identify the connection against MongoDB.
|
|
90
|
+
# Note that even if the key is stored in the same file as the certificate,
|
|
91
|
+
# both need to be explicitly specified.
|
|
92
|
+
# ssl_key: /path/to/my.key
|
|
93
|
+
|
|
94
|
+
# A passphrase for the private key.
|
|
95
|
+
# ssl_key_pass_phrase: password
|
|
96
|
+
|
|
97
|
+
# Whether or not to do peer certification validation. (default: true)
|
|
98
|
+
# ssl_verify: true
|
|
99
|
+
|
|
100
|
+
# The file containing a set of concatenated certification authority certifications
|
|
101
|
+
# used to validate certs passed from the other end of the connection.
|
|
102
|
+
# ssl_ca_cert: /path/to/ca.cert
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
# Configure Mongoid specific options. (optional)
|
|
106
|
+
options:
|
|
107
|
+
# Includes the root model name in json serialization. (default: false)
|
|
108
|
+
# include_root_in_json: false
|
|
109
|
+
|
|
110
|
+
# Include the _type field in serialization. (default: false)
|
|
111
|
+
# include_type_for_serialization: false
|
|
112
|
+
|
|
113
|
+
# Preload all models in development, needed when models use
|
|
114
|
+
# inheritance. (default: false)
|
|
115
|
+
# preload_models: false
|
|
116
|
+
|
|
117
|
+
# Raise an error when performing a #find and the document is not found.
|
|
118
|
+
# (default: true)
|
|
119
|
+
# raise_not_found_error: true
|
|
120
|
+
|
|
121
|
+
# Raise an error when defining a scope with the same name as an
|
|
122
|
+
# existing method. (default: false)
|
|
123
|
+
# scope_overwrite_exception: false
|
|
124
|
+
|
|
125
|
+
# Raise an error when defining a field with the same name as an
|
|
126
|
+
# existing method. (default: false)
|
|
127
|
+
# duplicate_fields_exception: false
|
|
128
|
+
|
|
129
|
+
# Use Active Support's time zone in conversions. (default: true)
|
|
130
|
+
# use_activesupport_time_zone: true
|
|
131
|
+
|
|
132
|
+
# Ensure all times are UTC in the app side. (default: false)
|
|
133
|
+
# use_utc: false
|
|
134
|
+
|
|
135
|
+
# Set the Mongoid and Ruby driver log levels when not in a Rails
|
|
136
|
+
# environment. The Mongoid logger will be set to the Rails logger
|
|
137
|
+
# otherwise.(default: :info)
|
|
138
|
+
# log_level: :info
|
|
139
|
+
|
|
140
|
+
# Control whether `belongs_to` association is required. By default
|
|
141
|
+
# `belongs_to` will trigger a validation error if the association
|
|
142
|
+
# is not present. (default: true)
|
|
143
|
+
# belongs_to_required_by_default: true
|
|
144
|
+
|
|
145
|
+
# Application name that is printed to the mongodb logs upon establishing a
|
|
146
|
+
# connection in server versions >= 3.4. Note that the name cannot exceed 128 bytes.
|
|
147
|
+
# app_name: MyApplicationName
|
|
148
|
+
|
|
149
|
+
# Use background indexes by default if `background` option not specified. (default: false)
|
|
150
|
+
# background_indexing: false
|
|
151
|
+
test:
|
|
152
|
+
clients:
|
|
153
|
+
default:
|
|
154
|
+
database: dummy_test
|
|
155
|
+
hosts:
|
|
156
|
+
- localhost:27017
|
|
157
|
+
options:
|
|
158
|
+
read:
|
|
159
|
+
mode: :primary
|
|
160
|
+
max_pool_size: 1
|
data/config/routes.rb
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
BetterRailsDebugger::Engine.routes.draw do
|
|
2
|
+
# NEW
|
|
3
|
+
resources :analysis_groups
|
|
4
|
+
|
|
5
|
+
resources :group_instances do
|
|
6
|
+
member do
|
|
7
|
+
get 'objects'
|
|
8
|
+
get 'code'
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# OLD
|
|
13
|
+
root 'analysis_groups#index'
|
|
14
|
+
|
|
15
|
+
resources :memory, only: [:index, :show] do
|
|
16
|
+
member do
|
|
17
|
+
get 'analyze'
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
module BetterRailsDebugger
|
|
2
|
+
class Configuration
|
|
3
|
+
include Singleton
|
|
4
|
+
|
|
5
|
+
attr_reader :mongoid_config_file
|
|
6
|
+
|
|
7
|
+
def initialize
|
|
8
|
+
Mongoid.logger.level = Logger::FATAL
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Set MongoID configuration file
|
|
12
|
+
def mongoid_config_file=(file_path)
|
|
13
|
+
raise LoadError.new "File #{file_path} not found" if !File.exist? file_path
|
|
14
|
+
@mongoid_config_file = file_path
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Skip globally, the analysis of all classes added here
|
|
18
|
+
def skip_classes=(list)
|
|
19
|
+
return @skip_classes if @skip_classes
|
|
20
|
+
raise ArgumentError.new "Expected Array, got #{list.class}" if !list.kind_of? Array
|
|
21
|
+
raise ArgumentError.new "Array must contain classes and mondules names only" if list.any? {|a| !a.class.kind_of?(Class)}
|
|
22
|
+
@skip_classes ||= list
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def skip_classes
|
|
26
|
+
@skip_classes || []
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def classes_to_skip
|
|
32
|
+
@classes_to_skip ||= ruby_classes + skip_classes
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def ruby_classes
|
|
36
|
+
@ruby_classes ||= %w{
|
|
37
|
+
|
|
38
|
+
}.map(&:constantize)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.configure(&block)
|
|
43
|
+
block.call Configuration.instance
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
require 'objspace'
|
|
2
|
+
|
|
3
|
+
module BetterRailsDebugger
|
|
4
|
+
class MemoryAnalyzer
|
|
5
|
+
include Singleton
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def analyze(identifier, group_id)
|
|
9
|
+
begin
|
|
10
|
+
group = ::BetterRailsDebugger::AnalysisGroup.find group_id
|
|
11
|
+
rescue Mongoid::Errors::DocumentNotFound
|
|
12
|
+
# If the group does not exist, just run the code and return
|
|
13
|
+
yield
|
|
14
|
+
return
|
|
15
|
+
end
|
|
16
|
+
# If we reached the max time to execute the code, just execute the code and do not collect information
|
|
17
|
+
if times_to_run_exceeded?(group) or skip_instance?(group, identifier)
|
|
18
|
+
yield
|
|
19
|
+
else
|
|
20
|
+
::ObjectSpace.trace_object_allocations do
|
|
21
|
+
yield
|
|
22
|
+
collect_information(identifier, group_id)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Clean ObjectSpace abject allocation tracer history
|
|
28
|
+
def clear_tracking
|
|
29
|
+
::ObjectSpace.trace_object_allocations_clear
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def times_to_run_exceeded?(group)
|
|
33
|
+
group.times_to_run.to_i > 0 and group.group_instances.count >= group.times_to_run
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def skip_instance?(group, identifier)
|
|
37
|
+
!group.analyze_repeated_instances and GroupInstance.where(identifier: identifier, analysis_group: group.id).count > 0
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Record into db, information about object creation
|
|
41
|
+
def collect_information(identifier, group_id)
|
|
42
|
+
group = ::BetterRailsDebugger::AnalysisGroup.find group_id
|
|
43
|
+
if not group.present?
|
|
44
|
+
Rails.logger.error "[BetterRailsDebugger] Group '#{recorded[:group_id]}' not found. Skiping..."
|
|
45
|
+
return
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Load Mongo db if required
|
|
49
|
+
if not Mongoid::Config.configured?
|
|
50
|
+
Mongoid.load!(BetterRailsDebugger::Configuration.instance.mongoid_config_file, Rails.env.to_sym)
|
|
51
|
+
Mongoid.logger.level = Logger::FATAL
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
instance = ::BetterRailsDebugger::GroupInstance.create identifier: identifier, analysis_group_id: group_id, caller_file: caller[3][/[^:]+/]
|
|
55
|
+
|
|
56
|
+
collect_memory_information(instance)
|
|
57
|
+
|
|
58
|
+
# Now, it's time to analyze all collected data and generate a report
|
|
59
|
+
::BetterRailsDebugger::AnalysisRecorderJob.perform_later({ instance_id: instance.id.to_s })
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
private
|
|
63
|
+
|
|
64
|
+
def collect_memory_information(instance)
|
|
65
|
+
objects = []
|
|
66
|
+
return if !instance.analysis_group.collect_memory_information
|
|
67
|
+
ObjectSpace.each_object(Object) do |obj|
|
|
68
|
+
|
|
69
|
+
next if !all_valid_classes[obj.class]
|
|
70
|
+
|
|
71
|
+
source_line = ObjectSpace.allocation_sourcefile(obj)
|
|
72
|
+
|
|
73
|
+
# Do not track objects that we don't know where comes from
|
|
74
|
+
next if !source_line
|
|
75
|
+
|
|
76
|
+
next if !instance.track_allocation_of? source_line
|
|
77
|
+
|
|
78
|
+
meta = {
|
|
79
|
+
ruby_object_id: obj.object_id,
|
|
80
|
+
source_file: source_line,
|
|
81
|
+
source_line: ObjectSpace.allocation_sourceline(obj),
|
|
82
|
+
memsize: ObjectSpace.memsize_of(obj),
|
|
83
|
+
class_name: obj.class.name,
|
|
84
|
+
group_instance_id: instance.id
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
# Add extra conditional metadata here....
|
|
88
|
+
|
|
89
|
+
objects << meta
|
|
90
|
+
end
|
|
91
|
+
::BetterRailsDebugger::ObjectInformation.collection.insert_many(objects)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def all_valid_classes
|
|
95
|
+
return @all_valid_classes if @all_valid_classes
|
|
96
|
+
if !@all_classes
|
|
97
|
+
@all_classes = []
|
|
98
|
+
ObjectSpace.each_object(Class) do |klass|
|
|
99
|
+
@all_classes << klass
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
@all_valid_classes = Hash.new false
|
|
103
|
+
(@all_classes - ::BetterRailsDebugger::Configuration.instance.send(:classes_to_skip)).each do |klass|
|
|
104
|
+
@all_valid_classes[klass] = true
|
|
105
|
+
end
|
|
106
|
+
@all_valid_classes
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require "better_rails_debugger/engine"
|
|
2
|
+
require "mongoid"
|
|
3
|
+
require "haml"
|
|
4
|
+
require "will_paginate_mongoid"
|
|
5
|
+
require "will_paginate-bootstrap4"
|
|
6
|
+
require "rouge"
|
|
7
|
+
require "font-awesome-rails"
|
|
8
|
+
|
|
9
|
+
require "better_rails_debugger/config"
|
|
10
|
+
require "better_rails_debugger/memory_analyzer"
|
|
11
|
+
|
|
12
|
+
Haml.init_rails(binding)
|
|
13
|
+
|
|
14
|
+
module BetterRailsDebugger
|
|
15
|
+
# Your code goes here...
|
|
16
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: better_rails_debugger
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Andres Jose Borek
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2018-03-02 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: rails
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 5.1.5
|
|
20
|
+
- - "<"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '6.0'
|
|
23
|
+
type: :runtime
|
|
24
|
+
prerelease: false
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
requirements:
|
|
27
|
+
- - "~>"
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: 5.1.5
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '6.0'
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: haml-rails
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '1.0'
|
|
40
|
+
- - "<"
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: '2.0'
|
|
43
|
+
type: :runtime
|
|
44
|
+
prerelease: false
|
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
46
|
+
requirements:
|
|
47
|
+
- - "~>"
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: '1.0'
|
|
50
|
+
- - "<"
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: '2.0'
|
|
53
|
+
- !ruby/object:Gem::Dependency
|
|
54
|
+
name: mongoid
|
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - ">="
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: 7.0.0.beta
|
|
60
|
+
- - "<"
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: '8.0'
|
|
63
|
+
type: :runtime
|
|
64
|
+
prerelease: false
|
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
66
|
+
requirements:
|
|
67
|
+
- - ">="
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: 7.0.0.beta
|
|
70
|
+
- - "<"
|
|
71
|
+
- !ruby/object:Gem::Version
|
|
72
|
+
version: '8.0'
|
|
73
|
+
- !ruby/object:Gem::Dependency
|
|
74
|
+
name: will_paginate_mongoid
|
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
|
76
|
+
requirements:
|
|
77
|
+
- - ">="
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: '0'
|
|
80
|
+
type: :runtime
|
|
81
|
+
prerelease: false
|
|
82
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
83
|
+
requirements:
|
|
84
|
+
- - ">="
|
|
85
|
+
- !ruby/object:Gem::Version
|
|
86
|
+
version: '0'
|
|
87
|
+
- !ruby/object:Gem::Dependency
|
|
88
|
+
name: will_paginate-bootstrap4
|
|
89
|
+
requirement: !ruby/object:Gem::Requirement
|
|
90
|
+
requirements:
|
|
91
|
+
- - ">="
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: '0'
|
|
94
|
+
type: :runtime
|
|
95
|
+
prerelease: false
|
|
96
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
97
|
+
requirements:
|
|
98
|
+
- - ">="
|
|
99
|
+
- !ruby/object:Gem::Version
|
|
100
|
+
version: '0'
|
|
101
|
+
- !ruby/object:Gem::Dependency
|
|
102
|
+
name: rouge
|
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
|
104
|
+
requirements:
|
|
105
|
+
- - "~>"
|
|
106
|
+
- !ruby/object:Gem::Version
|
|
107
|
+
version: '3.1'
|
|
108
|
+
type: :runtime
|
|
109
|
+
prerelease: false
|
|
110
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
111
|
+
requirements:
|
|
112
|
+
- - "~>"
|
|
113
|
+
- !ruby/object:Gem::Version
|
|
114
|
+
version: '3.1'
|
|
115
|
+
- !ruby/object:Gem::Dependency
|
|
116
|
+
name: font-awesome-rails
|
|
117
|
+
requirement: !ruby/object:Gem::Requirement
|
|
118
|
+
requirements:
|
|
119
|
+
- - ">="
|
|
120
|
+
- !ruby/object:Gem::Version
|
|
121
|
+
version: '0'
|
|
122
|
+
type: :runtime
|
|
123
|
+
prerelease: false
|
|
124
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
125
|
+
requirements:
|
|
126
|
+
- - ">="
|
|
127
|
+
- !ruby/object:Gem::Version
|
|
128
|
+
version: '0'
|
|
129
|
+
- !ruby/object:Gem::Dependency
|
|
130
|
+
name: sqlite3
|
|
131
|
+
requirement: !ruby/object:Gem::Requirement
|
|
132
|
+
requirements:
|
|
133
|
+
- - ">="
|
|
134
|
+
- !ruby/object:Gem::Version
|
|
135
|
+
version: '0'
|
|
136
|
+
type: :development
|
|
137
|
+
prerelease: false
|
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
139
|
+
requirements:
|
|
140
|
+
- - ">="
|
|
141
|
+
- !ruby/object:Gem::Version
|
|
142
|
+
version: '0'
|
|
143
|
+
description: Better rails debugger can analyze memory issues only by the moment, but
|
|
144
|
+
performance is planned.
|
|
145
|
+
email:
|
|
146
|
+
- andres.b.dev@gmail.com
|
|
147
|
+
executables: []
|
|
148
|
+
extensions: []
|
|
149
|
+
extra_rdoc_files: []
|
|
150
|
+
files:
|
|
151
|
+
- MIT-LICENSE
|
|
152
|
+
- README.md
|
|
153
|
+
- Rakefile
|
|
154
|
+
- app/assets/config/better_rails_debugger_manifest.js
|
|
155
|
+
- app/assets/images/avatars/1.jpg
|
|
156
|
+
- app/assets/images/avatars/2.jpg
|
|
157
|
+
- app/assets/images/avatars/3.jpg
|
|
158
|
+
- app/assets/images/avatars/4.jpg
|
|
159
|
+
- app/assets/images/avatars/5.jpg
|
|
160
|
+
- app/assets/images/avatars/6.jpg
|
|
161
|
+
- app/assets/images/avatars/7.jpg
|
|
162
|
+
- app/assets/images/avatars/8.jpg
|
|
163
|
+
- app/assets/images/favicon.png
|
|
164
|
+
- app/assets/images/logo-symbol.png
|
|
165
|
+
- app/assets/images/logo.png
|
|
166
|
+
- app/assets/javascripts/better_rails_debugger/Chart.min.js
|
|
167
|
+
- app/assets/javascripts/better_rails_debugger/app.js
|
|
168
|
+
- app/assets/javascripts/better_rails_debugger/application.js
|
|
169
|
+
- app/assets/javascripts/better_rails_debugger/bootstrap.min.js
|
|
170
|
+
- app/assets/javascripts/better_rails_debugger/jquery-3.0.0.min.js
|
|
171
|
+
- app/assets/javascripts/better_rails_debugger/jquery.min.js
|
|
172
|
+
- app/assets/javascripts/better_rails_debugger/moment.min.js
|
|
173
|
+
- app/assets/javascripts/better_rails_debugger/pace.min.js
|
|
174
|
+
- app/assets/javascripts/better_rails_debugger/popper.min.js
|
|
175
|
+
- app/assets/javascripts/better_rails_debugger/popper.min.js.map
|
|
176
|
+
- app/assets/javascripts/better_rails_debugger/prism.js
|
|
177
|
+
- app/assets/javascripts/better_rails_debugger/views/charts.js
|
|
178
|
+
- app/assets/javascripts/better_rails_debugger/views/main.js
|
|
179
|
+
- app/assets/javascripts/better_rails_debugger/views/popovers.js
|
|
180
|
+
- app/assets/javascripts/better_rails_debugger/views/tooltips.js
|
|
181
|
+
- app/assets/javascripts/better_rails_debugger/views/widgets.js
|
|
182
|
+
- app/assets/stylesheets/better_rails_debugger/analysis_group_controller.css
|
|
183
|
+
- app/assets/stylesheets/better_rails_debugger/application.scss
|
|
184
|
+
- app/assets/stylesheets/better_rails_debugger/group_instances_controller.css
|
|
185
|
+
- app/assets/stylesheets/better_rails_debugger/memory.css
|
|
186
|
+
- app/assets/stylesheets/better_rails_debugger/prism.css
|
|
187
|
+
- app/assets/stylesheets/better_rails_debugger/style.min.css
|
|
188
|
+
- app/controllers/better_rails_debugger/analysis_groups_controller.rb
|
|
189
|
+
- app/controllers/better_rails_debugger/application_controller.rb
|
|
190
|
+
- app/controllers/better_rails_debugger/group_instances_controller.rb
|
|
191
|
+
- app/controllers/better_rails_debugger/memory_controller.rb
|
|
192
|
+
- app/helpers/better_rails_debugger/analysis_groups_helper.rb
|
|
193
|
+
- app/helpers/better_rails_debugger/application_helper.rb
|
|
194
|
+
- app/helpers/better_rails_debugger/group_instances_helper.rb
|
|
195
|
+
- app/helpers/better_rails_debugger/memory_helper.rb
|
|
196
|
+
- app/jobs/better_rails_debugger/analysis_recorder_job.rb
|
|
197
|
+
- app/jobs/better_rails_debugger/application_job.rb
|
|
198
|
+
- app/mailers/better_rails_debugger/application_mailer.rb
|
|
199
|
+
- app/models/better_rails_debugger/analysis_group.rb
|
|
200
|
+
- app/models/better_rails_debugger/application_record.rb
|
|
201
|
+
- app/models/better_rails_debugger/group_instance.rb
|
|
202
|
+
- app/models/better_rails_debugger/object_information.rb
|
|
203
|
+
- app/views/better_rails_debugger/analysis_groups/_form.html.haml
|
|
204
|
+
- app/views/better_rails_debugger/analysis_groups/edit.html.haml
|
|
205
|
+
- app/views/better_rails_debugger/analysis_groups/index.html.haml
|
|
206
|
+
- app/views/better_rails_debugger/analysis_groups/new.html.haml
|
|
207
|
+
- app/views/better_rails_debugger/analysis_groups/show.html.haml
|
|
208
|
+
- app/views/better_rails_debugger/group_instances/objects.html.haml
|
|
209
|
+
- app/views/better_rails_debugger/memory/index.html.haml
|
|
210
|
+
- app/views/better_rails_debugger/memory/show.html.haml
|
|
211
|
+
- app/views/better_rails_debugger/shared/_header.html.haml
|
|
212
|
+
- app/views/better_rails_debugger/shared/_sidebar.html.haml
|
|
213
|
+
- app/views/layouts/better_rails_debugger/application.html.erb
|
|
214
|
+
- config/initializers/setup.rb
|
|
215
|
+
- config/mongoid.yml
|
|
216
|
+
- config/routes.rb
|
|
217
|
+
- lib/better_rails_debugger.rb
|
|
218
|
+
- lib/better_rails_debugger/config.rb
|
|
219
|
+
- lib/better_rails_debugger/engine.rb
|
|
220
|
+
- lib/better_rails_debugger/memory_analyzer.rb
|
|
221
|
+
- lib/better_rails_debugger/version.rb
|
|
222
|
+
- lib/tasks/better_rails_debugger_tasks.rake
|
|
223
|
+
homepage: ''
|
|
224
|
+
licenses:
|
|
225
|
+
- MIT
|
|
226
|
+
metadata: {}
|
|
227
|
+
post_install_message:
|
|
228
|
+
rdoc_options: []
|
|
229
|
+
require_paths:
|
|
230
|
+
- lib
|
|
231
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
232
|
+
requirements:
|
|
233
|
+
- - ">="
|
|
234
|
+
- !ruby/object:Gem::Version
|
|
235
|
+
version: '2.4'
|
|
236
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
237
|
+
requirements:
|
|
238
|
+
- - ">="
|
|
239
|
+
- !ruby/object:Gem::Version
|
|
240
|
+
version: '0'
|
|
241
|
+
requirements: []
|
|
242
|
+
rubyforge_project:
|
|
243
|
+
rubygems_version: 2.6.12
|
|
244
|
+
signing_key:
|
|
245
|
+
specification_version: 4
|
|
246
|
+
summary: Tool that helps you to debug memory issues and others.
|
|
247
|
+
test_files: []
|