activerecord-transactionable 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 303aa3641ecea594ad05589a09a3e9d6a12c31ba
4
- data.tar.gz: af04e048d3dbd066d5bd5fe917f49a6a421eba53
3
+ metadata.gz: 24f560d585c209ee87a623991f63e5cbea3ef511
4
+ data.tar.gz: c0faf6befe250becd30093df63419852a6de540e
5
5
  SHA512:
6
- metadata.gz: d6314257b6007bd563dd9dbb682cd1ffa415fe42e7edb337303aa5ae04156fc4977e4f3bb368151fd29675e2a9af7364cf2ebff2d21542b80a9a89ab9795801a
7
- data.tar.gz: fbb91d3c932c6739a0847018ce6a227beb61845109c8133542de71b3fe59e1dc4cae55cf0825632163a8d623e1150f8d3ea788ece283e8ba8fa15de460107c72
6
+ metadata.gz: 43fa3813380cd66fa20d8c6745a90b364bedb55e2984e2617dcd2d830b29dc2f9319e9f9c657a11657b10e53309df627491c71c67b7ef4e3583e5ad580fd0f8f
7
+ data.tar.gz: 62fef9f3377fcf9c1b778a3f5ea40ac3a388a7c6d0c9198dc83037fef472083b342c10941127949d8dcfbf0c390ea2b82d53509e540eeeab7d9c13bf1fca8f6a
data/README.md CHANGED
@@ -1,6 +1,23 @@
1
1
  # Activerecord::Transactionable
2
2
 
3
- Provides a method, `transaction_wrapper` at the class and instance levels that can be used instead of `ActiveRecord#transaction`.
3
+ Provides a method, `transaction_wrapper` at the class and instance levels that can be used instead of `ActiveRecord#transaction`. Enables you to do transactions properly, including with or without locking.
4
+
5
+ | Project | Activerecord::Transactionable |
6
+ |------------------------ | ----------------- |
7
+ | gem name | activerecord-transactionable |
8
+ | license | MIT |
9
+ | expert support | [![Get help on Codementor](https://cdn.codementor.io/badges/get_help_github.svg)](https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github) |
10
+ | download rank | [![Total Downloads](https://img.shields.io/gem/rt/activerecord-transactionable.svg)](https://rubygems.org/gems/activerecord-transactionable) |
11
+ | version | [![Gem Version](https://badge.fury.io/rb/activerecord-transactionable.png)](http://badge.fury.io/rb/activerecord-transactionable) |
12
+ | dependencies | [![Dependency Status](https://gemnasium.com/pboling/activerecord-transactionable.png)](https://gemnasium.com/pboling/activerecord-transactionable) |
13
+ | code quality | [![Code Climate](https://codeclimate.com/github/pboling/activerecord-transactionable.png)](https://codeclimate.com/github/pboling/activerecord-transactionable) |
14
+ | inline documenation | [![Inline docs](http://inch-ci.org/github/pboling/activerecord-transactionable.png)](http://inch-ci.org/github/pboling/activerecord-transactionable) |
15
+ | continuous integration | [![Build Status](https://secure.travis-ci.org/pboling/activerecord-transactionable.png?branch=master)](https://travis-ci.org/pboling/activerecord-transactionable) |
16
+ | test coverage | [![Coverage Status](https://coveralls.io/repos/pboling/activerecord-transactionable/badge.png)](https://coveralls.io/r/pboling/activerecord-transactionable) |
17
+ | homepage | [https://github.com/pboling/activerecord-transactionable][homepage] |
18
+ | documentation | [http://rdoc.info/github/pboling/activerecord-transactionable/frames][documentation] |
19
+ | live chat | [![Join the chat at https://gitter.im/pboling/activerecord-transactionable](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/pboling/activerecord-transactionable?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) |
20
+ | Spread ~♡ⓛⓞⓥⓔ♡~ | [on Coderbits](https://coderbits.com/pboling), [on Coderwall](http://coderwall.com/pboling) |
4
21
 
5
22
  Useful as an example of correct behavior for wrapping transactions.
6
23
 
@@ -79,9 +96,49 @@ result # => true, false or nil
79
96
 
80
97
  Meanings of `transaction_wrapper` return values:
81
98
 
82
- **nil** - ActiveRecord::Rollback was raised, and then caught by the transaction, and not re-raised; the transaction failed.
83
- **false** - An error was raised which was handled by the transaction_wrapper; the transaction failed.
84
- **true** - The transaction was a success.
99
+ * **nil** - ActiveRecord::Rollback was raised, and then caught by the transaction, and not re-raised; the transaction failed.
100
+ * **false** - An error was raised which was handled by the transaction_wrapper; the transaction failed.
101
+ * **true** - The transaction was a success.
102
+
103
+ ## Update Example
104
+
105
+ ```
106
+ @client = Client.find(params[:id])
107
+ transaction_result = @client.transaction_wrapper(lock: true) do
108
+ @client.assign_attributes(client_params)
109
+ @client.save!
110
+ end
111
+ if transaction_result
112
+ render :show, locals: { client: @client }, status: :ok
113
+ else
114
+ # Something prevented update
115
+ render json: @client.errors, status: :unprocessable_entity
116
+ end
117
+ ```
118
+
119
+ ## Reporting to SAAS Error Tools (like Raygun, etc)
120
+
121
+ Hopefully there will be a better integration at some point, but for now, somewhere in your code do:
122
+
123
+ ```
124
+ module SendToRaygun
125
+ def transaction_error_logger(**args)
126
+ super
127
+ if args[:error]
128
+ begin
129
+ Raygun.track_exception(args[:error])
130
+ Rails.logger.debug("Sent Error to Raygun: #{args[:error].class}: #{args[:error].message}")
131
+ rescue => e
132
+ Rails.logger.debug("Sending Error #{args[:error].class}: #{args[:error].message} to Raygun Failed with: #{e.class}: #{e.message}")
133
+ end
134
+ end
135
+ end
136
+ end
137
+
138
+ Activerecord::Transactionable::ClassMethods.class_eval do
139
+ prepend SendToRaygun
140
+ end
141
+ ```
85
142
 
86
143
  ## Development
87
144
 
@@ -93,3 +150,9 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
93
150
 
94
151
  Bug reports and pull requests are welcome on GitHub at https://github.com/pboling/activerecord-transactionable.
95
152
 
153
+ [semver]: http://semver.org/
154
+ [pvc]: http://docs.rubygems.org/read/chapter/16#page74
155
+ [railsbling]: http://www.railsbling.com
156
+ [peterboling]: http://www.peterboling.com
157
+ [documentation]: http://rdoc.info/github/pboling/activerecord-transactionable/frames
158
+ [homepage]: https://github.com/pboling/activerecord-transactionable
@@ -1,6 +1,10 @@
1
1
  require "activerecord/transactionable/version"
2
2
  require "active_model"
3
3
  require "active_record"
4
+ # apparently needed for Rails 4.0 compatibility with rspec, when
5
+ # this gem is loaded before the rails gem by bundler, as will happen when you
6
+ # keep your Gemfile sorted alphabetically.
7
+ require "active_record/validations"
4
8
 
5
9
  module Activerecord # Note lowercase "r" in Activerecord (different namespace than rails' module)
6
10
  # SRP: Provides an example of correct behavior for wrapping transactions.
@@ -1,5 +1,5 @@
1
1
  module Activerecord
2
2
  module Transactionable
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-transactionable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Boling
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-06 00:00:00.000000000 Z
11
+ date: 2017-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
118
  version: '0'
119
119
  requirements: []
120
120
  rubyforge_project:
121
- rubygems_version: 2.4.6
121
+ rubygems_version: 2.6.12
122
122
  signing_key:
123
123
  specification_version: 4
124
124
  summary: Do ActiveRecord transactions the right way.