inferred_crumpets 0.2.6 → 0.5.0
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 +5 -5
- data/.github/dependabot.yml +6 -0
- data/.github/workflows/release.yml +59 -0
- data/.github/workflows/ruby.yml +16 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +21 -0
- data/README.md +14 -2
- data/inferred_crumpets.gemspec +5 -4
- data/lib/inferred_crumpets.rb +2 -0
- data/lib/inferred_crumpets/action_processor.rb +42 -0
- data/lib/inferred_crumpets/builder.rb +16 -17
- data/lib/inferred_crumpets/subject_finder.rb +17 -0
- data/lib/inferred_crumpets/version.rb +1 -1
- metadata +23 -20
- data/.travis.yml +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: df7c96a402d26e19410b2e36b5f5627ba7d82d9133ca4505ac2d56e83698a7bd
|
4
|
+
data.tar.gz: 37f975409e519768f883c815924253e727a385b2c956d0b4ad83b3d84998550d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5bf10586c402d098f3a7bf290156d70f6ed00f431c360616cdba24c68101f9dc723f799e5f97a59e1b3f2fcbcffde5bd703c88b4414cc2511e4a642845ba91e3
|
7
|
+
data.tar.gz: e86965e111940f9493a4a120e27af1cf308c7c22f06afc7ccfcee468b2364aa649f0dfc4a2468cffbfc95c2e449a9d7c349c57a937d4b183ef422ac422d23326
|
@@ -0,0 +1,59 @@
|
|
1
|
+
name: Release
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
tags:
|
6
|
+
- "v*"
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
build:
|
10
|
+
name: Build
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
steps:
|
13
|
+
- name: Checkout
|
14
|
+
uses: actions/checkout@v2
|
15
|
+
- uses: ruby/setup-ruby@v1
|
16
|
+
with:
|
17
|
+
bundler-cache: true
|
18
|
+
- run: bundle exec rake
|
19
|
+
|
20
|
+
release:
|
21
|
+
needs: build
|
22
|
+
name: Release
|
23
|
+
runs-on: ubuntu-latest
|
24
|
+
steps:
|
25
|
+
- name: Checkout
|
26
|
+
uses: actions/checkout@v2
|
27
|
+
|
28
|
+
- name: Generate Changelog
|
29
|
+
run: |
|
30
|
+
# Get version from github ref (remove 'refs/tags/' and prefix 'v')
|
31
|
+
version="${GITHUB_REF#refs/tags/v}"
|
32
|
+
npx changelog-parser CHANGELOG.md | jq -cr ".versions | .[] | select(.version == \"$version\") | .body" > ${{ github.workflow }}-CHANGELOG.txt
|
33
|
+
|
34
|
+
- name: Release
|
35
|
+
uses: softprops/action-gh-release@v1
|
36
|
+
with:
|
37
|
+
body_path: ${{ github.workflow }}-CHANGELOG.txt
|
38
|
+
env:
|
39
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
40
|
+
|
41
|
+
publish:
|
42
|
+
needs: [build, release]
|
43
|
+
name: Publish
|
44
|
+
runs-on: ubuntu-latest
|
45
|
+
|
46
|
+
steps:
|
47
|
+
- uses: actions/checkout@v2
|
48
|
+
- uses: ruby/setup-ruby@v1
|
49
|
+
|
50
|
+
- name: Publish to RubyGems
|
51
|
+
run: |
|
52
|
+
mkdir -p $HOME/.gem
|
53
|
+
touch $HOME/.gem/credentials
|
54
|
+
chmod 0600 $HOME/.gem/credentials
|
55
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
56
|
+
gem build *.gemspec
|
57
|
+
gem push *.gem
|
58
|
+
env:
|
59
|
+
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
|
@@ -0,0 +1,16 @@
|
|
1
|
+
name: Build and Test
|
2
|
+
on: [push, pull_request]
|
3
|
+
jobs:
|
4
|
+
test:
|
5
|
+
strategy:
|
6
|
+
fail-fast: false
|
7
|
+
matrix:
|
8
|
+
ruby: ["2.6", "2.7", "3.0"]
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
steps:
|
11
|
+
- uses: actions/checkout@v2
|
12
|
+
- uses: ruby/setup-ruby@v1
|
13
|
+
with:
|
14
|
+
ruby-version: ${{ matrix.ruby }}
|
15
|
+
bundler-cache: true
|
16
|
+
- run: bundle exec rake
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.0.0
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,26 @@
|
|
1
1
|
# InferredCrumpets
|
2
2
|
|
3
|
+
## 0.5.0
|
4
|
+
|
5
|
+
- [TT-8631] Update to build with github actions / ruby 3.0 / rails 6.1
|
6
|
+
|
7
|
+
## 0.4.2
|
8
|
+
|
9
|
+
* [TT-6224] ActiveRecord::Base subjects can now take a custom crumb name
|
10
|
+
|
11
|
+
## 0.4.1
|
12
|
+
|
13
|
+
* [TT-5835] Fix crumb title for active record relation
|
14
|
+
|
15
|
+
## 0.4.0
|
16
|
+
|
17
|
+
* [TT-5807] Use crumb title for the subject name
|
18
|
+
|
19
|
+
## 0.3.0
|
20
|
+
|
21
|
+
* [TT-5087] Add parent to be displayed on index routes
|
22
|
+
* [TT-5088] Add ability to link to all actions
|
23
|
+
|
3
24
|
## 0.2.6
|
4
25
|
|
5
26
|
* [TT-4479] Added grandparent support
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# InferredCrumpets
|
2
2
|
|
3
|
-
[](http://badge.fury.io/rb/inferred_crumpets)
|
4
|
+
[](https://github.com/sealink/inferred_crumpets/actions)
|
4
5
|
|
5
6
|
Automatic breadcrumbs for Rails. Built with [crumpet](https://github.com/blaknite/crumpet).
|
6
7
|
|
@@ -24,11 +25,22 @@ In the view call `render_inferred_crumbs`
|
|
24
25
|
|
25
26
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
26
27
|
|
28
|
+
## Release
|
29
|
+
|
30
|
+
To publish a new version of this gem the following steps must be taken.
|
31
|
+
|
32
|
+
* Update the version in the following files
|
33
|
+
```
|
34
|
+
CHANGELOG.md
|
35
|
+
lib/inferred_crumpets/version.rb
|
36
|
+
````
|
37
|
+
* Create a tag using the format v0.1.0
|
38
|
+
* Follow build progress in GitHub actions
|
39
|
+
|
27
40
|
## Contributing
|
28
41
|
|
29
42
|
Bug reports and pull requests are welcome on GitHub at https://github.com/sealink/inferred_crumpets. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
30
43
|
|
31
|
-
|
32
44
|
## License
|
33
45
|
|
34
46
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/inferred_crumpets.gemspec
CHANGED
@@ -20,11 +20,12 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.bindir = "exe"
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ["lib"]
|
23
|
+
spec.required_ruby_version = '>= 2.6.0'
|
23
24
|
|
24
|
-
spec.add_dependency "rails", ">=
|
25
|
+
spec.add_dependency "rails", ">= 6"
|
25
26
|
spec.add_dependency "crumpet", ">= 0.3.0"
|
26
27
|
|
27
|
-
spec.add_development_dependency "bundler"
|
28
|
-
spec.add_development_dependency "rake"
|
29
|
-
spec.add_development_dependency "rspec"
|
28
|
+
spec.add_development_dependency "bundler"
|
29
|
+
spec.add_development_dependency "rake"
|
30
|
+
spec.add_development_dependency "rspec"
|
30
31
|
end
|
data/lib/inferred_crumpets.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require "inferred_crumpets/route_checker"
|
2
|
+
require "inferred_crumpets/subject_finder"
|
2
3
|
require "inferred_crumpets/builder"
|
3
4
|
require "inferred_crumpets/railtie"
|
4
5
|
require "inferred_crumpets/version"
|
5
6
|
require "inferred_crumpets/view_helpers"
|
7
|
+
require "inferred_crumpets/action_processor"
|
6
8
|
|
7
9
|
module InferredCrumpets; end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module InferredCrumpets
|
4
|
+
class ActionProcessor
|
5
|
+
NEW_ACTIONS = %w[new create].freeze
|
6
|
+
private_constant :NEW_ACTIONS
|
7
|
+
|
8
|
+
EDIT_ACTIONS = %w[edit update].freeze
|
9
|
+
private_constant :EDIT_ACTIONS
|
10
|
+
|
11
|
+
IGNORED_ACTIONS = %w[show].freeze
|
12
|
+
private_constant :IGNORED_ACTIONS
|
13
|
+
|
14
|
+
NEW_LABEL = 'New'
|
15
|
+
private_constant :NEW_LABEL
|
16
|
+
|
17
|
+
EDIT_LABEL = 'Edit'
|
18
|
+
private_constant :EDIT_LABEL
|
19
|
+
|
20
|
+
def self.for_action(action)
|
21
|
+
new(action).call
|
22
|
+
end
|
23
|
+
|
24
|
+
def initialize(action)
|
25
|
+
@action = action
|
26
|
+
end
|
27
|
+
|
28
|
+
def call
|
29
|
+
return build_opts(nil) if IGNORED_ACTIONS.include?(@action)
|
30
|
+
return build_opts(NEW_LABEL, false) if NEW_ACTIONS.include?(@action)
|
31
|
+
return build_opts(EDIT_LABEL) if EDIT_ACTIONS.include?(@action)
|
32
|
+
|
33
|
+
build_opts(@action.humanize)
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def build_opts(label, has_subject = true)
|
39
|
+
OpenStruct.new(label: label, has_subject?: has_subject)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -3,7 +3,7 @@ module InferredCrumpets
|
|
3
3
|
attr_reader :view_context, :subject, :parents
|
4
4
|
|
5
5
|
def self.build_inferred_crumbs!(view_context)
|
6
|
-
subject =
|
6
|
+
subject = SubjectFinder.for_context(view_context)
|
7
7
|
return unless subject
|
8
8
|
parents = [view_context.parent_object].compact.flatten rescue []
|
9
9
|
build_all!(view_context, subject, parents)
|
@@ -45,8 +45,10 @@ module InferredCrumpets
|
|
45
45
|
def build_crumb_for_collection!
|
46
46
|
return if parents.present? && linkable?
|
47
47
|
|
48
|
-
if subject.
|
49
|
-
view_context.crumbs.add_crumb
|
48
|
+
if subject.class.respond_to?(:collection_title)
|
49
|
+
view_context.crumbs.add_crumb subject.class.collection_title, url_for_collection
|
50
|
+
elsif subject.is_a?(ActiveRecord::Relation)
|
51
|
+
view_context.crumbs.add_crumb relation_name.pluralize.titleize
|
50
52
|
elsif subject.is_a?(ActiveRecord::Base)
|
51
53
|
view_context.crumbs.add_crumb subject.class.table_name.titleize, url_for_collection
|
52
54
|
end
|
@@ -54,16 +56,13 @@ module InferredCrumpets
|
|
54
56
|
|
55
57
|
def build_crumb_for_action!
|
56
58
|
return unless subject.is_a?(ActiveRecord::Base)
|
59
|
+
crumb = ActionProcessor.for_action(action)
|
60
|
+
build_crumb_for_subject! if crumb.has_subject?
|
61
|
+
add_crumb(crumb.label) if crumb.label.present?
|
62
|
+
end
|
57
63
|
|
58
|
-
|
59
|
-
|
60
|
-
return
|
61
|
-
end
|
62
|
-
|
63
|
-
build_crumb_for_subject!
|
64
|
-
if %w(edit update).include?(action)
|
65
|
-
view_context.crumbs.add_crumb('Edit', wrapper_options: { class: 'active' })
|
66
|
-
end
|
64
|
+
def add_crumb(label)
|
65
|
+
view_context.crumbs.add_crumb(label, wrapper_options: { class: 'active' })
|
67
66
|
end
|
68
67
|
|
69
68
|
def build_crumb_for_subject!
|
@@ -110,16 +109,16 @@ module InferredCrumpets
|
|
110
109
|
view_context.params[:action]
|
111
110
|
end
|
112
111
|
|
113
|
-
def
|
112
|
+
def relation_name
|
114
113
|
subject.respond_to?(:name) && subject.name.present? ? subject.name : subject.to_s
|
115
114
|
end
|
116
115
|
|
117
|
-
def
|
118
|
-
|
116
|
+
def subject_name
|
117
|
+
subject.respond_to?(:crumb_title) && subject.crumb_title.present? ? subject.crumb_title : subject.to_s
|
119
118
|
end
|
120
119
|
|
121
|
-
def
|
122
|
-
|
120
|
+
def class_with_parents
|
121
|
+
[parents.last, transformed_subject.class].compact
|
123
122
|
end
|
124
123
|
end
|
125
124
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module InferredCrumpets
|
2
|
+
class SubjectFinder
|
3
|
+
def self.for_context(context)
|
4
|
+
new(context).call
|
5
|
+
end
|
6
|
+
|
7
|
+
def initialize(context)
|
8
|
+
@context = context
|
9
|
+
end
|
10
|
+
|
11
|
+
def call
|
12
|
+
current_object = begin @context.current_object rescue nil end
|
13
|
+
collection_object = begin @context.collection rescue nil end
|
14
|
+
current_object || collection_object
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inferred_crumpets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Grant Colegate
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '6'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: crumpet
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,44 +42,44 @@ dependencies:
|
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
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: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '0'
|
83
83
|
description: Automatic breadcrumbs for Rails.
|
84
84
|
email:
|
85
85
|
- support@travellink.com.au
|
@@ -87,10 +87,12 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
+
- ".github/dependabot.yml"
|
91
|
+
- ".github/workflows/release.yml"
|
92
|
+
- ".github/workflows/ruby.yml"
|
90
93
|
- ".gitignore"
|
91
94
|
- ".rspec"
|
92
95
|
- ".ruby-version"
|
93
|
-
- ".travis.yml"
|
94
96
|
- CHANGELOG.md
|
95
97
|
- CODE_OF_CONDUCT.md
|
96
98
|
- Gemfile
|
@@ -101,9 +103,11 @@ files:
|
|
101
103
|
- bin/setup
|
102
104
|
- inferred_crumpets.gemspec
|
103
105
|
- lib/inferred_crumpets.rb
|
106
|
+
- lib/inferred_crumpets/action_processor.rb
|
104
107
|
- lib/inferred_crumpets/builder.rb
|
105
108
|
- lib/inferred_crumpets/railtie.rb
|
106
109
|
- lib/inferred_crumpets/route_checker.rb
|
110
|
+
- lib/inferred_crumpets/subject_finder.rb
|
107
111
|
- lib/inferred_crumpets/version.rb
|
108
112
|
- lib/inferred_crumpets/view_helpers.rb
|
109
113
|
homepage: https://github.com/sealink/inferred_crumpets
|
@@ -118,15 +122,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
118
122
|
requirements:
|
119
123
|
- - ">="
|
120
124
|
- !ruby/object:Gem::Version
|
121
|
-
version:
|
125
|
+
version: 2.6.0
|
122
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
127
|
requirements:
|
124
128
|
- - ">="
|
125
129
|
- !ruby/object:Gem::Version
|
126
130
|
version: '0'
|
127
131
|
requirements: []
|
128
|
-
|
129
|
-
rubygems_version: 2.6.13
|
132
|
+
rubygems_version: 3.2.3
|
130
133
|
signing_key:
|
131
134
|
specification_version: 4
|
132
135
|
summary: Automatic breadcrumbs for Rails.
|