dat_gretel 4.0.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.
Files changed (76) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +24 -0
  3. data/.travis.yml +16 -0
  4. data/CHANGELOG.md +56 -0
  5. data/Gemfile +23 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +359 -0
  8. data/Rakefile +10 -0
  9. data/dat_gretel.gemspec +22 -0
  10. data/gemfiles/Gemfile-rails.3.1.x +19 -0
  11. data/gemfiles/Gemfile-rails.3.2.x +19 -0
  12. data/gemfiles/Gemfile-rails.4.0.x +19 -0
  13. data/gemfiles/Gemfile-rails.4.1.x +19 -0
  14. data/gemfiles/Gemfile-rails.5.2.x +19 -0
  15. data/lib/dat_gretel.rb +82 -0
  16. data/lib/dat_gretel/crumb.rb +70 -0
  17. data/lib/dat_gretel/crumbs.rb +64 -0
  18. data/lib/dat_gretel/deprecated.rb +1 -0
  19. data/lib/dat_gretel/deprecated/default_style_key.rb +25 -0
  20. data/lib/dat_gretel/deprecated/layout.rb +15 -0
  21. data/lib/dat_gretel/deprecated/show_root_alone.rb +27 -0
  22. data/lib/dat_gretel/deprecated/yield_links.rb +44 -0
  23. data/lib/dat_gretel/link.rb +40 -0
  24. data/lib/dat_gretel/renderer.rb +259 -0
  25. data/lib/dat_gretel/resettable.rb +13 -0
  26. data/lib/dat_gretel/version.rb +3 -0
  27. data/lib/dat_gretel/view_helpers.rb +71 -0
  28. data/lib/generators/dat_gretel/USAGE +8 -0
  29. data/lib/generators/dat_gretel/install_generator.rb +12 -0
  30. data/lib/generators/dat_gretel/templates/breadcrumbs.rb +28 -0
  31. data/test/dat_gretel_test.rb +24 -0
  32. data/test/deprecated_test.rb +45 -0
  33. data/test/dummy/Rakefile +7 -0
  34. data/test/dummy/app/assets/javascripts/application.js +15 -0
  35. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  36. data/test/dummy/app/controllers/application_controller.rb +3 -0
  37. data/test/dummy/app/helpers/application_helper.rb +5 -0
  38. data/test/dummy/app/mailers/.gitkeep +0 -0
  39. data/test/dummy/app/models/.gitkeep +0 -0
  40. data/test/dummy/app/models/issue.rb +3 -0
  41. data/test/dummy/app/models/project.rb +3 -0
  42. data/test/dummy/app/views/breadcrumbs/site.rb +3 -0
  43. data/test/dummy/config.ru +4 -0
  44. data/test/dummy/config/application.rb +14 -0
  45. data/test/dummy/config/boot.rb +10 -0
  46. data/test/dummy/config/breadcrumbs.rb +3 -0
  47. data/test/dummy/config/breadcrumbs/test_crumbs.rb +85 -0
  48. data/test/dummy/config/database.yml +25 -0
  49. data/test/dummy/config/environment.rb +5 -0
  50. data/test/dummy/config/environments/development.rb +2 -0
  51. data/test/dummy/config/environments/production.rb +2 -0
  52. data/test/dummy/config/environments/test.rb +2 -0
  53. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  54. data/test/dummy/config/initializers/inflections.rb +15 -0
  55. data/test/dummy/config/initializers/mime_types.rb +5 -0
  56. data/test/dummy/config/initializers/secret_token.rb +7 -0
  57. data/test/dummy/config/initializers/session_store.rb +8 -0
  58. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  59. data/test/dummy/config/locales/en.yml +5 -0
  60. data/test/dummy/config/routes.rb +11 -0
  61. data/test/dummy/db/migrate/20130122163007_create_projects.rb +9 -0
  62. data/test/dummy/db/migrate/20130122163051_create_issues.rb +10 -0
  63. data/test/dummy/db/schema.rb +28 -0
  64. data/test/dummy/lib/assets/.gitkeep +0 -0
  65. data/test/dummy/log/.gitkeep +0 -0
  66. data/test/dummy/public/404.html +26 -0
  67. data/test/dummy/public/422.html +26 -0
  68. data/test/dummy/public/500.html +25 -0
  69. data/test/dummy/public/favicon.ico +0 -0
  70. data/test/dummy/script/rails +6 -0
  71. data/test/fixtures/issues.yml +4 -0
  72. data/test/fixtures/projects.yml +3 -0
  73. data/test/gretel_test.rb +24 -0
  74. data/test/helper_methods_test.rb +552 -0
  75. data/test/test_helper.rb +15 -0
  76. metadata +193 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ccaad8cb8f8ec8530bb91ea0e8bc410457c66828a7fd03bb0d6dbed37ce2f189
4
+ data.tar.gz: 00a5aa6e1f77ab33b97b0914f22a686f394e46bc879e4e861dd82c8b1d5037ee
5
+ SHA512:
6
+ metadata.gz: b6c38ca23c2eaeca2e3f537bd88ea7596b2ba380cc813fc94bc48ee782d6ea61b8368f0dc6772d97330a48643b70befdc0dfe8b92f367dfac7eb69808aed8d40
7
+ data.tar.gz: 6be2a36c0ac7ecfa5ce9f39c89127380856aee330e3c39e388be62416b6905cc11653fdb434190d34b76429a83beb19ea7c5ea1c89f9ddb3dc4170f2fbfa83ae
@@ -0,0 +1,24 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ gemfiles/*.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
19
+ log/*.log
20
+ test/dummy/db/*.sqlite3
21
+ test/dummy/log/*.log
22
+ test/dummy/tmp/
23
+ test/dummy/.sass-cache
24
+ .DS_Store
@@ -0,0 +1,16 @@
1
+ language: ruby
2
+ sudo: false
3
+ rvm:
4
+ - 2.5.1
5
+ - 2.2.2
6
+ gemfile:
7
+ - gemfiles/Gemfile-rails.4.0.x
8
+ - gemfiles/Gemfile-rails.4.1.x
9
+ - gemfiles/Gemfile-rails.5.2.x
10
+ before_script:
11
+ - "cd test/dummy; rake db:migrate; rake db:test:prepare; cd ../.."
12
+ notifications:
13
+ email: false
14
+ matrix:
15
+ allow_failures:
16
+ - rvm: 2.5.1
@@ -0,0 +1,56 @@
1
+ # Changelog
2
+
3
+ ## Version 3.0.9
4
+ * Adds breadcrumbs option `link_current_to_request_path` to link the current breadcrumb to the request path(#28 via #29)
5
+ * Fixes semantic breadcrumbs when the last item has no link (via #55)
6
+ * Downgrades Rails dependency to 3.1 (via #56)
7
+ * Fixes jRuby issue with `Rails::Application` constant (via #50)
8
+ * Fixes deprecation warnings for `alias_method_chain` (via #66)
9
+ * Updated coprights (via #63)
10
+
11
+ ## Version 3.0.8
12
+ * Parent breadcrumbs can now also be inferred from models responding to `model_name`.
13
+
14
+ ## Version 3.0.7
15
+ * Pretext and posttext classes are now customizable with `<%= breadcrumbs pretext_class: "some-class" %>` and `<%= breadcrumbs posttext_class: "some-other-class" %>`.
16
+
17
+ ## Version 3.0.6
18
+ * Pretext and posttext are now enclosed in spans with `<span class="pretext">` and `<span class="posttext">`.
19
+ * Semantic breadcrumbs are now rendered in spans instead of divs to enable easier styling.
20
+
21
+ ## Version 3.0.3
22
+ * Breadcrumbs can now be rendered for use in the [Foundation 5](http://foundation.zurb.com/) framework. Use `breadcrumbs style: :foundation5`.
23
+ * Breadcrumbs are now automatically loaded from any engines' `config/breadcrumbs.rb` and `config/breadcrumbs/**/*.rb`. See the readme for details.
24
+ * You can now pass options to links to be used when you render manually. See the readme for details.
25
+ * Breadcrumb configuration files can now be put in the `app/views/breadcrumbs/` folder. This is an experimental feature that may replace loading breadcrumbs from the `config` folder in the future.
26
+
27
+ ## Version 3.0.2
28
+ * Inferring breadcrumbs is now supported on all instances of objects that respond to `model_name`.
29
+
30
+ ## Version 3.0.1
31
+ * Breadcrumbs can now be inferred if you pass in an ActiveRecord model instance. E.g. `breadcrumb @product` is short for `breadcrumb :product, @product`.
32
+
33
+ ## Version 3.0
34
+ * Support for defining breadcrumbs using `Gretel::Crumbs.layout do ... end` in an initializer has been removed. See the readme for details on how to upgrade.
35
+ * Breadcrumbs rendering is now done in a separate class to unclutter the view with helpers. The public API is still the same.
36
+ * Support for rendering the breadcrumbs in different styles like ul- and ol lists, and for use with [Twitter Bootstrap](http://getbootstrap.com/). See the `:style` option in the readme for more info.
37
+ * The `:show_root_alone` option is now called `:display_single_fragment` and can be used to display the breadcrumbs only when there are more than one link, also if it is not the root breadcrumb.
38
+ * Links yielded from `<%= breadcrumbs do |links| %>` now have a `current?` helper that returns true if the link is the last in the trail.
39
+ * New view helper: `parent_breadcrumb` returns the parent breadcrumb link (with `#key`, `#text`, and `#url`). This can for example be used to create a dynamic back link. You can supply options like `:autoroot` etc.
40
+ If you supply a block, it will yield the parent breadcrumb if it is present.
41
+
42
+ ## Version 2.1
43
+ * Breadcrumbs are now configured in `config/breadcrumbs.rb` and `config/breadcrumbs/**/*.rb` and reloaded when changed in the development environment instead of the initializer that required restart when configuration changed.
44
+
45
+ ## Version 2.0
46
+
47
+ * Totally rewritten for better structure.
48
+ * `options[:autoroot]` is now `true` by default which means it will automatically link to the `:root` breadcrumb if no parent is specified.
49
+ * Now accepts `options[:class]` for specifying the CSS class for the breadcrumbs container. Default: `"breadcrumbs"`.
50
+ * Now accepts `options[:current_class]` for specifying the CSS class for the current link / span. Default: `"current"`.
51
+ * `options[:link_last]` was deprecated in a previous version and is now removed. Use `options[:link_current]` instead.
52
+ * The `link` method in `crumb :xx do ... end` no longer takes HTML options. The method for this is now by building the breadcrumbs manually (see the readme).
53
+ * No longer supports procs for link text or URL as this is unnecessary when you can pass arguments to the block anyway.
54
+ * It now accepts multiple arguments for `crumb` and `parent` (see the readme).
55
+ * Breadcrumbs are now rendered with `<%= breadcrumbs %>`, although you can still use the old `<%= breadcrumb %>` (without *s*).
56
+ * You can now access view helpers from inside `Gretel::Crumbs.layout do .. end`.
data/Gemfile ADDED
@@ -0,0 +1,23 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Declare your gem's dependencies in gretel.gemspec.
4
+ # Bundler will treat runtime dependencies like base dependencies, and
5
+ # development dependencies will be added by default to the :development group.
6
+ gemspec
7
+
8
+ # Declare any dependencies that are still in development here instead of in
9
+ # your gemspec. These might include edge Rails or gems from your path or
10
+ # Git. Remember to move these dependencies to your gemspec before releasing
11
+ # your gem to rubygems.org.
12
+
13
+ # To use debugger
14
+ # gem 'debugger'
15
+
16
+ group :development do
17
+ # jquery-rails is used by the dummy application
18
+ gem "jquery-rails"
19
+ end
20
+
21
+ group :test do
22
+ gem 'test-unit', '~> 3.0' if RUBY_VERSION >= "2.2"
23
+ end
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2010-2016 Lasse Bunk
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,359 @@
1
+ <a href="https://travis-ci.org/marciodat/gretel"><img src="https://travis-ci.org/marciodat/gretel.svg" alt="Build Status" /></a>
2
+
3
+ <img src="http://i.imgur.com/CAKEaBM.png" alt="Handle breadcrumb trails... like a boss :)" />
4
+
5
+ This is an update of the amazing `gretel` gem with the following changes:
6
+
7
+ - Added `fragment_class`: allows the user to specify classes for framents
8
+
9
+ - Updated bootstrap default to the latest version
10
+
11
+ - Updated rails to the latest version
12
+
13
+ - Updated tests
14
+
15
+ Due to some changes on the latest rails version, the gem compatibility has been changed:
16
+
17
+ - ruby = 2.2.2 / rails >= 4.0.x
18
+
19
+ - ruby = 2.5.1 / rails >= 5.2.x
20
+
21
+ ---
22
+
23
+ ([TL;DR](http://i.imgur.com/nH25yiH.png)) Gretel is a [Ruby on Rails](http://rubyonrails.org) plugin that makes it easy yet flexible to create breadcrumbs.
24
+ It is based around the idea that breadcrumbs are a concern of the view, so you define a set of breadcrumbs in *config/breadcrumbs.rb* (or multiple files; see below) and specify in the view which breadcrumb to use.
25
+ Gretel also supports [semantic breadcrumbs](http://support.google.com/webmasters/bin/answer.py?hl=en&answer=185417) (those used in Google results).
26
+
27
+ Have fun! And please do write, if you (dis)like it – [lassebunk@gmail.com](mailto:lassebunk@gmail.com).
28
+
29
+ ## Installation
30
+
31
+ In your *Gemfile*:
32
+
33
+ ```ruby
34
+ gem "dat_gretel"
35
+ ```
36
+
37
+ And run:
38
+
39
+ ```bash
40
+ $ bundle install
41
+ ```
42
+
43
+ ## Example
44
+
45
+ Start by generating breadcrumbs configuration file:
46
+
47
+ ```bash
48
+ $ rails generate dat_gretel:install
49
+ ```
50
+
51
+ Then, in *config/breadcrumbs.rb*:
52
+
53
+ ```ruby
54
+ # Root crumb
55
+ crumb :root do
56
+ link "Home", root_path
57
+ end
58
+
59
+ # Issue list
60
+ crumb :issues do
61
+ link "All issues", issues_path
62
+ end
63
+
64
+ # Issue
65
+ crumb :issue do |issue|
66
+ link issue.title, issue
67
+ parent :issues
68
+ end
69
+ ```
70
+
71
+ At the top of *app/views/issues/show.html.erb*, set the current breadcrumb (assuming you have loaded `@issue` with an issue):
72
+
73
+ ```erb
74
+ <% breadcrumb :issue, @issue %>
75
+ ```
76
+
77
+ Then, in *app/views/layouts/application.html.erb*:
78
+
79
+ ```erb
80
+ <%= breadcrumbs pretext: "You are here: ",
81
+ separator: " &rsaquo; " %>
82
+ ```
83
+
84
+ This will generate the following HTML (indented for readability):
85
+
86
+ ```html
87
+ <div class="breadcrumbs">
88
+ <span class="pretext">You are here:</span>
89
+ <a href="/">Home</a> &rsaquo;
90
+ <a href="/issues">All issues</a> &rsaquo;
91
+ <span class="current">My Issue</span>
92
+ </div>
93
+ ```
94
+
95
+ ## Options
96
+
97
+ You can pass options to `<%= breadcrumbs %>`, e.g. `<%= breadcrumbs pretext: "You are here: " %>`:
98
+
99
+ Option | Description | Default
100
+ ------------------------ | -------------------------------------------------------------------------------------------------------------------------- | -------
101
+ :style | How to render the breadcrumbs. Can be `:inline`, `:ol`, `:ul`, or `:bootstrap`. See below for more info. | `:inline`
102
+ :pretext | Text to be rendered before breadcrumb, e.g. `"You are here: "`. | None
103
+ :posttext | Text to be appended after breadcrumb, e.g. `"Text after breacrumb"`, | None
104
+ :separator | Separator between links, e.g. `" &rsaquo; "`. | `" &rsaquo; "`
105
+ :autoroot | Whether it should automatically link to the `:root` crumb if no parent is given. | True
106
+ :display_single_fragment | Whether it should display the breadcrumb if it includes only one link. | False
107
+ :link_current | Whether the current crumb should be linked to. | False
108
+ :link_current_to_request_path | Whether the current crumb should always link to the current request path. *Note:* This option will have no effect unless `:link_current` is set to `true`. | True
109
+ :semantic | Whether it should generate [semantic breadcrumbs](http://support.google.com/webmasters/bin/answer.py?hl=en&answer=185417). | False
110
+ :id | ID for the breadcrumbs container. | None
111
+ :class | CSS class for the breadcrumbs container. Can be set to `nil` for no class. | `"breadcrumbs"`
112
+ :current_class | CSS class for the current link or span. Can be set to `nil` for no class. | `"current"`
113
+ :fragment_class | CSS class for the fragment link or span. Can be set to `nil` for no class. | `"breadcrumb-item"`
114
+ :pretext_class | CSS class for the pretext, if given. Can be set to `nil` for no class. | `"pretext"`
115
+ :posttext_class | CSS class for the posttext, if given. Can be set to `nil` for no class. | `"posttext"`
116
+ :container_tag | Tag type that contains the breadcrumbs. | `:div`
117
+ :fragment_tag | Tag type to contain each breadcrumb fragment/link. | None
118
+
119
+ ### Styles
120
+
121
+ These are the styles you can use with `breadcrumbs style: :xx`.
122
+
123
+ Style | Description
124
+ -------------- | -----------
125
+ `:inline` | Renders each link by itself with `&rsaquo;` as the seperator.
126
+ `:ol` | Renders the links in `<li>` elements contained in an outer `<ol>`.
127
+ `:ul` | Renders the links in `<li>` elements contained in an outer `<ul>`.
128
+ `:bootstrap` | Renders the links for use in [Twitter Bootstrap](http://getbootstrap.com/).
129
+ `:foundation5` | Renders the links for use in [Foundation 5](http://foundation.zurb.com/).
130
+
131
+ Or you can build the breadcrumbs manually for full customization; see below.
132
+
133
+ If you add other widely used styles, please submit a [Pull Request](https://github.com/lassebunk/gretel/pulls) so others can use them too.
134
+
135
+ ## More examples
136
+
137
+ In *config/breadcrumbs.rb*:
138
+
139
+ ```ruby
140
+ # Root crumb
141
+ crumb :root do
142
+ link "Home", root_path
143
+ end
144
+
145
+ # Regular crumb
146
+ crumb :projects do
147
+ link "Projects", projects_path
148
+ end
149
+
150
+ # Parent crumbs
151
+ crumb :project_issues do |project|
152
+ link "Issues", project_issues_path(project)
153
+ parent project # inferred to :project
154
+ end
155
+
156
+ # Child
157
+ crumb :issue do |issue|
158
+ link issue.name, issue_path(issue)
159
+ parent :project_issues, issue.project
160
+ end
161
+
162
+ # Recursive parent categories
163
+ crumb :category do |category|
164
+ link category.name, category
165
+ if category.parent
166
+ parent category.parent # inferred to :category
167
+ else
168
+ parent :categories
169
+ end
170
+ end
171
+
172
+ # Product crumb with recursive parent categories (as defined above)
173
+ crumb :product do |product|
174
+ link product.name, product
175
+ parent product.category # inferred to :category
176
+ end
177
+
178
+ # Crumb with multiple links
179
+ crumb :test do
180
+ link "One", one_path
181
+ link "Two", two_path
182
+ parent :about
183
+ end
184
+
185
+ # Example of using params to alter the parent, e.g. to
186
+ # match the user's actual navigation path
187
+ # URL: /products/123?q=my+search
188
+ crumb :search do |keyword|
189
+ link "Search for #{keyword}", search_path(q: keyword)
190
+ end
191
+
192
+ crumb :product do |product|
193
+ if keyword = params[:q].presence
194
+ parent :search, keyword
195
+ else # default
196
+ parent product.category # inferred to :category
197
+ end
198
+ end
199
+
200
+ # Multiple arguments
201
+ crumb :multiple_test do |a, b, c|
202
+ link "Test #{a}, #{b}, #{c}", test_path
203
+ parent :other_test, 3, 4, 5
204
+ end
205
+
206
+ # Breadcrumb without link URL; will not generate a link
207
+ crumb :without_link do
208
+ link "Breadcrumb without link"
209
+ end
210
+
211
+ # Breadcrumb using view helper
212
+ module UsersHelper
213
+ def user_name_for(user)
214
+ user.name
215
+ end
216
+ end
217
+
218
+ crumb :user do |user|
219
+ link user_name_for(user), user
220
+ end
221
+ ```
222
+
223
+ ## Building the breadcrumbs manually
224
+
225
+ If you supply a block to the `breadcrumbs` method, it will yield an array with the breadcrumb links so you can build the breadcrumbs HTML manually:
226
+
227
+ ```erb
228
+ <% breadcrumbs do |links| %>
229
+ <% if links.any? %>
230
+ You are here:
231
+ <% links.each do |link| %>
232
+ <%= link_to link.text, link.url, class: (link.current? ? "current" : nil) %> (<%= link.key %>)
233
+ <% end %>
234
+ <% end %>
235
+ <% end %>
236
+ ```
237
+
238
+ ## Getting the parent breadcrumb
239
+
240
+ If you want to add a link to the parent breadcrumb, you can use the `parent_breadcrumb` view helper.
241
+ By default it returns a link instance that has the properties `#key`, `#text`, and `#url`.
242
+ You can supply options like `autoroot: false` etc.
243
+
244
+ If you supply a block, it will yield the link if it is present:
245
+
246
+ ```erb
247
+ <% parent_breadcrumb do |link| %>
248
+ <%= link_to "Back to #{link.text}", link.url %>
249
+ <% end %>
250
+ ```
251
+
252
+ ## Nice to know
253
+
254
+ ### Access to view methods
255
+
256
+ When configuring breadcrumbs inside a `crumb :xx do ... end` block, you have access to all methods that are normally accessible in the view where the breadcrumbs are inserted. This includes your view helpers, `params`, `request`, etc.
257
+
258
+ ### Using multiple breadcrumb configuration files
259
+
260
+ If you have a large site and you want to split your breadcrumbs configuration over multiple files, you can create a folder named `config/breadcrumbs` and put your configuration files (e.g. `products.rb` or `frontend.rb`) in there.
261
+ The format is the same as `config/breadcrumbs.rb` which is also loaded.
262
+
263
+ ### Loading breadcrumbs from engines
264
+
265
+ Breadcrumbs are automatically loaded from any engines' `config/breadcrumbs.rb` and `config/breadcrumbs/**/*.rb`.
266
+ Breadcrumbs defined in your main app will override breadcrumbs from engines.
267
+
268
+ ### Inferring breadcrumbs
269
+
270
+ Breadcrumbs can be automatically inferred if you pass an instance of an object that responds to `model_name` (like an ActiveRecord model instance).
271
+
272
+ For example:
273
+
274
+ ```erb
275
+ <% breadcrumb @product %>
276
+ ```
277
+
278
+ is short for
279
+
280
+ ```erb
281
+ <% breadcrumb :product, @product %>
282
+ ```
283
+
284
+ ### Passing options to links
285
+
286
+ You can pass options to links to be used when you render breadcrumbs manually.
287
+
288
+ In *config/breadcrumbs.rb*:
289
+
290
+ ```ruby
291
+ crumb :something do
292
+ link "My Link", my_path, title: "My Title", other: "My Other Option"
293
+ end
294
+ ```
295
+
296
+ Example methods you can then use in the view:
297
+
298
+ ```ruby
299
+ breadcrumbs do |links|
300
+ links.each do |link|
301
+ link.title? # => true
302
+ link.title # => "My Title"
303
+ link.other? # => true
304
+ link.other # => "My Other Option"
305
+ link.nonexisting_option? # => false
306
+ link.nonexisting_option # => nil
307
+ end
308
+ end
309
+ ```
310
+
311
+ ### Automatic reloading of breadcrumb configuration files
312
+
313
+ The breadcrumb configuration files are now reloaded in the Rails development environment if they change. In other environments, like production, the files are loaded once, when first needed.
314
+
315
+
316
+ ## Documentation
317
+
318
+ The original gretel documentation is still valid and can be found at:
319
+
320
+ * [Full documentation](http://rubydoc.info/gems/gretel)
321
+ * [Changelog](https://github.com/lassebunk/gretel/blob/master/CHANGELOG.md)
322
+ * [Tutorial on using Gretel](http://www.sitepoint.com/breadcrumbs-rails-gretel/) (Sitepoint)
323
+
324
+ ## Versioning
325
+
326
+ Follows [semantic versioning](http://semver.org/).
327
+
328
+ ## Contributing
329
+
330
+ You are very welcome to help improve Gretel if you have suggestions for features that other people can use.
331
+
332
+ To contribute:
333
+
334
+ 1. Fork the project
335
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
336
+ 3. Make your changes
337
+ 4. Add/Fix tests
338
+ 5. Prepare database for testing: `cd test/dummy; rake db:migrate; rake db:test:prepare; cd ../..`
339
+ 6. Run `rake` to make sure all tests pass
340
+ 7. Commit your changes (`git commit -am 'Add new feature'`)
341
+ 8. Push to the branch (`git push origin my-new-feature`)
342
+ 9. Create new pull request
343
+
344
+ Thanks.
345
+
346
+ ## Contributors
347
+
348
+ Gretel was created by [@lassebunk](https://github.com/lassebunk).
349
+
350
+ This fork implements some updates/ fixes and is maintained by [@marciodat](https://github.com/marciodat).
351
+
352
+
353
+ ## And then
354
+
355
+ <img src="http://i.imgur.com/u4Wbt4n.png" alt="After using Gretel, you'll be like this" />
356
+
357
+ Have fun!
358
+
359
+ Copyright (c) 2010-2016 [Lasse Bunk](http://lassebunk.dk) / [Marcio Silva](https://github.com/marciodat), released under the MIT license