croutons 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d49c400b14e1ccce5fab8540166dbc4d300df853
4
+ data.tar.gz: 770ec40bb463b47d65e3db37929b93d3362c68fc
5
+ SHA512:
6
+ metadata.gz: 52df3bd704b508230ea387837a433e0047c1db40ca01166da459be7cefc4676912b0fb6ab85cc424b3c3c53f2158ab50445be67206ca0e28b32cc0fe5ccadc2c
7
+ data.tar.gz: e69654ec8e87815c9c2b8d2cb4472486511eb6c72a81bd7cce9fb9cf01218d69dc55427a76f2a55eaef2e0190e31419a39bf6c2e94a0cdc759dd66f2fa961468
@@ -0,0 +1,3 @@
1
+ .bundle/
2
+ pkg/
3
+ spec/dummy_app
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Declare your gem's dependencies in croutons.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'
@@ -0,0 +1,120 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ croutons (0.0.1)
5
+ rails (>= 4.1.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ actionmailer (4.1.5)
11
+ actionpack (= 4.1.5)
12
+ actionview (= 4.1.5)
13
+ mail (~> 2.5.4)
14
+ actionpack (4.1.5)
15
+ actionview (= 4.1.5)
16
+ activesupport (= 4.1.5)
17
+ rack (~> 1.5.2)
18
+ rack-test (~> 0.6.2)
19
+ actionview (4.1.5)
20
+ activesupport (= 4.1.5)
21
+ builder (~> 3.1)
22
+ erubis (~> 2.7.0)
23
+ activemodel (4.1.5)
24
+ activesupport (= 4.1.5)
25
+ builder (~> 3.1)
26
+ activerecord (4.1.5)
27
+ activemodel (= 4.1.5)
28
+ activesupport (= 4.1.5)
29
+ arel (~> 5.0.0)
30
+ activesupport (4.1.5)
31
+ i18n (~> 0.6, >= 0.6.9)
32
+ json (~> 1.7, >= 1.7.7)
33
+ minitest (~> 5.1)
34
+ thread_safe (~> 0.1)
35
+ tzinfo (~> 1.1)
36
+ arel (5.0.1.20140414130214)
37
+ builder (3.2.2)
38
+ capybara (2.3.0)
39
+ mime-types (>= 1.16)
40
+ nokogiri (>= 1.3.3)
41
+ rack (>= 1.0.0)
42
+ rack-test (>= 0.5.4)
43
+ xpath (~> 2.0)
44
+ diff-lcs (1.2.5)
45
+ erubis (2.7.0)
46
+ hike (1.2.3)
47
+ i18n (0.6.11)
48
+ json (1.8.1)
49
+ mail (2.5.4)
50
+ mime-types (~> 1.16)
51
+ treetop (~> 1.4.8)
52
+ mime-types (1.25.1)
53
+ mini_portile (0.6.0)
54
+ minitest (5.4.1)
55
+ multi_json (1.10.1)
56
+ nokogiri (1.6.3.1)
57
+ mini_portile (= 0.6.0)
58
+ polyglot (0.3.5)
59
+ rack (1.5.2)
60
+ rack-test (0.6.2)
61
+ rack (>= 1.0)
62
+ rails (4.1.5)
63
+ actionmailer (= 4.1.5)
64
+ actionpack (= 4.1.5)
65
+ actionview (= 4.1.5)
66
+ activemodel (= 4.1.5)
67
+ activerecord (= 4.1.5)
68
+ activesupport (= 4.1.5)
69
+ bundler (>= 1.3.0, < 2.0)
70
+ railties (= 4.1.5)
71
+ sprockets-rails (~> 2.0)
72
+ railties (4.1.5)
73
+ actionpack (= 4.1.5)
74
+ activesupport (= 4.1.5)
75
+ rake (>= 0.8.7)
76
+ thor (>= 0.18.1, < 2.0)
77
+ rake (10.3.2)
78
+ rspec-core (3.0.3)
79
+ rspec-support (~> 3.0.0)
80
+ rspec-expectations (3.0.3)
81
+ diff-lcs (>= 1.2.0, < 2.0)
82
+ rspec-support (~> 3.0.0)
83
+ rspec-mocks (3.0.3)
84
+ rspec-support (~> 3.0.0)
85
+ rspec-rails (3.0.2)
86
+ actionpack (>= 3.0)
87
+ activesupport (>= 3.0)
88
+ railties (>= 3.0)
89
+ rspec-core (~> 3.0.0)
90
+ rspec-expectations (~> 3.0.0)
91
+ rspec-mocks (~> 3.0.0)
92
+ rspec-support (~> 3.0.0)
93
+ rspec-support (3.0.3)
94
+ sprockets (2.12.1)
95
+ hike (~> 1.2)
96
+ multi_json (~> 1.0)
97
+ rack (~> 1.0)
98
+ tilt (~> 1.1, != 1.3.0)
99
+ sprockets-rails (2.1.4)
100
+ actionpack (>= 3.0)
101
+ activesupport (>= 3.0)
102
+ sprockets (~> 2.8)
103
+ thor (0.19.1)
104
+ thread_safe (0.3.4)
105
+ tilt (1.4.1)
106
+ treetop (1.4.15)
107
+ polyglot
108
+ polyglot (>= 0.3.1)
109
+ tzinfo (1.2.2)
110
+ thread_safe (~> 0.1)
111
+ xpath (2.0.0)
112
+ nokogiri (~> 1.3)
113
+
114
+ PLATFORMS
115
+ ruby
116
+
117
+ DEPENDENCIES
118
+ capybara
119
+ croutons!
120
+ rspec-rails
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2014 Calle Erlandsson, George Brocklehurst, and thoughtbot inc.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,22 @@
1
+ # Croutons
2
+
3
+ Easy breadcrumbs for Rails apps.
4
+
5
+ ## Usage
6
+
7
+ 1. Include `Croutons::Controller` in `ApplicationController`
8
+ 2. Call the `#breadcrumbs` helper in your layout or other views
9
+ 3. Define a `BreadcrumbTrail` class, which inherits from
10
+ `Croutons::BreadcrumbTrail`
11
+ 4. Define missing methods on the `BreadcrumbTrail` class. For example, for
12
+ the `admin/locations/index.html.erb` view you would define a
13
+ `#admin_locations_index` method.
14
+
15
+ In these methods you build up a breadcrumb trail by calling `#breadcrumb`
16
+ with a label and an optional URL, and calling the methods for other views
17
+ to build on existing trails. View assigns (i.e. the controller ivars) are
18
+ available via the `#objects` method which returns a hash.
19
+
20
+ ## License
21
+
22
+ MIT. See the LICENSE file for details.
@@ -0,0 +1,7 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,9 @@
1
+ <ul class="breadcrumbs">
2
+ <% breadcrumbs.each do |breadcrumb| %>
3
+ <% if breadcrumb.link? %>
4
+ <li><%= link_to breadcrumb.label, breadcrumb.url %></li>
5
+ <% else %>
6
+ <li><%= breadcrumb.label %></li>
7
+ <% end %>
8
+ <% end %>
9
+ </ul>
@@ -0,0 +1,19 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+
3
+ require "croutons/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "croutons"
7
+ s.version = Croutons::VERSION
8
+ s.authors = ["Calle Erlandsson", "George Brocklehurst"]
9
+ s.email = ["calle@thoughtbot.com", "george@thoughtbot.com", "hello@thoughtbot.com"]
10
+ s.homepage = "https://github.com/thoughtbot/croutons"
11
+ s.summary = "Easy breadcrumbs for Rails apps."
12
+ s.license = "MIT"
13
+ s.files = `git ls-files -z`.split("\x0")
14
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
15
+ s.require_paths = ["lib"]
16
+ s.add_dependency "rails", ">= 4.1.0"
17
+ s.add_development_dependency "rspec-rails"
18
+ s.add_development_dependency "capybara"
19
+ end
@@ -0,0 +1,6 @@
1
+ require 'croutons/engine'
2
+ require 'croutons/controller'
3
+ require 'croutons/breadcrumb_trail'
4
+
5
+ module Croutons
6
+ end
@@ -0,0 +1,26 @@
1
+ module Croutons
2
+ class Breadcrumb
3
+ attr_reader :label, :url
4
+
5
+ def initialize(label, url = nil)
6
+ self.label = label
7
+ self.url = url
8
+ end
9
+
10
+ def labelize
11
+ self.url = nil
12
+ end
13
+
14
+ def link?
15
+ url.present?
16
+ end
17
+
18
+ def ==(other)
19
+ label == other.label && url == other.url
20
+ end
21
+
22
+ private
23
+
24
+ attr_writer :label, :url
25
+ end
26
+ end
@@ -0,0 +1,51 @@
1
+ require 'croutons/breadcrumb'
2
+
3
+ module Croutons
4
+ class BreadcrumbTrail
5
+ def self.breadcrumbs(*args)
6
+ new(*args).breadcrumbs
7
+ end
8
+
9
+ attr_reader :breadcrumbs
10
+
11
+ def initialize(template_identifer, objects = {})
12
+ @template_identifer = template_identifer
13
+ @objects = objects.with_indifferent_access
14
+ @breadcrumbs = []
15
+ build_breadcrumbs
16
+ end
17
+
18
+ def method_missing(name, *args)
19
+ if respond_to_missing?(name)
20
+ Rails.application.routes.url_helpers.public_send(name, *args)
21
+ else
22
+ super
23
+ end
24
+ end
25
+
26
+ def respond_to_missing?(name)
27
+ Rails.application.routes.url_helpers.respond_to?(name)
28
+ end
29
+
30
+ private
31
+
32
+ attr_reader :template_identifer, :objects
33
+
34
+ def build_breadcrumbs
35
+ send(template_identifer)
36
+ labelize_last
37
+ end
38
+
39
+ def labelize_last
40
+ breadcrumbs.last.try(:labelize)
41
+ end
42
+
43
+ def breadcrumb(*args)
44
+ breadcrumbs << Breadcrumb.new(*args)
45
+ end
46
+
47
+ def t(*args)
48
+ I18n.t(*args)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,35 @@
1
+ module Croutons
2
+ module Controller
3
+ def self.included(controller)
4
+ controller.helper_method(:breadcrumbs)
5
+ end
6
+
7
+ def render_to_body(options)
8
+ @_template = options[:template]
9
+ @_prefixes = options[:prefixes]
10
+ super
11
+ end
12
+
13
+ private
14
+
15
+ def breadcrumbs
16
+ template = lookup_context.find_template(@_template, @_prefixes)
17
+ template_identifier = template.virtual_path.gsub('/', '_')
18
+ breadcrumbs = breadcrumb_trail.breadcrumbs(template_identifier, view_assigns)
19
+ render_to_string(
20
+ partial: 'breadcrumbs/breadcrumbs',
21
+ locals: { breadcrumbs: breadcrumbs },
22
+ )
23
+ end
24
+
25
+ def breadcrumb_trail
26
+ ::BreadcrumbTrail
27
+ rescue NameError
28
+ raise NotImplementedError,
29
+ 'Define a `BreadcrumbTrail` class that inherits from '\
30
+ '`Breadcrumbs::BreadcrumbTrail`, or override the '\
31
+ '`breadcrumb_trail` method in your controller so that it '\
32
+ 'returns an object that responds to `#breadcrumbs`.'
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,6 @@
1
+ require 'rails'
2
+
3
+ module Croutons
4
+ class Engine < Rails::Engine
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ module Croutons
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,63 @@
1
+ require "spec_helper"
2
+
3
+ describe "Breadcrumbs" do
4
+ before(:all) do |test|
5
+ setup_rails_app do |rails_app|
6
+ rails_app.scaffold_model "Post", "title:string"
7
+ rails_app.add_croutons_mixin_to_application_controller
8
+ rails_app.add_breadcrumbs_to_layout
9
+ rails_app.add_breadcrumb_trail_class <<-RUBY
10
+ require "croutons/breadcrumb_trail"
11
+
12
+ class BreadcrumbTrail < Croutons::BreadcrumbTrail
13
+ private
14
+
15
+ def posts_index
16
+ breadcrumb("Posts", posts_path)
17
+ end
18
+
19
+ def posts_show
20
+ posts_index
21
+ breadcrumb(objects[:post].title)
22
+ end
23
+ end
24
+ RUBY
25
+ end
26
+
27
+ test.class.send :include, Capybara::DSL
28
+ test.class.send :include, Rails.application.routes.url_helpers
29
+ end
30
+
31
+ it "are rendered on page" do
32
+ post = Post.create!(title: "My first post")
33
+
34
+ visit posts_path
35
+
36
+ with_breadcrumbs do |items|
37
+ expect(items.length).to eq 1
38
+ expect(items.first).to have_content("Posts")
39
+ expect(items.first).not_to have_css("a")
40
+ end
41
+
42
+ visit post_path(post)
43
+
44
+ with_breadcrumbs do |items|
45
+ expect(items.length).to eq 2
46
+ expect(items.first).to have_link("Posts", href: posts_path)
47
+ expect(items.last).to have_content(post.title)
48
+ expect(items.last).not_to have_css("a")
49
+ end
50
+ end
51
+
52
+ context "when not defined" do
53
+ it "raises a helpful exception" do
54
+ expect { visit new_post_path }.to raise_exception(/posts_new/)
55
+ end
56
+ end
57
+
58
+ def with_breadcrumbs
59
+ within(".breadcrumbs") do
60
+ yield all("li")
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,47 @@
1
+ require "spec_helper"
2
+ require "croutons/breadcrumb"
3
+
4
+ describe Croutons::Breadcrumb do
5
+ describe "#labelize" do
6
+ it "sets url to nil" do
7
+ breadcrumb = described_class.new("Some text", "Some url")
8
+
9
+ breadcrumb.labelize
10
+
11
+ expect(breadcrumb.url).to be_nil
12
+ end
13
+ end
14
+
15
+ describe "#link?" do
16
+ it "returns true when the url is present" do
17
+ expect(described_class.new("Some text", "Some url")).to be_link
18
+ end
19
+
20
+ it "returns false when the url is blank" do
21
+ expect(described_class.new("Some text", nil)).not_to be_link
22
+ end
23
+ end
24
+
25
+ describe "#==" do
26
+ it "returns true when the label and URL match" do
27
+ one = described_class.new("label", "url")
28
+ two = described_class.new("label", "url")
29
+
30
+ expect(one).to eq(two)
31
+ end
32
+
33
+ it "returns false when the labels differ" do
34
+ one = described_class.new("label", "url")
35
+ two = described_class.new("other", "url")
36
+
37
+ expect(one).not_to eq(two)
38
+ end
39
+
40
+ it "returns false when the URLs differ" do
41
+ one = described_class.new("label", "url")
42
+ two = described_class.new("label", "other")
43
+
44
+ expect(one).not_to eq(two)
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,83 @@
1
+ require "spec_helper"
2
+ require "croutons/breadcrumb_trail"
3
+ require "croutons/breadcrumb"
4
+ require "rails"
5
+
6
+ describe Croutons::BreadcrumbTrail do
7
+ describe ".breadcrumbs" do
8
+ let(:trail) do
9
+ Class.new(described_class) do
10
+ def one
11
+ breadcrumb("One", "/one")
12
+ end
13
+
14
+ def two
15
+ one
16
+ breadcrumb("Two", "/two")
17
+ end
18
+
19
+ def thing
20
+ breadcrumb(objects[:thing])
21
+ end
22
+
23
+ def translated
24
+ breadcrumb(t(objects[:key]))
25
+ end
26
+
27
+ def routes
28
+ breadcrumb("Some path", some_path)
29
+ breadcrumb("You are here")
30
+ end
31
+ end
32
+ end
33
+
34
+ context "for a known template identifier" do
35
+ it "returns breadcrumbs" do
36
+ expect(trail.breadcrumbs(:one)).to eq [
37
+ Croutons::Breadcrumb.new("One"),
38
+ ]
39
+ end
40
+
41
+ it "removes the URL from the final crumb" do
42
+ expect(trail.breadcrumbs(:two)).to eq [
43
+ Croutons::Breadcrumb.new("One", "/one"),
44
+ Croutons::Breadcrumb.new("Two"),
45
+ ]
46
+ end
47
+
48
+ it "makes the given objects available through #objects" do
49
+ expect(trail.breadcrumbs(:thing, thing: "Foo")).
50
+ to eq [Croutons::Breadcrumb.new("Foo")]
51
+ expect(trail.breadcrumbs(:thing, "thing" => "Bar")).
52
+ to eq [Croutons::Breadcrumb.new("Bar")]
53
+ end
54
+
55
+ it "makes I18n available" do
56
+ allow(I18n).to receive(:t).
57
+ with("some.translation").
58
+ and_return("translated string")
59
+ expect(trail.breadcrumbs(:translated, key: "some.translation")).
60
+ to eq [Croutons::Breadcrumb.new("translated string")]
61
+ end
62
+
63
+ it "makes Rails route helpers available" do
64
+ route_helpers = double("route_helpers", some_path: "/some/path")
65
+ allow(Rails).
66
+ to receive_message_chain(:application, :routes, :url_helpers).
67
+ and_return(route_helpers)
68
+
69
+ expect(trail.breadcrumbs(:routes)).to eq [
70
+ Croutons::Breadcrumb.new("Some path", "/some/path"),
71
+ Croutons::Breadcrumb.new("You are here"),
72
+ ]
73
+ end
74
+ end
75
+
76
+ context "for an unknown template identifier" do
77
+ it "raises a helpful exception" do
78
+ expect { trail.breadcrumbs(:not_real) }.
79
+ to raise_exception(NoMethodError)
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,11 @@
1
+ require "active_support/all"
2
+
3
+ ENV["RAILS_ENV"] = "test"
4
+
5
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
6
+
7
+ RSpec.configure do |config|
8
+ config.expect_with :rspec do |c|
9
+ c.syntax = :expect
10
+ end
11
+ end
@@ -0,0 +1,105 @@
1
+ class RailsApp
2
+ PROJECT_ROOT = File.expand_path("../../..", __FILE__).freeze
3
+
4
+ module Helpers
5
+ def setup_rails_app(&block)
6
+ RailsApp.new.setup(&block)
7
+ end
8
+ end
9
+
10
+ def setup
11
+ create_rails_app
12
+ disable_class_caching
13
+ customize_gemfile
14
+ bundle
15
+ yield self
16
+ setup_database
17
+ load_environment
18
+ end
19
+
20
+ def scaffold_model(name, *columns)
21
+ in_app_directory do
22
+ run "rails generate scaffold #{name} #{columns.join(' ')} --test-framework=none"
23
+ end
24
+ end
25
+
26
+ def add_croutons_mixin_to_application_controller
27
+ transform_file(path("app/controllers/application_controller.rb")) do |content|
28
+ content.sub(
29
+ /^(class.*)$/,
30
+ "require 'croutons/controller'\n\n\\1\n include Croutons::Controller\n"
31
+ )
32
+ end
33
+ end
34
+
35
+ def add_breadcrumbs_to_layout
36
+ transform_file(path("app/views/layouts/application.html.erb")) do |content|
37
+ content.sub("<body>", "<body>\n<%= breadcrumbs %>")
38
+ end
39
+ end
40
+
41
+ def add_breadcrumb_trail_class(source)
42
+ File.write(path("app/models/breadcrumb_trail.rb"), source)
43
+ end
44
+
45
+ private
46
+
47
+ def create_rails_app
48
+ run "bundle exec rails new #{path} --skip-bundle --force"
49
+ end
50
+
51
+ def disable_class_caching
52
+ transform_file(path("config/environments/test.rb")) do |content|
53
+ content.gsub(/^\s*config\.cache_classes.*$/, "config.cache_classes = false")
54
+ end
55
+ end
56
+
57
+ def customize_gemfile
58
+ File.open(path("Gemfile"), "a") do |f|
59
+ f << "gem 'croutons', path: '#{PROJECT_ROOT}'\n"
60
+ f << "gem 'rspec-rails', group: :test\n"
61
+ f << "gem 'capybara', group: :test\n"
62
+ end
63
+ end
64
+
65
+ def bundle
66
+ in_app_directory do
67
+ run "bundle"
68
+ end
69
+ end
70
+
71
+ def setup_database
72
+ in_app_directory do
73
+ run "rake db:drop:all db:create:all db:migrate"
74
+ end
75
+ end
76
+
77
+ def load_environment
78
+ require path("config/environment.rb")
79
+ require "rspec/rails"
80
+ end
81
+
82
+ def in_app_directory(&block)
83
+ Dir.chdir(path, &block)
84
+ end
85
+
86
+ def run(command)
87
+ `#{command}`
88
+ end
89
+
90
+ def transform_file(filename)
91
+ content = File.read(filename)
92
+ File.open(filename, "w") do |f|
93
+ content = yield(content)
94
+ f.write(content)
95
+ end
96
+ end
97
+
98
+ def path(filename = "")
99
+ File.join(PROJECT_ROOT, "spec", "dummy_app", filename)
100
+ end
101
+ end
102
+
103
+ RSpec.configure do |config|
104
+ config.include RailsApp::Helpers
105
+ end
metadata ADDED
@@ -0,0 +1,113 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: croutons
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Calle Erlandsson
8
+ - George Brocklehurst
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-09-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: 4.1.0
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: 4.1.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: rspec-rails
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: capybara
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ description:
57
+ email:
58
+ - calle@thoughtbot.com
59
+ - george@thoughtbot.com
60
+ - hello@thoughtbot.com
61
+ executables: []
62
+ extensions: []
63
+ extra_rdoc_files: []
64
+ files:
65
+ - ".gitignore"
66
+ - Gemfile
67
+ - Gemfile.lock
68
+ - LICENSE
69
+ - README.md
70
+ - Rakefile
71
+ - app/views/breadcrumbs/_breadcrumbs.html.erb
72
+ - croutons.gemspec
73
+ - lib/croutons.rb
74
+ - lib/croutons/breadcrumb.rb
75
+ - lib/croutons/breadcrumb_trail.rb
76
+ - lib/croutons/controller.rb
77
+ - lib/croutons/engine.rb
78
+ - lib/croutons/version.rb
79
+ - spec/features/breadcrumbs_spec.rb
80
+ - spec/lib/croutons/breadcrumb_spec.rb
81
+ - spec/lib/croutons/breadcrumb_trail_spec.rb
82
+ - spec/spec_helper.rb
83
+ - spec/support/rails_app.rb
84
+ homepage: https://github.com/thoughtbot/croutons
85
+ licenses:
86
+ - MIT
87
+ metadata: {}
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubyforge_project:
104
+ rubygems_version: 2.2.2
105
+ signing_key:
106
+ specification_version: 4
107
+ summary: Easy breadcrumbs for Rails apps.
108
+ test_files:
109
+ - spec/features/breadcrumbs_spec.rb
110
+ - spec/lib/croutons/breadcrumb_spec.rb
111
+ - spec/lib/croutons/breadcrumb_trail_spec.rb
112
+ - spec/spec_helper.rb
113
+ - spec/support/rails_app.rb