dropkiq 0.1.0 → 0.1.1
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/Gemfile.lock +3 -1
- data/README.md +78 -0
- data/dropkiq.gemspec +1 -0
- data/lib/dropkiq/drop_class_analyzer.rb +5 -0
- data/lib/dropkiq/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 870702ba0f303232074a4f4c1d217615845c66f5
|
4
|
+
data.tar.gz: 167038a34aa51b3b1f0ee9071c0609f852c922f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69f78f513c67744275c65ed9128be60c3eb0fb6a07e0650c621dd94f656ba22d55a174f724f0a75e3c38394dec3200b5ca72a3fd3e44a2757091afbbd9a3a5b2
|
7
|
+
data.tar.gz: 02b69534482e6b999e57da7fbea7c7a9cf550b213d179fd44dab2275dee5b5085bc3d5bc8b216fbabb61536fe719ceeb6bfeabf115f8ed8a85b125fe59c27448
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
dropkiq (0.1.
|
4
|
+
dropkiq (0.1.1)
|
5
5
|
activerecord (>= 4.2)
|
6
6
|
liquid (~> 4.0)
|
7
7
|
|
@@ -27,6 +27,7 @@ GEM
|
|
27
27
|
liquid (4.0.3)
|
28
28
|
method_source (0.9.2)
|
29
29
|
minitest (5.13.0)
|
30
|
+
mocha (1.11.2)
|
30
31
|
pry (0.12.2)
|
31
32
|
coderay (~> 1.1.0)
|
32
33
|
method_source (~> 0.9.0)
|
@@ -43,6 +44,7 @@ DEPENDENCIES
|
|
43
44
|
bundler (~> 2.0)
|
44
45
|
dropkiq!
|
45
46
|
minitest (~> 5.0)
|
47
|
+
mocha (~> 1.11.2)
|
46
48
|
pry (~> 0.12.2)
|
47
49
|
rake (~> 10.0)
|
48
50
|
sqlite3 (~> 1.3.13)
|
data/README.md
CHANGED
@@ -36,14 +36,92 @@ This Gem makes several assumptions about your Ruby on Rails application:
|
|
36
36
|
|
37
37
|
This Gem provides a rake command to generate a schema file that can be used to manage Fixtures on Dropkiq. Create the `db/dropkiq_schema.yaml` file by running the following command:
|
38
38
|
|
39
|
+
|
39
40
|
```
|
40
41
|
bundle exec rake dropkiq:schema
|
41
42
|
```
|
42
43
|
|
44
|
+
|
43
45
|
You should now have a `db/dropkiq_schema.yaml` file. This file describes all tables associated to Drop classes in your application, along with all methods avaialble to the Drop class. It is important that you **DO** allow this file to be checked in to version control so that you can maintain your Dropkiq schema over time as you add/remove/modify your Drop classes.
|
44
46
|
|
45
47
|
Notice that `type` has NOT been set on all methods. The Dropkiq Gem is only able to infer the method type for methods that correspond to a column or relationship on the ActiveRecord model. Please take a moment to manually add `type` values for all methods that were not able to be inferred. Notice that if you run `bundle exec rake dropkiq:schema` again, your changes are saved!
|
46
48
|
|
49
|
+
|
50
|
+
#### Ruby on Rails Column to Dropkiq Data Type Mappings
|
51
|
+
|
52
|
+
| Ruby on Rails Column Type | Dropkiq Data Type |
|
53
|
+
| --- | --- |
|
54
|
+
| `string` | `ColumnTypes::String` |
|
55
|
+
| `integer` | `ColumnTypes::Numeric` |
|
56
|
+
| `boolean` | `ColumnTypes::Boolean` |
|
57
|
+
| `datetime` | `ColumnTypes::DateTime` |
|
58
|
+
| `date` | `ColumnTypes::DateTime` |
|
59
|
+
| `decimal` | `ColumnTypes::Numeric` |
|
60
|
+
| `float` | `ColumnTypes::Numeric` |
|
61
|
+
| `text` | `ColumnTypes::Text` |
|
62
|
+
| `time` | `ColumnTypes::DateTime` |
|
63
|
+
| `binary` | `ColumnTypes::Numeric` |
|
64
|
+
|
65
|
+
#### Ruby on Rails Associations to Dropkiq Data Type Mappings
|
66
|
+
|
67
|
+
| Ruby on Rails Association Type | Dropkiq Data Type |
|
68
|
+
| --- | --- |
|
69
|
+
| `belongs_to` | `ColumnTypes::HasOne` |
|
70
|
+
| `has_one` | `ColumnTypes::HasOne` |
|
71
|
+
| `has_many` | `ColumnTypes::HasMany` |
|
72
|
+
| `has_one through:` | `ColumnTypes::HasOne` |
|
73
|
+
| `has_many through:` | `ColumnTypes::HasMany` |
|
74
|
+
| `has_and_belongs_to_many` | `ColumnTypes::HasMany` |
|
75
|
+
|
76
|
+
**Please note:** You must also specify a `foreign_table_name` for any Association column in Dropkiq. These types can also be used for arbitrary methods within your Drop class that simply returns a single instance or array of instances of a Drop Class.
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
class PersonDrop < Liquid::Drop
|
80
|
+
# ...
|
81
|
+
end
|
82
|
+
|
83
|
+
class GroupDrop < Liquid::Drop
|
84
|
+
def initialize(group)
|
85
|
+
@group = group
|
86
|
+
end
|
87
|
+
|
88
|
+
# Use the ColumnTypes::HasOne column type and specify the foreign_table_name as "people"
|
89
|
+
def owner
|
90
|
+
owner_membership = @group.memberships.find_by!(owner: true)
|
91
|
+
PersonDrop.new(owner_membership.person)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Use the ColumnTypes::HasMany column type and specify the foreign_table_name as "people"
|
95
|
+
def managers
|
96
|
+
@group.memberships.where(manager: true).map{|m| PersonDrop.new(m.person)}
|
97
|
+
end
|
98
|
+
end
|
99
|
+
```
|
100
|
+
|
101
|
+
|
102
|
+
Dropkiq also provides a `ColumnTypes::YAML` Column Type if your Drop class model has any methods that simply return an Array or Hash, such as this example:
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
class ProductDrop < Liquid::Drop
|
106
|
+
def initialize(product)
|
107
|
+
@product = product
|
108
|
+
end
|
109
|
+
|
110
|
+
# Use the ColumnTypes::YAML column type and serialize the Array as Yaml
|
111
|
+
def possible_sku_numbers
|
112
|
+
[12345, 67890, 45678, 12390]
|
113
|
+
end
|
114
|
+
|
115
|
+
# Use the ColumnTypes::YAML column type and serialize the Hash as Yaml
|
116
|
+
def custom_data
|
117
|
+
{
|
118
|
+
description: "This is a book about bananas",
|
119
|
+
price: 12.95
|
120
|
+
}
|
121
|
+
end
|
122
|
+
end
|
123
|
+
```
|
124
|
+
|
47
125
|
## Development
|
48
126
|
|
49
127
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/dropkiq.gemspec
CHANGED
@@ -41,6 +41,7 @@ Gem::Specification.new do |spec|
|
|
41
41
|
spec.add_development_dependency "rake", "~> 10.0"
|
42
42
|
spec.add_development_dependency "minitest", "~> 5.0"
|
43
43
|
spec.add_development_dependency "sqlite3", "~> 1.3.13"
|
44
|
+
spec.add_development_dependency "mocha", "~> 1.11.2"
|
44
45
|
|
45
46
|
spec.add_dependency "activerecord", ">= 4.2"
|
46
47
|
spec.add_dependency "liquid", "~> 4.0"
|
@@ -9,6 +9,11 @@ module Dropkiq
|
|
9
9
|
|
10
10
|
def analyze
|
11
11
|
self.active_record_class = find_active_record_class
|
12
|
+
|
13
|
+
if active_record_class.blank?
|
14
|
+
raise "No ActiveRecord Class found for #{liquid_drop_class.name}"
|
15
|
+
end
|
16
|
+
|
12
17
|
self.table_name = active_record_class.table_name
|
13
18
|
self.drop_method_params = find_drop_method_params
|
14
19
|
end
|
data/lib/dropkiq/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dropkiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Darrah
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pry
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 1.3.13
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: mocha
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.11.2
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.11.2
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: activerecord
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|