0.70.1 (2021-12-10)
- Use require_name as the default package 'path' for builtins (bcb4367)
0.70.0 (2021-12-08)
0.69.0 (2021-12-01)
- Add labels for job creation and canceling (644fafe)
0.68.2 (2021-11-25)
- Missing gems will no longer attempt to be hooked (ac6cf26)
0.68.1 (2021-11-12)
- Support new style of
functions
syntax in appmap.yml (dca327c)
0.68.0 (2021-11-05)
- Require weakref (2f94f80)
0.67.1 (2021-11-02)
- Don't try to index AppMaps when inspecting (ca18861)
0.67.0 (2021-10-21)
- APPMAP_AUTOREQUIRE and APPMAP_INITIALIZE env vars to customize loading behavior (369807e)
- Perform GC before running each test (84c895e)
0.66.2 (2021-10-07)
- fix Travis for Ruby 3.0 (8ec7359)
- Fix warning of circular import (84d456d)
- Properly handle headers which aren't mangled by Rack (8e78e13)
- replace deprecated File.exists? method (80ce5b5)
- Validate presence package configuration (f478d6b)
0.66.1 (2021-09-29)
- Fix compilation on macOS with Xcode 13 (8c66e08)
0.66.0 (2021-09-28)
- Add option for explicit 'require' in function config (1cf6c2a)
- Builtin code such as Ruby Logger can be hooked via appmap.yml (779c9e5)
0.65.1 (2021-09-16)
0.65.0 (2021-09-14)
- Require fileutils as needed (790c3a8)
- Add support for Ruby 3.0, and drop Ruby 2.5 (eba14e1)
0.64.0 (2021-08-24)
- Show config file name in validation messages (95520f8)
0.63.0 (2021-08-24)
- Run yarn install --prod in ./release.sh (8cf73f0)
- Migrate from @appland/cli to @appland/appmap (81854e6)
0.62.1 (2021-08-06)
- Ensure that
node_modules
is present in the release.
0.62.0 (2021-07-21)
- Update @appland/cli version (e41fd65)
- Add 'depends' Rake tasks (a2e6793)
- Add standalone appmap-index command (ee497c9)
- Update @appland/cli to 1.3.0 (5821df3)
- User no longer has to supply the command to run tests (7ac2fed)
0.61.1 (2021-07-16)
- add
DISABLE_SPRING
flag by default (51ffd76)
0.61.0 (2021-07-14)
- check if rails is present in
appmap-agent-validate
(b584c2d)
0.60.0 (2021-07-08)
- add agent-setup-validate command (d9b3bc1)
- validate ruby version (+ better config loading validation) (1756e6c)
0.59.2 (2021-07-08)
- Remove improper reliance on Rails 'try' (c6b5b16)
0.59.1 (2021-07-08)
- Events may be constructed in stages (b0b23f5)
0.59.0 (2021-07-07)
- define commands as objects (1b43203)
0.58.0 (2021-07-06)
- Add
test_commands
sections toappmap-agent-status
executable (4cd8fe5)
0.57.1 (2021-07-02)
- rename agentVersionPorject to agentVersion (905fc5d)
0.57.0 (2021-06-29)
- Update init command to return JSON (1f93e89)
0.56.0 (2021-06-28)
- add appmap-agent-status executable with config/project properties (043f845)
0.55.0 (2021-06-28)
- Avoid calling == (f30ed9f)
- Log dynamic loading of appmap helpers at info level (15dcd3c)
- Remove dynamic loading of rake and rspec helpers (6790970)
- APPMAP_PROFILE_DISPLAY_STRING and APPMAP_OBJECT_STRING (3f5daa8)
- Package name to require can be specified when hooking a gem (fcc5eb6)
- Profile packaging hooking (c020a31)
0.54.4 (2021-06-27)
- Only allow trace_end once per location (10e48cf)
0.54.3 (2021-06-25)
- Get deployment working with packaging of NodeJS code (733c5b8)
0.54.2 (2021-06-25)
- Require appmap/railtie if Rails is defined (66b4cbd)
0.54.1 (2021-06-25)
- Add missing imports and remove deprecation warnings (f1cb087)
- Workaround Ruby bug in 2.7.3 with kwrest (26e34ca)
0.54.0 (2021-06-24)
- Handle new behavior in RSpec ExampleGroup (176d0df)
- Add swagger rake task (0aaae49)
0.53.0 (2021-06-23)
- appmap-agent-setup as a separate command not using GLI library (f0eedb7)
0.52.1 (2021-06-23)
- Better project name guesser (d22f379)
0.52.0 (2021-06-22)
- Bundle NPM package @appland/cli with this gem (945e28c)
0.51.3 (2021-06-22)
- Remove outdate lore, command, and algorithm code (d899989)
0.51.2 (2021-06-22)
- Be less verbose when logging config messages (fba2fd0)
- Method objects must support eql? and hash to ensure they are unique in a Set (f4d5b11)
- Require rails, then appmap/railtie (07967a1)
- Use a hybrid strategy to auto-requiring appmap modules (6fb09b8)
0.51.1 (2021-06-21)
- Add missing require 'yaml' (1187a02)
0.51.0 (2021-06-21)
- Provide default appmap.yml settings (7fa8159)
0.50.0 (2021-06-17)
- Remove appmap configuration in test cases which now occurs automatically (7391c4c)
- Direct minitest and rspec startup messages to the Rails log, when available (15f6444)
- Enroll railtie, rspec, and minitest helpers automatically (1709374)
- railtie enrolls the app in remote recording (3a1f8aa)
0.49.0 (2021-06-16)
- Add refinement to the labels (6a93396)
0.48.2 (2021-05-26)
- Correct the method-hooking logic to capture some missing model methods (be529bd)
0.48.1 (2021-05-25)
- Account for bundle path when normalizing source path (095c278)
- Scan exception messages for non-UTF8 characters (3dcaeae)
0.48.0 (2021-05-19)
- Hook the code only when APPMAP=true (dd9e383)
- Remove server process recording from doc and tests (383ba0a)
0.47.1 (2021-05-13)
- Add the proper template function hooks for Rails 6.0.7 (175f489)
0.47.0 (2021-05-13)
- Emit swagger-style normalized paths instead of Rails-style ones (5a93cd7)
0.46.0 (2021-05-12)
- Record view template rendering events and template paths (973b258)
0.45.1 (2021-05-04)
- Optimize instrumentation and load time (db4a8ce)
0.45.0 (2021-05-03)
- Properly name status_code in HTTP server response (556e87c)
- Record http_client_request and http_client_response (1db32ae)
- Update AppMap format version to 1.5.0 (061705e)
- build: add deployment via
semantic-release
with automatic publication to rubygems (9f183de)
- Support recording and labeling of indivudal functions via
functions:
section in appmap.yml. - Remove deprecated
exe/appmap
. - Add
test_status
andexception
fields to AppMap metadata. - Write AppMap file atomically, by writing to a temp file first and then moving it into place.
- Remove printing of
Inventory.json
file. - Remove source code from
classMap
.
- Record
name
andclass
of each entry in Hash-like parameters, messages, and return values. - Record client-sent headers in HTTP server request and response.
- Record HTTP server request
mime_type
. - Record HTTP server request
authorization
.
- Add missing require
set
. - Check
cls.respond_to?(:singleton_class)
, since it oddly, may not.
- Remove
feature_group
andfeature
metadata from minitest and RSpec AppMaps. - Add
metadata.source_location
.
- Don't rely on
gemspec.source_paths
to list all the source locations in a gem. Hook any code that's loaded from inside thegem_dir
.
- Make best effort to ensure that class name is not
null
in the appmap.json. - Don't try and instrument gems which are a dependency of the this gem.
- Fix a nil exception when applying the exclude list to builtins.
- Adjust some label names to match
provider.*
,format.*
. - Add global
exclude
list to appmap.yml which can be used to definitively exclude specific classes and methods.
- Parse source code comments into function labels.
- Correctly recognize normalized path info for subengines.
- Support Ruby 2.7.
- Remove support for Rails 4.
- Stop recommending
-t appmap
argument forrspec
.
- Recognize and record
normalized_path_info
in Rails applications, per 1.4 AppMap format version.
- Package configuration can be
shallow
, in case which only the initial entry into the package is recorded.
- Fix ParameterFilter deprecation warning.
- Fix parameter mapping with keyword and rest arguments.
- Capture method source and comment.
- appmap.yml package definition may specify
gem
. - Skip loading the railtie if
APPMAP_INITIALIZE
environment variable is set tofalse
.
- Make sure
MethodEvent#display_string
works when the value's#to_s
and/or#inspect
methods have problems.
- Take out hooking of
IO
andLogger
methods. - Enable logging if either
APPMAP_DEBUG
orDEBUG
istrue
.
- Provide a custom display string for files and HTTP requests.
- Report
mime_type
on HTTP response.
- Only warn once about problems determining database version for an ActiveRecord connection.
- Ensure that hooking a method doesn't change its arity.
- Make sure
AppMap:Rails::SQLExaminer::ActiveRecordExaminer.server_version
only callsActiveRecord::Base.connection.database_version
if it's available. - Fix
AppMap:Rails::SQLExaminer::ActiveRecordExaminer.database_type
returns:postgres
in all supported versions of Rails.
- Fix a crash in
singleton_method_owner_name
that occurred if__attached__.class
returned something other than aModule
or aClass
.
- Add an extension that gets the name of the owner of a singleton method without calling
any methods that may have been redefined (e.g.
#to_s
or.name
).
- Ensure that capturing events doesn't change the behavior of a hooked method that uses
Time.now
. For example, if a test expects thatTime.now
will be called a certain number of times by a hooked method, that expectation will now be met. - Make sure
appmap/cucumber
requiresappmap
.
- Records builtin security and I/O methods from
OpenSSL
,Net
, andIO
.
- Added command
AppMap.open
to open an AppMap in the browser.
- Removes un-necessary fields from
return
events.
- Add the ability to hook methods by default, and optionally add labels to them in the
classmap. Use it to hook
ActiveSupport::SecurityUtils.secure_compare
.
- Add support for Minitest.
- Add
lib/appmap/record.rb
, which can berequire
d to record the rest of the process.
- Fix the
defined_class
recorded in an appmap for an instance method included in a class at runtime. - Only include the
static
attribute oncall
events in an appmap. Determine its value based on the receiver of the method call.
- Change behavior of AppMap.record to return a complete AppMap as a Hash.
- Update README with information about recording Cucumber tests.
- AppMap.initialize automatically runs when
AppMap
is required, unless disabled by environment variableAPPMAP_INITIALIZE=false
. - AppMap.hook no longer takes a
configuration
argument. - Add AppMap::Util.scenario_filename.
- Add AppMap.record to programatically record and capture an AppMap of a Ruby block.
- Fix a bug that caused duplicate entries in the list of frameworks that appear
in the
metadata
section of an appmap.
- appmap upload is removed. Upload functionality has been moved to the AppLand CLI.
- Stop checking a whitelist to see if each SQL query should be recorded. Record all queries.
- Ensure that caught exceptions are re-raised.
- Add safety around indexing potentially nil backtrace locations.
- Reports
exceptions
in function return attributes.
- Fixes an issue which prevented a remote recording from returning scenario data successfully.
- Remote recording routes now return descriptive status codes as intended.
- Remote recording routes now have the correct
Content-Type
header.
Internals of appmap-ruby
have been changed to record each method event using alias_method
,
rather than TracePoint
. Performance is much better as a result.
WARNING Breaking changes
- Rack apps no longer generate
http_server_request
events. - appmap inspect has been removed.
appmap-ruby
no longer parses the source tree. Instead, it observes the methods as they are loaded by the VM. So, to get a class map, you have to create a recording. TheRSpec
recorder still prints an inventory toInventory.appmap.json
when it exits. The class map in this file contains every class and method which was loaded by any of the tests.
- appmap stats command added.
- RSpec recorder generates an "inventory" (AppMap with classMap, without events) named
Inventory.appmap.json
. - appmap inspect generates an inventory AppMap which includes
version
,metadata
, andclassMap
. Previously, the file output by this command was the class map represented as an array.
- Scenario data includes
recorder
andclient
info, describing how the data was recorded.
Updated to AppMap file format version 1.2.
- Event
message
is now an array of parameter objects. - The value of each
appmap:
tags in an RSpec is recorded as alabel
in the AppMap file metadata. layout
is removed from AppMap file metadata.
- RSpec feature and feature group names can be inferred from example group and example names.
- Stop using
ActiveSupport::Inflector.transliterate
, since it can cause exceptions. - Handle StandardError which occurs while calling
#inspect
of an object.
- Now tested with Rails 4, 5, and 6.
- Now tested with Ruby 2.5 and 2.6.
explain_sql
is no longer collected.appmap/railtie
is automatically required when running in a Rails environment.
WARNING Breaking changes
- appmap upload expects arguments
user
andorg
. - appmap upload receives and retransmits the scenario batch id
- assigned by the server.
WARNING Breaking changes
- Record button removed. Frontend interactions are now recorded with a browser extension.
As a result,
AppMap::Middleware::RecordButton
has been renamed toAppMap::Middleware::RemoteRecording
- Record button moved to the bottom of the window.
WARNING Breaking changes
- AppMap version updated to 1.1
- Event
parameters
are reported as an array rather than a map, so that parameter order is preserved. - Event
receiver
reports thereceiver/this/self
parameter of each method call.
- RSpec recorder won't try to modify a frozen string.
- SQL queries are reported for SQLite.
- SQL queries are reported for ActiveRecord.
- Record button integrates into any HTML UI and provides a button to record and upload AppMaps.
- Information about
language
andframeworks
is provided in the AppMapmetadata
.
AppMap::Algorithm::PruneClassMap
prunes a class map so that only functions, classes and packages which are referenced by some event are retained.
appmap/rspec
only records trace events which happen during an example block.before
andafter
events are excluded from the AppMap.appmap/rspec
exportsfeature
andfeature_group
attributes to the AppMapmetadata
section.
appmap upload
accepts multiple arguments, to upload multiple files in one command.
appmap/railtie
is provided to integrate AppMap recording into Rails apps.- Use
gem :appmap, require: %w[appmap appmap/railtie]
to activate. - Set Rails configuration setting
config.appmap.enabled = true
to enable recording of the app via the Railtie, and to enable recording of RSpec tests viaappmap/rspec
. - In a non-Rails environment, set
APPMAP=true
to to enable recording of RSpec tests.
- Use
- SQL queries are reported as AppMap event
sql_query
data. self
attribute is removed fromcall
events.
- Web server requests and responses through WEBrick are reported as AppMap event
http_server_request
data. - Rails
params
hash is reported as an AppMap eventmessage
data. - Rails
request
is reported as an AppMap eventhttp_server_request
data.
- RSpec test recorder is added.
- 'inspect', 'record' and 'upload' commands are converted into a unified 'appmap' command with subcommands.
- Config file name is changed from .appmap.yml to appmap.yml.
appmap.yml
configuration format is updated.
Initial release.