effective_developer 0.5.4 → 0.5.5
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 +4 -4
- data/app/models/effective/profiler.rb +38 -0
- data/lib/effective_developer/version.rb +1 -1
- data/lib/scaffolds/datatables/datatable.rb +0 -6
- data/lib/tasks/pg_pull.rake +69 -10
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e4f396c9ab5a37dfca3a796aa10d204827c3e34de709bf9d1d8ce1db2af5201
|
4
|
+
data.tar.gz: 4a6034049262d3f56c850dc6a2bc05de3f29201debd3b26ec3ae22851532bfa7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eaeec872eeb393fe930c08ea2a14d8ebd17af0e9df9a4ac2c7fdb21047b2888386c6d3b4f5afefd2ecd6e78d11dc81816c6ad6ae83e56e5af6877b4a6b903354
|
7
|
+
data.tar.gz: ed971e8f872fa301fbb1dde42fac07f704f1e0eec46b53fb1250f634cc67e7787362a829d958f160c9084195f459daedd74d4fae6015f2012759318d33c49c64
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Effective::Profiler.allocations { my_method() }
|
4
|
+
|
5
|
+
module Effective
|
6
|
+
class Profiler
|
7
|
+
|
8
|
+
def self.allocations(sourcefiles: ['effective_'], &block)
|
9
|
+
raise('please install the allocation_stats gem') unless defined?(AllocationStats)
|
10
|
+
|
11
|
+
# Run block
|
12
|
+
retval = nil
|
13
|
+
stats = AllocationStats.trace { retval = yield(block) }
|
14
|
+
|
15
|
+
# Compute Allocations
|
16
|
+
allocations = stats.allocations.to_a
|
17
|
+
|
18
|
+
# Filter
|
19
|
+
if sourcefiles.present?
|
20
|
+
sourcefiles = Array(sourcefiles)
|
21
|
+
allocations = allocations.select! { |allocation| sourcefiles.any? { |str| allocation.sourcefile.include?(str) } }
|
22
|
+
end
|
23
|
+
|
24
|
+
# Sort
|
25
|
+
allocations = allocations.sort_by { |allocation| allocation.memsize }
|
26
|
+
|
27
|
+
# Print
|
28
|
+
puts AllocationStats::AllocationsProxy.new(allocations).to_text
|
29
|
+
|
30
|
+
puts "Total allocations: #{allocations.length}. Total size: #{allocations.sum(&:memsize)}"
|
31
|
+
|
32
|
+
retval
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -1,14 +1,8 @@
|
|
1
1
|
class <%= resource.namespaced_class_name.pluralize %>Datatable < Effective::Datatable
|
2
2
|
|
3
|
-
bulk_actions do
|
4
|
-
bulk_action 'Delete selected', <%= [resource.namespaces, resource, 'path'].flatten.compact.join('_') %>(:ids), data: { method: :delete, confirm: 'Really delete selected?' }
|
5
|
-
end
|
6
|
-
|
7
3
|
datatable do
|
8
4
|
order :updated_at
|
9
5
|
|
10
|
-
bulk_actions_col
|
11
|
-
|
12
6
|
col :updated_at, visible: false
|
13
7
|
col :created_at, visible: false
|
14
8
|
col :id, visible: false
|
data/lib/tasks/pg_pull.rake
CHANGED
@@ -66,25 +66,60 @@ namespace :pg do
|
|
66
66
|
#
|
67
67
|
# bundle exec rake pg:load => Will replace the current database with latest.dump
|
68
68
|
# bundle exec rake pg:load[something.dump] => Will replace the current database with something.dump
|
69
|
+
# bundle exec rake pg:load filename=latest.dump database=example
|
69
70
|
desc 'Loads a postgresql .dump file into the development database (latest.dump by default)'
|
70
|
-
task :load, [:
|
71
|
-
|
71
|
+
task :load, [:filename] => :environment do |t, args|
|
72
|
+
defaults = { database: nil, filename: (ENV['DATABASE'] || 'latest') + '.dump' }
|
73
|
+
env_keys = { database: ENV['DATABASE'], filename: ENV['FILENAME'] }
|
74
|
+
keywords = ARGV.map { |a| a.split('=') if a.include?('=') }.compact.inject({}) { |h, (k, v)| h[k.to_sym] = v; h }
|
75
|
+
args.with_defaults(defaults.compact.merge(env_keys.compact).merge(keywords))
|
76
|
+
|
77
|
+
# Validate filename
|
78
|
+
unless File.exists?(Rails.root + args.filename)
|
79
|
+
puts "#{args.filename || none} does not exist"; exit
|
80
|
+
end
|
72
81
|
|
82
|
+
# Validate Config
|
73
83
|
config = ActiveRecord::Base.configurations[Rails.env]
|
84
|
+
configs = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env)
|
85
|
+
|
86
|
+
if configs.length > 1 && args.database.blank?
|
87
|
+
puts "Multiple database configs exist for #{Rails.env} environment."
|
88
|
+
puts "Please run bundle exec rake pg:load database=x"
|
89
|
+
puts "Where x is one of: #{configs.map { |config| config.name }.to_sentence}"
|
90
|
+
exit
|
91
|
+
end
|
92
|
+
|
93
|
+
if configs.length > 1 && args.database.present?
|
94
|
+
config = configs.find { |config| config.name == args.database }
|
95
|
+
end
|
96
|
+
|
97
|
+
if config.blank?
|
98
|
+
puts "Unable to find Rails database config for #{Rails.env}. Exiting."; exit
|
99
|
+
end
|
100
|
+
|
101
|
+
config = config.configuration_hash if config.respond_to?(:configuration_hash)
|
102
|
+
config = config.stringify_keys
|
103
|
+
|
74
104
|
db = { username: (config['username'] || `whoami`), password: config['password'], host: config['host'], port: (config['port'] || 5432), database: config['database'] }
|
75
105
|
db.transform_values! { |v| v.respond_to?(:chomp) ? v.chomp : v }
|
76
106
|
|
77
|
-
puts "=== Loading #{args.
|
107
|
+
puts "=== Loading #{args.filename} into local '#{db[:database]}' database"
|
78
108
|
|
79
109
|
# bin/rails db:environment:set RAILS_ENV=development
|
80
110
|
if Rails.env != 'production'
|
81
111
|
ENV['DISABLE_DATABASE_ENVIRONMENT_CHECK'] = '1'
|
82
112
|
end
|
83
113
|
|
84
|
-
|
85
|
-
|
114
|
+
if configs.length > 1
|
115
|
+
Rake::Task["db:drop:#{args.database}"].invoke
|
116
|
+
Rake::Task["db:create:#{args.database}"].invoke
|
117
|
+
else
|
118
|
+
Rake::Task['db:drop'].invoke
|
119
|
+
Rake::Task['db:create'].invoke
|
120
|
+
end
|
86
121
|
|
87
|
-
if system("export PGPASSWORD=#{db[:password]}; pg_restore --no-acl --no-owner --clean --if-exists -h #{db[:host]} -U #{db[:username]} -d #{db[:database]} #{args.
|
122
|
+
if system("export PGPASSWORD=#{db[:password]}; pg_restore --no-acl --no-owner --clean --if-exists -h #{db[:host]} -U #{db[:username]} -d #{db[:database]} #{args.filename}")
|
88
123
|
puts "Loading database completed"
|
89
124
|
else
|
90
125
|
abort "Error loading database"
|
@@ -94,8 +129,11 @@ namespace :pg do
|
|
94
129
|
# bundle exec rake pg:save => Will dump the database to latest.dump
|
95
130
|
# bundle exec rake pg:save[something.dump] => Will dump the database to something.dump
|
96
131
|
desc 'Saves the development database to a postgresql .dump file (latest.dump by default)'
|
97
|
-
task :save, [:
|
98
|
-
|
132
|
+
task :save, [:filename] => :environment do |t, args|
|
133
|
+
defaults = { database: nil, filename: (ENV['DATABASE'] || 'latest') + '.dump' }
|
134
|
+
env_keys = { database: ENV['DATABASE'], filename: ENV['FILENAME'] }
|
135
|
+
keywords = ARGV.map { |a| a.split('=') if a.include?('=') }.compact.inject({}) { |h, (k, v)| h[k.to_sym] = v; h }
|
136
|
+
args.with_defaults(defaults.compact.merge(env_keys.compact).merge(keywords))
|
99
137
|
|
100
138
|
db = if ENV['DATABASE_URL'].to_s.length > 0
|
101
139
|
uri = URI.parse(ENV['DATABASE_URL']) rescue nil
|
@@ -103,15 +141,36 @@ namespace :pg do
|
|
103
141
|
|
104
142
|
{ username: uri.user, password: uri.password, host: uri.host, port: (uri.port || 5432), database: uri.path.sub('/', '') }
|
105
143
|
else
|
144
|
+
# Validate Config
|
106
145
|
config = ActiveRecord::Base.configurations[Rails.env]
|
146
|
+
configs = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env)
|
147
|
+
|
148
|
+
if configs.length > 1 && args.database.blank?
|
149
|
+
puts "Multiple database configs exist for #{Rails.env} environment."
|
150
|
+
puts "Please run bundle exec rake pg:save database=x"
|
151
|
+
puts "Where x is one of: #{configs.map { |config| config.name }.to_sentence}"
|
152
|
+
exit
|
153
|
+
end
|
154
|
+
|
155
|
+
if configs.length > 1 && args.database.present?
|
156
|
+
config = configs.find { |config| config.name == args.database }
|
157
|
+
end
|
158
|
+
|
159
|
+
if config.blank?
|
160
|
+
puts "Unable to find Rails database config for #{Rails.env}. Exiting."; exit
|
161
|
+
end
|
162
|
+
|
163
|
+
config = config.configuration_hash if config.respond_to?(:configuration_hash)
|
164
|
+
config = config.stringify_keys
|
165
|
+
|
107
166
|
{ username: (config['username'] || `whoami`.chomp), password: config['password'], host: config['host'], port: (config['port'] || 5432), database: config['database'] }
|
108
167
|
end
|
109
168
|
|
110
169
|
db.transform_values! { |v| v.respond_to?(:chomp) ? v.chomp : v }
|
111
170
|
|
112
|
-
puts "=== Saving local '#{db[:database]}' database to #{args.
|
171
|
+
puts "=== Saving local '#{db[:database]}' database to #{args.filename}"
|
113
172
|
|
114
|
-
if system("export PGPASSWORD=#{db[:password]}; pg_dump -Fc --no-acl --no-owner -h #{db[:host]} -p #{db[:port]} -U #{db[:username]} #{db[:database]} > #{args.
|
173
|
+
if system("export PGPASSWORD=#{db[:password]}; pg_dump -Fc --no-acl --no-owner -h #{db[:host]} -p #{db[:port]} -U #{db[:username]} #{db[:database]} > #{args.filename}")
|
115
174
|
puts "Saving database completed"
|
116
175
|
else
|
117
176
|
abort "Error saving database"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_developer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -51,6 +51,7 @@ files:
|
|
51
51
|
- app/models/effective/code_writer.rb
|
52
52
|
- app/models/effective/csv_importer.rb
|
53
53
|
- app/models/effective/live_generator.rb
|
54
|
+
- app/models/effective/profiler.rb
|
54
55
|
- config/effective_developer.rb
|
55
56
|
- lib/effective_developer.rb
|
56
57
|
- lib/effective_developer/engine.rb
|