nevir / bumbler Goto Github PK
View Code? Open in Web Editor NEWTrack the load progress of your Bundler-based projects
License: MIT License
Track the load progress of your Bundler-based projects
License: MIT License
I just installed Bumbler on one project, and edit my .zshrc
to set the RUBY_OPT
. Problem now is that all my projects complain cannot load such file -- bumbler/go
. What is the recommended way to handle multiple projects where some may not have Bumbler?
Thanks!
3: from /home/andrew/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/deprecation/proxy_wrappers.rb:128:in `new'
2: from /home/andrew/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/deprecation/proxy_wrappers.rb:128:in `new'
1: from /home/andrew/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/deprecation/proxy_wrappers.rb:132:in `initialize'
/home/andrew/.rvm/gems/ruby-2.5.5/gems/activesupport-6.0.0/lib/active_support/deprecation/proxy_wrappers.rb:168:in `method_missing': private method `warn' called for nil:NilClass (NoMethodError)
Hi there,
We are unable to use your Gem at Swrve because it has no license. Can you add a license to the project (most Gems use an MIT license).
You can do this by adding a s.license = 'MIT'
to the Gemspec. Let me know if you want me to make a pull request.
Thanks,
Marc
Thanks for this neat project!
I have bumbler in my Gemfile. bumbler
alone does give output, but it doesn't seem to be hooking into the other rails commands.
➔ bundle exec bumbler --version
0.3.1
➔ bundle exec rails c
Loading development environment (Rails 4.1.6)
app(dev)>
➔ bundle exec bumbler
[###################################################### ]
( 74/100) [redacted] ( 15.65ms)
Slow requires:
128.31 [redacted]
129.65 [redacted]
133.85 [redacted]
170.97 [redacted]
219.30 [redacted]
236.02 [redacted]
317.85 [redacted]
328.58 [redacted]
328.78 [redacted]
339.01 [redacted]
368.24 [redacted]
395.12 [redacted]
449.70 [redacted]
622.40 [redacted]
687.46 [redacted]
713.75 [redacted]
I am seeing the following in my Rails 5.1.2 app:
$ bumbler --initializers
Slow requires:
212.38 :set_routes_reloader_hook
315.04 ./config/initializers/mac_address_db.rb
650.10 ./config/initializers/preview_interceptors.rb
2203.82 ./config/initializers/messaging.rb
3208.06 :load_config_initializers
110146.25 :finisher_hook
Any ideas what is this weird :finisher_hook that is taking up the majority of the load time?
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- bumbler/go (LoadError)
I've tried numerous things to get past this error. Has anyone dealt with this and was able to get past it?
Not sure if this is a problem unique to my setup, but is this gem known to work with RVM?
Some relevant versions:
bundler (1.3.3, 1.2.3)
rubygems-bundler (1.1.1, 1.1.0)
rvm (1.11.3.5)
I gem install bumbler
then RUBYOPT=-rbumbler/go rails c
returns
~/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- bumbler/go (LoadError)
from~/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
The description of the gem says that it works for any "Bundler-based" projects, but when I tried to run it inside the root directory of one of my gems, I get an error:
LoadError: cannot load such file -- ./config/environment
/Users/janko/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bumbler-0.3.2/lib/bumbler/hooks.rb:35:in `require'
/Users/janko/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bumbler-0.3.2/lib/bumbler/hooks.rb:35:in `call'
/Users/janko/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bumbler-0.3.2/lib/bumbler/hooks.rb:35:in `block (3 levels) in hook_require!'
/Users/janko/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bumbler-0.3.2/lib/bumbler/hooks.rb:68:in `handle_require'
/Users/janko/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bumbler-0.3.2/lib/bumbler/hooks.rb:34:in `block (2 levels) in hook_require!'
/Users/janko/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bumbler-0.3.2/bin/bumbler:37:in `<top (required)>'
/Users/janko/.rbenv/versions/2.4.1/bin/bumbler:22:in `load'
/Users/janko/.rbenv/versions/2.4.1/bin/bumbler:22:in `<top (required)>'
Would it be possible to make it work for any Bundler-based project, not just Rails? Btw, I'm really impressed with the gem, my friend executed it on one of his Rails projects and the information was super useful (I care about load time).
It's safer / nicer and it should also pass the wrap = false
parameter to the base class. Something like:
Rails::Engine.prepend(Module.new do
def load(file, *)
... logic
super
end
end)
If a Gemfile specifies require: true
for a given gem, that gem is ignored by Bumbler.
Specifying require: true
may seem redundant, but it is supported syntax per the Bundler documentation and can be a useful callout:
https://bundler.io/man/gemfile.5.html
The reason this is happening can be found in bundler.rb
on line 43:
Array(spec.autorequire || spec.name).each do |path|
@require_map[path] = spec.name
@gem_state[spec.name][path] = false
end
When require: true
is set in the Gemfile, the result of spec.autorequire
is also true
which gets inserted into the @require_map
as the path key (instead of an actual path). This causes #gem_for_require
to return nil for that gem.
This bug can be reliably reproduced by running Bumbler, noting one of the slow gems listed, and modifying the Gemfile
with require: true
for this gem. Run Bumbler again and you won't see the gem appear anywhere in the list of slow gems.
On windows, we don't necessarily have tput
.
Readline.get_screen_size
seems to work well enough. Readline.get_screen_size[0]
gets the width.
I think there is a problem with Ruby 2.3.0 and Rails 3.2.18
This is what I'm getting:
etagwerker:ombushop/ (develop✗) $ bumbler /Users/etagwerker/.rvm/gems/ruby-2.3.0@ombu/gems/bumbler-0.3.1/lib/bumbler/hooks.rb:67:in `handle_require': uninitialized constant Bumbler::Bundler (NameError)
Did you mean? Bumbler::Bundler
Bundler
Bumbler
from /Users/etagwerker/.rvm/gems/ruby-2.3.0@ombu/gems/bumbler-0.3.1/lib/bumbler/hooks.rb:34:in `block (2 levels) in hook_require!'
from /Users/etagwerker/.rvm/gems/ruby-2.3.0@ombu/gems/bumbler-0.3.1/lib/bumbler/hooks.rb:67:in `handle_require'
from /Users/etagwerker/.rvm/gems/ruby-2.3.0@ombu/gems/bumbler-0.3.1/lib/bumbler/hooks.rb:34:in `block (2 levels) in hook_require!'
from /Users/etagwerker/.rvm/gems/ruby-2.3.0@ombu/gems/bumbler-0.3.1/bin/bumbler:37:in `<top (required)>'
from /Users/etagwerker/.rvm/gems/ruby-2.3.0@ombu/bin/bumbler:23:in `load'
from /Users/etagwerker/.rvm/gems/ruby-2.3.0@ombu/bin/bumbler:23:in `<main>'
from /Users/etagwerker/.rvm/gems/ruby-2.3.0@ombu/bin/ruby_executable_hooks:15:in `eval'
from /Users/etagwerker/.rvm/gems/ruby-2.3.0@ombu/bin/ruby_executable_hooks:15:in `<main>'
It seems to work fine on ruby-2.2.4
Running on Ruby 2.6.3, bumbler stops when about half the gems are loaded. You can see this here, that the progress bar is not filled:
root@7d8364656441:/usr/src/app# bumbler
[######################################################################################################## ]
( 78/132) aws-sdk-s3... thin ( 66.78ms)
Slow requires:
104.80 elasticsearch-dsl
107.16 paperclip
121.61 typhoeus
121.98 stripe
Is this a known issue? How could I debug this?
Hi, there!
I was hoping to use Bumbler to profile the (currently very slow) boot up of our RSpec test suite. Unfortunately, Bumbler doesn't output the results after the loading finished. It displays the progress bar correctly, i.e.:
$ bundle exec rspec
[######### ]
( 7/59) 492.04ms loaded pry
However, after the loading finished, the test suite starts, and no Bumbler results are ever printed.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.