Hacker News new | ask | show | jobs
by pmontra 858 days ago
Good idea but it seems that every developer of a project is going to have to use it, because it's a gem and it must be included in a layout. It's possible to do that conditionally based on an environment variable, but we're still adding some code to the Rails app. A better way would be to turn it into an extension to developer tools, like the ones for React and Vue. I've got them into my Firefox.
2 comments

How would you be able to implement this functionality only from the frontend without ever adding backend code? You'll always need to expose this info from the backend somehow. Of course with react and vue the data is available since it's already in the frontend.
Yeah you always need a backend part as part of your dev dependencies but currently you also need to add a little snippet in your production view code.

It could be a browser extension like Rails panel + meta_request but I think it’s also good that anybody working on the codebase always get the debugbar, regardless of their browser or setup.

The downside is that if the project decides not to have that in the code, nobody gets it. Example: I suggest to a customer to use it. They decide they don't want it, I can't use it too.
There’s no reason you couldn’t just leave it in your own branch of git and not merge it. It’s not that hard.
Without some kind of perf api baked into rails, this will require some server side code at the very least. An extension won't work without _something_ on the server.

But, there's also nothing stopping you from adding this during development and not committing it.

That’s a good point, I didn’t consider it this way.
One thing to check out: ruby-lsp gets around this by using a custom gemfile, which enhances the project with the lsp's dependencies. That means you can use the gem, with bundler, without adding anything to the "official" project gemfile.

You could probably accomplish something similar, and possibly inject some rack middleware to add the view, or even mount it as a rails engine.

Some details from https://github.com/Shopify/ruby-lsp

> NOTE: starting with v0.7.0, it is no longer recommended to add the ruby-lsp to the bundle. The gem will generate a custom bundle in .ruby-lsp/Gemfile which is used to identify the versions of dependencies that should be used for the application (e.g.: the correct RuboCop version).

Couldn't you only have the snippet in the layout in dev environment? That's fairly common
Perhaps a future improvement is like how rack-mini-profiler does it, and just injects itself