Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
)
  • Loading branch information
TheRealAgentK authored Jan 12, 2025
1 parent 03818c5 commit fa8e254
Show file tree
Hide file tree
Showing 74 changed files with 2,103 additions and 1,632 deletions.
3 changes: 3 additions & 0 deletions .cfconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"debuggingEnabled" : true
}
62 changes: 62 additions & 0 deletions .cfformat.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"array.empty_padding": false,
"array.padding": true,
"array.multiline.min_length": 40,
"array.multiline.element_count": 4,
"array.multiline.leading_comma.padding": true,
"array.multiline.leading_comma": false,
"alignment.consecutive.assignments": true,
"alignment.consecutive.properties": true,
"alignment.consecutive.params": true,
"brackets.padding": true,
"comment.asterisks": "align",
"binary_operators.padding": true,
"for_loop_semicolons.padding": true,
"function_call.empty_padding": false,
"function_call.padding": true,
"function_call.multiline.leading_comma.padding": true,
"function_call.casing.builtin": "cfdocs",
"function_call.casing.userdefined": "camel",
"function_call.multiline.element_count": 2,
"function_call.multiline.leading_comma": false,
"function_call.multiline.min_length": 40,
"function_declaration.padding": true,
"function_declaration.empty_padding": false,
"function_declaration.multiline.leading_comma": false,
"function_declaration.multiline.leading_comma.padding": true,
"function_declaration.multiline.element_count": 2,
"function_declaration.multiline.min_length": 40,
"function_declaration.group_to_block_spacing": "spaced",
"function_anonymous.empty_padding": false,
"function_anonymous.group_to_block_spacing": "spaced",
"function_anonymous.multiline.element_count": 2,
"function_anonymous.multiline.leading_comma": false,
"function_anonymous.multiline.leading_comma.padding": true,
"function_anonymous.multiline.min_length": 40,
"function_anonymous.padding": true,
"indent_size": 4,
"keywords.block_to_keyword_spacing": "spaced",
"keywords.group_to_block_spacing": "spaced",
"keywords.padding_inside_group": true,
"keywords.spacing_to_block": "spaced",
"keywords.spacing_to_group": true,
"keywords.empty_group_spacing": false,
"max_columns": 140,
"metadata.multiline.element_count": 3,
"metadata.multiline.min_length": 40,
"method_call.chain.multiline": 3,
"newline": "os",
"property.multiline.element_count": 4,
"property.multiline.min_length": 40,
"parentheses.padding": true,
"strings.quote": "double",
"strings.attributes.quote": "double",
"struct.separator": " : ",
"struct.padding": true,
"struct.empty_padding": false,
"struct.multiline.leading_comma": false,
"struct.multiline.leading_comma.padding": true,
"struct.multiline.element_count": 2,
"struct.multiline.min_length": 40,
"tab_indent": false
}
6 changes: 2 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
.*
!.gitignore
*.iml
/server.json
# Testbox dependency
/testbox
42 changes: 40 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,43 @@
History
=======
History and Plan
================

2.1+ Plan

- Making Raygun4CFML a Coldbox module OR building a Coldbox module wrapper using Raygun4CFML as a dependency.
- Add breadcrumbs (#46)

2.0.1 Plan

- Add support for response.statusCode (#48)
- Integration and adaptation to Coldbox error reporting, adding CB HMVC app/API samples
- Cleanup `legacy` directory

2.0.0 (Jan 12 2025)

- Fixed issue with Boxlang CGI-Scope
- Added Lucee 5.3 support back-in and provided test server setup

2.0.0-alpha (January 4 2025)

- Complete re-write, breaking API changes and changes in essential functionality:
- Raygun4CFML is now entirely written in CFML script.
- The original stack trace is now tracked in the stack trace field, not the CFML `TagContext`. The latter is now in the exception's data section, where available.
- There is now proper support for nested exceptions (based on existence of `cause` field).
- Content filtering (`RaygunContentFilter`), user identifier (`RaygunIdentifierMessage`) and user custom data (`RaygunUserCustomData`) are now using the builder-pattern approach to be setup for `RaygunClient`.
- Size of raw data can be configured (#42).
- SQL exception tracking has been improved (#44).
- Constants are now tracked in their own static component and some can be overwritten by `RaygunSettings`.
- `ProductCheck` and `RaygunInternalTools` are now static components.
- CFML engine is being track in Raygun's Environment tab now.
- Samples in `/samples` have been reworked.
- Unit/Integration tests are in `/tests/specs`.
- Code formatting via `run-script format` was added for Commandbox.
- Project contains custom CFML server declarations for testing on ports (port 9191 upwards).
- All files have improved code documentation.
- Engine-specific changes:
- Support for Adobe ColdFusion *before* ACF 2021 has been stopped. ACF 2018 and earlier are - as CFML engines go - not supported any more, please upgrade your platforms.
- Support for any versions of Railo has been stopped. Lucee support is set to Lucee 5.4 and newer, but this might be extended to 5.3 in a future 2.0.0 pre-release.
- Support for Boxlang 1.0.0 has been added.

1.7.0 (November 14 2024)

Expand Down
2 changes: 1 addition & 1 deletion LICENSE → LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright 2013-2022 Kai Koenig, Ventego Creative Ltd
Copyright 2013-2025 Kai Koenig, Ventego Creative Ltd

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Expand Down
131 changes: 60 additions & 71 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,116 +1,105 @@
raygun4cfml
Raygun4CFML
===========

Raygun Crash Reporting client for CFML.
Raygun4CFML is a client library for integrating Raygun's Crash Reporting service with your CFML applications. It enables you to send error reports and crash data to Raygun for tracking and analysis.

Supported:
Supported Platforms:

Adobe CF 2018+
Lucee 5+
- Adobe ColdFusion 2021+
- Lucee 5.3+
- Boxlang 1+

Current Version: 1.7.0 (November 14 2024)
Current Version: 2.0.0

Dependencies:
## Active development

- Testbox (for running unit and BDD tests only)
2.0.0 is a complete rewrite of the project and is ready-to-use for the 3 major CFML engines and their crash reports.

## Library organisation
Please be aware that no testing and work has *yet* gone into framework-specific crash reports, e.g. a deeper integration with Coldbox HVMC, Fusebox, CF on Wheels etc. This will be added over time in future releases.

`/src` contains the source code. The package structure is `nz.co.ventego-creative.co.nz.raygun4cfml` but the library's components themselves are independent of the package path. Therefore you can use the library in multiple ways:
## Dependencies

- Put the content of `/src` into your webroot and instantiate `RaygunClient` through something like the following:
- Testbox (used as a development dependency for local and CI testing)

```
raygun = createObject("component","nz.co.ventego-creative.raygun4cfml.RaygunClient").init(
apiKey = "YOURAPIKEYHERE"
);
```
- Put the contents of `/src` into any other place of your choice and create a mapping to `/nz` in your server administrator or through code and then use the instantiation code as above.
## Installation and Setup

- Put the contents of the `raygun4cfml` directory into a place of your choice where your CFML has some sort of a mapping pointing towards and and just instantiate `RaygunClient` like this:
```
raygun = createObject("component","RaygunClient").init(
apiKey = "YOURAPIKEYHERE"
);
```
`/samples` contains a set of files that show how the library can be used in your code through a global error handler as well as a contributed example for ColdBox 3.6
### Using CommandBox (Preferred Method)

`/tests` contains manual tests and more samples as well as a structure (but no tests at this stage) for Testbox unit and BDD tests.
1. **Install via CommandBox:**

## Getting and Using raygun4cfml
To install the latest version from the master repository, use:
```
box install raygun4cfml
```

### Option 1 (preferred):
To install a specific release or tag, use:
```
box install git://github.com/MindscapeHQ/raygun4cfml.git#{tagname}
```

Use Commandbox and Forgebox to get the library and then follow the ideas outlined in 'Library organisation' for further setup.
Alternatively, you can use:
```
box install MindscapeHQ/raygun4cfml#{tagname}
```

To get the latest from the master repository
2. **Setup:**

```
box install raygun4cfml
```
After installation, follow the setup instructions in the 'Library Usage' section below.

To install a specific release or tag:
### Manual Installation

```
box install git://github.com/MindscapeHQ/raygun4cfml.git#{tagname}
```
1. **Clone or Download:**

Example tag names are `1.1.0`, `1.0.2.0`, `1.0.1.0` etc. Please check the list of tags on Github. Be aware that if you install any tag from before I introduced support for Commandbox and Forgebox there won't be a `box.json` file and therefore Commandbox will give you a warning as well as there won't be any dependency management for such an installation of the library.
Shortcut for the above:
```
box install MindscapeHQ/raygun4cfml#{tagname}
```
- Fork and clone the repository to your local system, or download a zip file of the current content or a specific release/tag.

To get the latest from my development repository (be warned, this might contain all sorts of untested code):
```
box install TheRealAgentK/raygun4cfml
```
2. **Move Files:**

### Option 2:
- Move the `src` and/or `tests` directories to locations suitable for your system.

Fork and clone the repo to your local system. Move the src/test directories into places of your choice and suitable for your system and follow the ideas outlined in 'Library organisation'.
3. **Dependencies:**

### Option 3:
- Note that manual installation will not automatically resolve dependencies.

Download a zip file containing the current content of the repo or a release/tag of your choice. Unzip the resulting file. Move the src/test directories into places of your choice and suitable for your system and follow the ideas outlined in 'Library organisation'.
## Library Usage

#### Notes:
### Initializing RaygunClient

(1) Options 2 and 3 will not fulfill any necessary dependencies, you're on your own.
The `RaygunClient` is the primary component for sending error reports. You can initialize it in several ways depending on your setup:

## Version History
See CHANGELOG.md for further information.
## General Notes
- **Webroot Setup:**

(1) All releases onwards from 0.5.0.0 will break your code if you've used 0.4 and older before and have used `customRequestData`.
Place the contents of `/src` in your webroot and initialize the `RaygunClient` as follows:
```cfml
raygun = createObject("component", "com.raygun.RaygunClient").init(
apiKey = "YOURAPIKEYHERE"
);
```

(2) If you are using the ACF Administrator setting: "Prefix serialized JSON with..." with anything else but the default prefix of `//`, the library will not work.
- **Custom Mapping:**

(3) Version 1.1.0 and newer will not work on Adobe ColdFusion 8 and most likely not on Railo 3 (the latter not tested).
Place the contents of `/src` in a directory of your choice and create a mapping to `/com` in your server administrator or through code. Them, initialise as suitable for the mapping.

(4) Version 1.7.0 and newer will most likely not work with Adobe ColdFUsion 2016 and Railo/Lucee 4.x.

(5) On newer Java versions (>11), there is no default access to Java Memory Management unless you add the following argument to your JVM configuration: `--add-opens java.management/sun.management=ALL-UNNAMED`
### Using the Library

## How to contribute
- **Error Reporting:**

Note: Please be aware that raygun4cfml is not an official Raygun library and not maintained by Raygun stuff. See [LICENSE](LICENSE) for more details.
Once initialized, use the `RaygunClient` to send error reports with the `.send()` function. Refer to the `/samples` directory for examples.

The main repository of this project is https://github.com/MindscapeHQ/raygun4cfml. Please fork from there, create a local develop or feature branch and merge changes back to your local master branch to submit a pull request. Even better, get in touch with me on Twitter (@AgentK) or here on Github before you undertake any work so that it can be coordinated with what I'm doing.
Most of the active development happens in my own fork: https://github.com/TheRealAgentK/raygun4cfml - feel free to peek around in there.
- **Testing:**

The `/tests` directory contains structures for Testbox unit and integration tests. Use these to validate your integration.

## Version History

For detailed version history, refer to the `CHANGELOG.md` file.

## Contribution Guidelines

Raygun4CFML is not an official Raygun library and is not maintained by Raygun staff.

Contributions are welcome.

Please fork the main repository at https://github.com/MindscapeHQ/raygun4cfml, create a feature branch, and submit a pull request. Coordination via X (@AgentK) or GitHub (https://github.com/TheRealAgentK/) is encouraged before starting any work.

For more active development, visit my development fork at https://github.com/TheRealAgentK/raygun4cfml.
48 changes: 38 additions & 10 deletions box.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name":"raygun4cfml",
"version":"1.7.0",
"location":"MindscapeHQ/raygun4cfml#1.7.0",
"version":"2.0.0",
"location":"MindscapeHQ/raygun4cfml#2.0.0",
"author":"Kai Koenig <[email protected]>",
"homepage":"https://github.com/MindscapeHQ/raygun4cfml/",
"documentation":"https://github.com/MindscapeHQ/raygun4cfml/blob/master/README.md",
Expand All @@ -12,20 +12,48 @@
"bugs":"https://github.com/MindscapeHQ/raygun4cfml/issues",
"slug":"raygun4cfml",
"shortDescription":"Provides integration with the Raygun CrashReporting API",
"description":"API provider to send error information to Raygun crash reporting for tracking and analysis",
"instructions":"Install this module and follow the guidelines in README.me as well as in /samples and /tests/test_manual",
"changelog":"https://github.com/MindscapeHQ/raygun4cfml/blob/master/changelog.md",
"keywords":["error","errortracking","bugs","bugtracking","raygun","raygun.io"],
"description":"API provider to send error information to Raygun crash reporting for tracking and analysis.",
"instructions":"Install this module and follow the guidelines in README.me as well as in /samples.",
"changelog":"https://github.com/MindscapeHQ/raygun4cfml/blob/master/CHANGELOG.md",
"keywords":[
"error",
"error tracking",
"bugs",
"bug tracking",
"raygun",
"crash reporting",
"error reporting"
],
"engines":[
{"type":"lucee","version":">=5.0.0"},
{"type":"adobe","version":">=2018.0.0"}
{
"type":"lucee",
"version":">=5.3.0"
},
{
"type":"adobe",
"version":">=2021.0.0"
},
{
"type":"boxlang"
}
],
"type":"logging",
"projectURL":"https://github.com/MindscapeHQ/raygun4cfml/",
"license":[
{"type":"Apache 2.0","URL":"http://www.apache.org/licenses/LICENSE-2.0"}
{
"type":"Apache 2.0",
"URL":"http://www.apache.org/licenses/LICENSE-2.0"
}
],
"devDependencies":{
"testbox":"x"
"testbox":"6"
},
"scripts":{
"format":"cfformat run src/**/*.cfc,tests/**/*.cfc,tests/**/*.cfm,samples/**/*.cfc,samples/**/*.cfm --overwrite",
"format:watch":"cfformat watch src/**/*.cfc,tests/**/*.cfc,tests/**/*.cfm,samples/**/*.cfc,samples/**/*.cfm --overwrite",
"format:check":"cfformat check src/**/*.cfc,tests/**/*.cfc,tests/**/*.cfm,samples/**/*.cfc,samples/**/*.cfm"
},
"installPaths":{
"testbox":"testbox/"
}
}
File renamed without changes.
19 changes: 19 additions & 0 deletions samples/Application.cfc
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/**
* Application.cfc - Main application configuration component
* Handles core framework setup and request lifecycle management
*/
component {

// Map the /com directory to allow component resolution from the src folder
// This enables cleaner imports without needing full file paths
this.mappings = { "/com" : expandPath( "/src/com" ) };

/**
* Runs at the start of each request
* Sets up the Raygun error tracking API key for exception monitoring
*/
public void function onRequestStart() {
variables.RAYGUNAPIKEY = "<YOUR API KEY>";
}

}
Loading

0 comments on commit fa8e254

Please sign in to comment.