hairtrigger 0.2.17 → 0.2.18
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 +4 -4
- data/README.md +10 -10
- data/lib/hair_trigger/version.rb +1 -1
- data/spec/adapter_spec.rb +2 -2
- data/spec/spec_helper.rb +5 -3
- metadata +7 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c525b3a5e80e73dfe8dfa9d1b6e8cd3f0c9636b
|
4
|
+
data.tar.gz: 4d02307f955177263f83b9412221e3fa2bcab7da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5631a904515f61388c15cdd07dad116796f9dd731a8e20e077251ef9c3432351ae82ee34d4ac8c7dfdbe850f1ef17626393796846dc7033ac8c754f83f392cc6
|
7
|
+
data.tar.gz: a90b316838dee6303756ded7833f21905f716699633aba8c50f8769af2f84b3d1fee286870fd8d3f116f7dd043ed64fcb797d3199d2df7de3ab3b6cad4987c9f
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# HairTrigger
|
2
|
-
[<img src="https://secure.travis-ci.org/jenseng/hair_trigger.
|
2
|
+
[<img src="https://secure.travis-ci.org/jenseng/hair_trigger.svg?branch=master" />](http://travis-ci.org/jenseng/hair_trigger)
|
3
3
|
|
4
4
|
HairTrigger lets you create and manage database triggers in a concise,
|
5
5
|
db-agnostic, Rails-y way. You declare triggers right in your models in Ruby,
|
@@ -106,7 +106,7 @@ Example: `trigger.after(:update).nowrap { "tsvector_update_trigger(...)" }`
|
|
106
106
|
|
107
107
|
#### declare
|
108
108
|
PostgreSQL-specific option for declaring variables for use in the
|
109
|
-
trigger function. Declarations should be
|
109
|
+
trigger function. Declarations should be separated by semicolons, e.g.
|
110
110
|
|
111
111
|
```ruby
|
112
112
|
trigger.after(:insert).declare("user_type text; status text") do
|
@@ -197,22 +197,22 @@ rolling back.
|
|
197
197
|
|
198
198
|
#### Manual triggers and :compatibility
|
199
199
|
|
200
|
-
As bugs are fixed and features are implemented in
|
200
|
+
As bugs are fixed and features are implemented in HairTrigger, it's possible
|
201
201
|
that the generated trigger SQL will change (this has only happened once so
|
202
|
-
far). If you upgrade to a newer version of
|
202
|
+
far). If you upgrade to a newer version of HairTrigger, it needs a way of
|
203
203
|
knowing which previous version generated the original trigger. You only need
|
204
204
|
to worry about this for manual trigger migrations, as the model ones
|
205
205
|
automatically take care of this. For your manual triggers you can either:
|
206
206
|
|
207
207
|
* pass `:compatibility => x` to your `create_trigger` statement, where x is
|
208
|
-
whatever HairTrigger::Builder.
|
208
|
+
whatever HairTrigger::Builder.compatibility is (1 for this version).
|
209
209
|
* set `HairTrigger::Builder.base_compatibility = x` in an initializer, where
|
210
|
-
x is whatever HairTrigger::Builder.
|
210
|
+
x is whatever HairTrigger::Builder.compatibility is. This is like doing the
|
211
211
|
first option on every `create_trigger`. Note that once the compatibility
|
212
212
|
changes, you'll need to set `:compatibility` on new triggers (unless you
|
213
213
|
just redo all your triggers and bump the `base_compatibility`).
|
214
214
|
|
215
|
-
If you upgrade to a newer version of
|
215
|
+
If you upgrade to a newer version of HairTrigger and see that the SQL
|
216
216
|
compatibility has changed, you'll need to set the appropriate compatibility
|
217
217
|
on any new triggers that you create.
|
218
218
|
|
@@ -231,7 +231,7 @@ make it trigger-aware. A newly generated schema.rb will contain:
|
|
231
231
|
As long as you don't delete old migrations and schema.rb prior to running
|
232
232
|
`rake db:schema:dump`, the result should be what you expect (and portable).
|
233
233
|
If you have deleted all trigger migrations, you can regenerate a new
|
234
|
-
baseline for model triggers via rake db:generate_trigger_migration
|
234
|
+
baseline for model triggers via `rake db:generate_trigger_migration`.
|
235
235
|
|
236
236
|
## Testing
|
237
237
|
|
@@ -262,7 +262,7 @@ when you attempt to run the migration.
|
|
262
262
|
|
263
263
|
Generation warnings are similar but they don't stop the trigger from being
|
264
264
|
generated. If you do something adapter-specific supported by your database,
|
265
|
-
you will still get a warning ($stderr) that your trigger is not portable. You
|
265
|
+
you will still get a warning (to $stderr) that your trigger is not portable. You
|
266
266
|
can silence warnings via `HairTrigger::Builder.show_warnings = false`
|
267
267
|
|
268
268
|
You can validate your triggers beforehand using the `Builder#validate!` method.
|
@@ -294,7 +294,7 @@ existing trigger if you wish to redefine it.
|
|
294
294
|
|
295
295
|
## Gotchas
|
296
296
|
|
297
|
-
* As is the case with ActiveRecord::Base.update_all or any direct SQL you do,
|
297
|
+
* As is the case with `ActiveRecord::Base.update_all` or any direct SQL you do,
|
298
298
|
be careful to reload updated objects from the database. For example, the
|
299
299
|
following code will display the wrong count since we aren't reloading the
|
300
300
|
account:
|
data/lib/hair_trigger/version.rb
CHANGED
data/spec/adapter_spec.rb
CHANGED
@@ -48,12 +48,12 @@ describe "adapter" do
|
|
48
48
|
context "mysql" do
|
49
49
|
let(:adapter) { :mysql }
|
50
50
|
it_behaves_like "mysql"
|
51
|
-
end
|
51
|
+
end if ADAPTERS.include? :mysql
|
52
52
|
|
53
53
|
context "mysql2" do
|
54
54
|
let(:adapter) { :mysql2 }
|
55
55
|
it_behaves_like "mysql"
|
56
|
-
end
|
56
|
+
end if ADAPTERS.include? :mysql2
|
57
57
|
|
58
58
|
context "postgresql" do
|
59
59
|
let(:adapter) { :postgresql }
|
data/spec/spec_helper.rb
CHANGED
@@ -5,11 +5,13 @@ require 'hair_trigger'
|
|
5
5
|
require 'yaml'
|
6
6
|
|
7
7
|
CONFIGS = YAML.load_file(File.expand_path(File.dirname(__FILE__) + '/../database.yml'))[ENV["DB_CONFIG"] || "test"]
|
8
|
-
ADAPTERS = [:
|
8
|
+
ADAPTERS = [:mysql2, :postgresql, :sqlite3]
|
9
|
+
ADAPTERS.unshift :mysql if ActiveRecord::VERSION::STRING < "5"
|
9
10
|
|
10
11
|
def each_adapter
|
11
12
|
require 'active_record/connection_adapters/postgresql_adapter'
|
12
|
-
require 'active_record/connection_adapters/mysql_adapter'
|
13
|
+
require 'active_record/connection_adapters/mysql_adapter' if ADAPTERS.include? :mysql
|
14
|
+
require 'active_record/connection_adapters/mysql2_adapter'
|
13
15
|
require 'active_record/connection_adapters/sqlite3_adapter'
|
14
16
|
require 'mysql2'
|
15
17
|
|
@@ -54,7 +56,7 @@ shared_context "hairtrigger utils" do
|
|
54
56
|
end
|
55
57
|
# Arel has an issue in that it keeps using original connection for quoting,
|
56
58
|
# etc. (which breaks stuff) unless you do this:
|
57
|
-
Arel::Visitors::ENGINE_VISITORS.delete(ActiveRecord::Base) if defined?(Arel)
|
59
|
+
Arel::Visitors::ENGINE_VISITORS.delete(ActiveRecord::Base) if defined?(Arel::Visitors::ENGINE_VISITORS)
|
58
60
|
ActiveRecord::Base.establish_connection(config)
|
59
61
|
ActiveRecord::Base.logger = Logger.new('/dev/null')
|
60
62
|
ActiveRecord::SchemaDumper.previous_schema = nil
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hairtrigger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Jensen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '3.
|
33
|
+
version: '3.8'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '3.
|
40
|
+
version: '3.8'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: ruby2ruby
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '2.
|
47
|
+
version: '2.3'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '2.
|
54
|
+
version: '2.3'
|
55
55
|
description: allows you to declare database triggers in ruby in your models, and then
|
56
56
|
generate appropriate migrations as they change
|
57
57
|
email: jenseng@gmail.com
|
@@ -106,9 +106,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
106
|
version: 1.3.5
|
107
107
|
requirements: []
|
108
108
|
rubyforge_project:
|
109
|
-
rubygems_version: 2.
|
109
|
+
rubygems_version: 2.5.1
|
110
110
|
signing_key:
|
111
111
|
specification_version: 4
|
112
112
|
summary: easy database triggers for active record
|
113
113
|
test_files: []
|
114
|
-
has_rdoc:
|