Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/esminc/adhoq
Rails engine to generate instant reports from adhoc SQL query.
https://github.com/esminc/adhoq
rails-engine ruby
Last synced: 3 months ago
JSON representation
Rails engine to generate instant reports from adhoc SQL query.
- Host: GitHub
- URL: https://github.com/esminc/adhoq
- Owner: esminc
- License: mit
- Created: 2014-10-08T06:12:34.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2022-06-28T05:14:20.000Z (over 2 years ago)
- Last Synced: 2024-07-30T04:18:11.413Z (3 months ago)
- Topics: rails-engine, ruby
- Language: Ruby
- Size: 853 KB
- Stars: 109
- Watchers: 28
- Forks: 26
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog
- License: LICENSE.txt
Awesome Lists containing this project
README
Adhoq [![Build Status](https://travis-ci.org/esminc/adhoq.svg)](https://travis-ci.org/esminc/adhoq) [![Code Climate](https://codeclimate.com/github/esminc/adhoq/badges/gpa.svg)](https://codeclimate.com/github/esminc/adhoq) [![Test Coverage](https://codeclimate.com/github/esminc/adhoq/badges/coverage.svg)](https://codeclimate.com/github/esminc/adhoq/coverage)
====Rails engine to generate instant reports from adhoc SQL query.
![adhoq](https://cloud.githubusercontent.com/assets/3419/4556639/7f06340a-4ecb-11e4-87c4-b074580e77f5.png)
## Features
- Export ad-hoc SQL reports in some formats:
- .csv
- .json
- .xlsx
- Persist generated report as local file or in AWS S3
- over Rails 5.1.X
- Nice administration console with rails engine### Future planning
- [ ] Label data substitution
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'adhoq'
```And then execute:
$ bundle
Or install it yourself as:
$ gem install adhoq
## Usage
### As Rails engine
Install migrations
```sh
$ bundle exec rake adhoq:install:migrations
$ bundle exec rake db:migrate
```Mount it in `config/routes.rb`
```ruby
Rails.application.routes.draw do
root to: 'hi#show'mount Adhoq::Engine => "/adhoq"
end
```Edit initialization file in `config/initializers/adhoq.rb`
```ruby
Adhoq.configure do |config|
# if not set, use :on_the_fly.(default)
config.storage = [:local_file, Rails.root + './path/to/store/report/files']
config.authorization = ->(controller) { controller.signed_in? }
end
```See configuration example in [dummy app](https://github.com/esminc/adhoq/blob/master/spec/dummy/config/initializers/adhoq.rb).
Then restart server and try it out.
### As Plain old library (application export helper)
Adhoq also provides report generation from SQL string, not from mounted rails engine.
```ruby
execution = Adhoq::AdhocExecution.new(
'xlsx',
'SELECT "hello" AS name ,"English greeting message" AS description'
)Adhoq::Reporter.generate(execution) #=> report data
```Persistence is also available without engine via `Adhoq::Storage::SomeClass#store`.
Below is example that generating report and persist to in Rails application report method.```ruby
execution = Adhoq::AdhocExecution.new(
'xlsx',
'SELECT "hello" AS name ,"English greeting message" AS description'
)storage = Storage::S3.new(
'my-adhoq-bucket',
aws_access_key_id: 'key_id',
aws_secret_access_key: 'access_key'
)# generate report and store it to S3, returns `key` to get report data
key = storage.store('.xlsx') { Adhoq::Reporter.generate(execution) }...
storage.get(key) #=> report data
```## Contributing
1. Fork it ( https://github.com/esminc/adhoq/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request