Sha256: e0fe9c6c47c26c5ff7cd464f2d3a3c6ef291aacb7c4d7ae008edf3be45e29af9
Contents?: true
Size: 1.99 KB
Versions: 2
Compression:
Stored size: 1.99 KB
Contents
# IseqCollector This gem introduce several methdos to `ObjectSpace` to operate all of iseq objects in a process. ## Background Ruby (MRI) 2.2 and erlier, all of bytecode (iseq: instruction sequence) are `RubyVM::InstructionSequence` objects and we can touch them with `ObjectSpace.each_object` method. However Ruby 2.3 and later does not expose iseqs by `RubyVM::InstructionSequence`. You need to use `RubyVM::InstructionSequence.of(proc or method object)` to get `RubyVM::InstructionSequence` and it is impossible to get all of iseqs in a process. This gem provides `ObjectSpace.each_iseq`, `ObjectSpace.count_iseq` and `ObjectSpace.memsize_of_all_iseq` to get all of iseqs in a process for Ruby 2.3, 2.4. Ruby 2.5 will provide same feature in `objspace` external lib. ## Installation Add this line to your application's Gemfile: ```ruby gem 'iseq_collector' ``` And then execute: $ bundle Or install it yourself as: $ gem install iseq_collector ## Usage `require 'iseq_collector'` adds the following singleton methods to `ObjectSpace` module. * `ObjectSpace.each_iseq{|iseq| ...}` * `ObjectSpace.count_iseq #=> Integer` * `ObjectSpace.memsize_of_all_iseq #=> Integer` (this feature can be implemented by `ObjectSpace.each_iseq`) ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` 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 tags, 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/[USERNAME]/iseq_collector. ## License The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
iseq_collector-0.3.0 | README.md |
iseq_collector-0.2.0 | README.md |