Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vasfed/deprecation_collector
Collector for ruby/rails deprecations in production environment
https://github.com/vasfed/deprecation_collector
collector deprecation production rails ruby
Last synced: about 15 hours ago
JSON representation
Collector for ruby/rails deprecations in production environment
- Host: GitHub
- URL: https://github.com/vasfed/deprecation_collector
- Owner: Vasfed
- License: mit
- Created: 2022-05-29T17:25:20.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-03T16:42:46.000Z (9 months ago)
- Last Synced: 2024-12-22T16:18:00.913Z (about 15 hours ago)
- Topics: collector, deprecation, production, rails, ruby
- Language: Ruby
- Homepage:
- Size: 114 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# DeprecationCollector
[![Gem Version](https://badge.fury.io/rb/deprecation_collector.svg)](https://badge.fury.io/rb/deprecation_collector)Collects ruby and rails deprecation warnings.
Designed to be suitable for use in production under load.(gem is a work-in-process, documentation will come later)
## Installation
Install the gem and add to the application's Gemfile by executing:
```sh
bundle add deprecation_collector
```## Usage
Add an initializer with configuration, like
```ruby
Rails.application.config.to_prepare do
DeprecationCollector.install do |instance|
instance.redis = Redis.new # default is $redis
instance.app_revision = ::GIT_REVISION
instance.count = false
instance.save_full_backtrace = true
instance.raise_on_deprecation = false
instance.write_interval = (::Rails.env.production? && 15.minutes) || 1.minute
instance.exclude_realms = %i[kernel] if Rails.env.production?
instance.print_to_stderr = true if Rails.env.development?
instance.print_recurring = false
instance.ignored_messages = [
"Ignoring db/schema_cache.yml because it has expired"
]
instance.context_saver do
# this will only be called for new deprecations, return value must be json-compatible
{ some: "custom", context: "for example request.id" }
end
instance.fingerprinter do |deprecation|
# this will be added to fingerprint; this will be ignored for recursive deprecations
"return_string_here"
end
end
end
```## Web UI
Mount the rack app into your routes:
```ruby
Rails.application.routes.draw do
require 'deprecation_collector/web'
mount DeprecationCollector::Web => '/deprecations', as: :deprecations
end
```usually it's a good idea to secure the ui in some way, you can use rails route constraint (actual check will depend on your app):
```ruby
Rails.application.routes.draw do
constraints(->(request) { request.session[:admin] }) do
require 'deprecation_collector/web'
mount DeprecationCollector::Web => '/deprecations', as: :deprecations
end
end
```## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/Vasfed/deprecation_collector.
## License
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).