loaf 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -3
- data/.rspec +1 -0
- data/.travis.yml +30 -12
- data/Appraisals +27 -9
- data/CHANGELOG.md +59 -11
- data/Gemfile +11 -11
- data/Gemfile.lock +182 -0
- data/README.md +120 -56
- data/assets/loaf_logo.png +0 -0
- data/bin/appraisal +16 -0
- data/bin/rake +16 -0
- data/gemfiles/rails3.2.gemfile +15 -13
- data/gemfiles/rails4.0.gemfile +13 -12
- data/gemfiles/rails4.1.gemfile +14 -13
- data/gemfiles/rails4.2.gemfile +14 -13
- data/gemfiles/rails5.0.gemfile +22 -0
- data/gemfiles/rails5.1.gemfile +22 -0
- data/lib/loaf.rb +2 -22
- data/lib/loaf/breadcrumb.rb +30 -0
- data/lib/loaf/configuration.rb +7 -8
- data/lib/loaf/controller_extensions.rb +13 -28
- data/lib/loaf/crumb.rb +5 -4
- data/lib/loaf/crumb_formatter.rb +3 -1
- data/lib/loaf/errors.rb +1 -3
- data/lib/loaf/options_validator.rb +2 -2
- data/lib/loaf/railtie.rb +19 -13
- data/lib/loaf/translation.rb +1 -1
- data/lib/loaf/version.rb +1 -3
- data/lib/loaf/view_extensions.rb +69 -18
- data/loaf.gemspec +20 -13
- data/spec/integration/{crumbs_routing_spec.rb → breadcrumb_trail_spec.rb} +19 -12
- data/spec/rails_app/app/controllers/application_controller.rb +2 -0
- data/spec/rails_app/app/controllers/posts_controller.rb +1 -4
- data/spec/rails_app/app/views/layouts/_breadcrumbs.html.erb +7 -5
- data/spec/rails_app/app/views/layouts/application.html.erb +0 -2
- data/spec/rails_app/config/environments/test.rb +1 -1
- data/spec/rails_app/config/secrets.yml +22 -0
- data/spec/spec_helper.rb +3 -3
- data/spec/support/dummy_controller.rb +9 -0
- data/spec/support/dummy_view.rb +42 -2
- data/spec/unit/configuration_spec.rb +35 -0
- data/spec/unit/controller_extensions_spec.rb +5 -14
- data/spec/unit/generators/install_generator_spec.rb +2 -1
- data/spec/unit/view_extensions/breadcrumb_trail_spec.rb +232 -0
- metadata +65 -31
- data/.ruby-version +0 -1
- data/init.rb +0 -3
- data/lib/loaf/builder.rb +0 -38
- data/spec/rails_app/.gitignore +0 -5
- data/spec/rails_app/lib/assets/.gitkeep +0 -0
- data/spec/rails_app/lib/tasks/.gitkeep +0 -0
- data/spec/rails_app/script/rails +0 -6
- data/spec/unit/view_extensions/breadcrumbs_spec.rb +0 -128
data/README.md
CHANGED
@@ -1,27 +1,32 @@
|
|
1
|
+
<div align="center">
|
2
|
+
<img width="237" src="https://cdn.rawgit.com/piotrmurach/loaf/master/assets/loaf_logo.png" alt="loaf logo" />
|
3
|
+
</div>
|
4
|
+
|
1
5
|
# Loaf
|
2
|
-
|
3
|
-
[![
|
4
|
-
[![
|
5
|
-
[![
|
6
|
-
[![
|
7
|
-
[![
|
6
|
+
|
7
|
+
[![Gem Version](https://badge.fury.io/rb/loaf.svg)][gem]
|
8
|
+
[![Build Status](https://secure.travis-ci.org/piotrmurach/loaf.svg?branch=master)][travis]
|
9
|
+
[![Code Climate](https://codeclimate.com/github/piotrmurach/loaf/badges/gpa.svg)][codeclimate]
|
10
|
+
[![Dependency Status](https://gemnasium.com/piotrmurach/loaf.svg?travis)][gemnasium]
|
11
|
+
[![Coverage Status](https://coveralls.io/repos/github/piotrmurach/loaf/badge.svg?branch=master)][coveralls]
|
12
|
+
[![Inline docs](http://inch-ci.org/github/piotrmurach/loaf.svg?branch=master)][inchpages]
|
8
13
|
|
9
14
|
[gem]: http://badge.fury.io/rb/loaf
|
10
|
-
[travis]: http://travis-ci.org/
|
11
|
-
[codeclimate]: https://codeclimate.com/github/
|
12
|
-
[gemnasium]: https://gemnasium.com/
|
13
|
-
[coveralls]: https://coveralls.io/
|
14
|
-
[inchpages]: http://inch-ci.org/github/
|
15
|
+
[travis]: http://travis-ci.org/piotrmurach/loaf
|
16
|
+
[codeclimate]: https://codeclimate.com/github/piotrmurach/loaf
|
17
|
+
[gemnasium]: https://gemnasium.com/piotrmurach/loaf
|
18
|
+
[coveralls]: https://coveralls.io/github/piotrmurach/loaf
|
19
|
+
[inchpages]: http://inch-ci.org/github/piotrmurach/loaf
|
15
20
|
|
16
21
|
> **Loaf** manages and displays breadcrumb trails in your Rails application.
|
17
22
|
|
18
23
|
## Features
|
19
24
|
|
20
|
-
*
|
25
|
+
* Use controllers and/or views to specify breadcrumb trails
|
21
26
|
* Specify urls using Rails conventions
|
22
|
-
* No markup assumptions for breadcrumbs rendering
|
27
|
+
* No markup assumptions for breadcrumbs trails rendering
|
23
28
|
* Use locales file for breadcrumb names
|
24
|
-
* Tested with Rails 3.2
|
29
|
+
* Tested with Rails `>= 3.2` and Ruby `>= 2.0.0`
|
25
30
|
|
26
31
|
## Installation
|
27
32
|
|
@@ -49,11 +54,23 @@ Then run the generator:
|
|
49
54
|
rails generate loaf:install
|
50
55
|
```
|
51
56
|
|
57
|
+
## Contents
|
58
|
+
|
59
|
+
* [1. Usage](#1-usage)
|
60
|
+
* [2. API](#2-api)
|
61
|
+
* [2.1 breadcrumb](#21-breadcrumb)
|
62
|
+
* [2.1.1 controller](#211-controller)
|
63
|
+
* [2.1.2 view](#212-view)
|
64
|
+
* [2.1.3 :match](#213-match)
|
65
|
+
* [2.2 breadcrumb_trail](#22-breadcrumb_trail)
|
66
|
+
* [3. Configuration](#3-configuration)
|
67
|
+
* [4. Translation](#4-translation)
|
68
|
+
|
52
69
|
## 1. Usage
|
53
70
|
|
54
71
|
**Loaf** allows you to add breadcrumbs in controllers and views.
|
55
72
|
|
56
|
-
In order to add breadcrumbs in controller use `breadcrumb` method ([see
|
73
|
+
In order to add breadcrumbs in controller use `breadcrumb` method ([see 2.1](#21-breadcrumb)).
|
57
74
|
|
58
75
|
```ruby
|
59
76
|
class Blog::CategoriesController < ApplicationController
|
@@ -66,28 +83,11 @@ class Blog::CategoriesController < ApplicationController
|
|
66
83
|
end
|
67
84
|
```
|
68
85
|
|
69
|
-
|
70
|
-
|
71
|
-
```ruby
|
72
|
-
<% breadcrumb @category.title, blog_category_path(@category) %>
|
73
|
-
```
|
74
|
-
|
75
|
-
Finally, in your view layout add semantic markup to show breadcrumbs:
|
86
|
+
Then in your view render the breadcrumbs trail using [breadcrumb_trail](#22-breadcrumb_trail)
|
76
87
|
|
77
|
-
|
78
|
-
<ul class='breadcrumbs'>
|
79
|
-
<% breadcrumbs do |name, url, styles| %>
|
80
|
-
<li class="<%= styles %>">
|
81
|
-
<%= link_to name, url %>
|
82
|
-
<span><%= styles == 'selected' ? '' : '::' %></span>
|
83
|
-
</li>
|
84
|
-
<% end %>
|
85
|
-
</ul>
|
86
|
-
```
|
88
|
+
## 2. API
|
87
89
|
|
88
|
-
|
89
|
-
|
90
|
-
### 1.1 breadcrumb
|
90
|
+
### 2.1 breadcrumb
|
91
91
|
|
92
92
|
Creation of breadcrumb in Rails is achieved by the `breadcrumb` helper.
|
93
93
|
|
@@ -117,7 +117,7 @@ You can specify segments of the url:
|
|
117
117
|
breadcrumb @category.title, {controller: 'categories', action: 'show', id: @category.id}
|
118
118
|
```
|
119
119
|
|
120
|
-
####
|
120
|
+
#### 2.1.1 controller
|
121
121
|
|
122
122
|
Breadcrumbs are inherited, so if you set a breadcrumb in `ApplicationController`, it will be inserted as a first element inside every breadcrumb trail. It is customary to set root breadcrumb like so:
|
123
123
|
|
@@ -127,7 +127,7 @@ class ApplicationController < ActionController::Base
|
|
127
127
|
end
|
128
128
|
```
|
129
129
|
|
130
|
-
|
130
|
+
Outside of controller actions the `breadcrumb` helper behaviour is similar to filters/actions and as such you can limit breadcrumb scope with familiar options `:only`, `:except`. Any breadcrumb specified inside actions creates another level in breadcrumbs trail.
|
131
131
|
|
132
132
|
```ruby
|
133
133
|
class ArticlesController < ApplicationController
|
@@ -135,6 +135,20 @@ class ArticlesController < ApplicationController
|
|
135
135
|
end
|
136
136
|
```
|
137
137
|
|
138
|
+
Each time you call the `breadcrumb` helper, a new element is added to a breadcrumb trial stack:
|
139
|
+
|
140
|
+
```ruby
|
141
|
+
class ArticlesController < ApplicationController
|
142
|
+
breadcrumb 'Home', :root_path
|
143
|
+
breadcrumb 'All Articles', :articles_path
|
144
|
+
|
145
|
+
def show
|
146
|
+
breadcrumb 'Article One', article_path(:one)
|
147
|
+
breadcrumb 'Article Two', article_path(:two)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
```
|
151
|
+
|
138
152
|
**Loaf** allows you to call controller instance methods inside the `breadcrumb` helper outside of any action. This is useful if your breadcrumb has parameterized behaviour. For example, to dynamically evaluate parameters for breadcrumb title do:
|
139
153
|
|
140
154
|
```ruby
|
@@ -151,42 +165,92 @@ class CommentsController < ApplicationController
|
|
151
165
|
end
|
152
166
|
```
|
153
167
|
|
154
|
-
|
168
|
+
#### 2.1.2 view
|
155
169
|
|
156
|
-
**Loaf**
|
170
|
+
**Loaf** adds `breadcrumb` helper also to the views. Together with controller breadcrumbs, the view breadcrumbs are appended as the last in breadcrumb trail. For instance, to specify view breadcrumb do:
|
157
171
|
|
158
|
-
|
172
|
+
```ruby
|
173
|
+
<% breadcrumb @category.title, blog_category_path(@category) %>
|
174
|
+
```
|
175
|
+
|
176
|
+
#### 2.1.3 :match
|
177
|
+
|
178
|
+
**Loaf** allows you to define matching conditions in order to make a breadcrumb current with the `:match` option.
|
179
|
+
|
180
|
+
The `:match` key accepts the following values:
|
181
|
+
|
182
|
+
* `:inclusive` - the default value, which matches nested paths
|
183
|
+
* `:exact` - matches only the exact same path
|
184
|
+
* `:exclusive` - matches only direct path and its query params if present
|
185
|
+
* `/regex/` - matches based on regular expression
|
186
|
+
* `{foo: bar}` - match based on query params
|
187
|
+
|
188
|
+
For example, to force a breadcrumb to be the current regardless do:
|
159
189
|
|
160
190
|
```ruby
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
191
|
+
breadcrumb 'New Post', new_post_path, match: :exact
|
192
|
+
```
|
193
|
+
|
194
|
+
To make a breadcrumb current based on the query params do:
|
195
|
+
|
196
|
+
```ruby
|
197
|
+
breadcrumb 'Posts', posts_path(order: :desc), match: {order: :desc}
|
198
|
+
```
|
199
|
+
|
200
|
+
### 2.2 breadcrumb_trail
|
201
|
+
|
202
|
+
In order to display breadcrumbs use the `breadcrumb_trail` view helper which as an argument accepts options and yeilds all breadcrumbs to a block:
|
203
|
+
|
204
|
+
```ruby
|
205
|
+
breadcrumb_trail do |crumb|
|
206
|
+
...
|
166
207
|
end
|
167
208
|
```
|
168
209
|
|
169
|
-
|
210
|
+
The yielded pararmeter is a `Loaf::Crumb` object that provides the following methods:
|
211
|
+
|
212
|
+
```ruby
|
213
|
+
crumb.name # => the name as string
|
214
|
+
crumb.path # => the path as string
|
215
|
+
crumb.url # => alias for path
|
216
|
+
crumb.current? # => true or false
|
217
|
+
```
|
218
|
+
|
219
|
+
For example, you can add the following semantic markup to show breadcrumbs using the `breadcrumb_trail` helper like so:
|
220
|
+
|
221
|
+
```erb
|
222
|
+
<nav aria-label="Breadcrumb">
|
223
|
+
<ol class='breadcrumbs'>
|
224
|
+
<% breadcrumb_trail do |crumb| %>
|
225
|
+
<li class="<%= crumb.current? ? 'current' : '' %>">
|
226
|
+
<%= link_to crumb.name, crumb.url, (crumb.current? ? {'aria-current' => 'page'} : {}) %>
|
227
|
+
<% unless crumb.current? %><span>::</span><% end %>
|
228
|
+
</li>
|
229
|
+
<% end %>
|
230
|
+
</ol>
|
231
|
+
</nav>
|
232
|
+
```
|
233
|
+
|
234
|
+
Usually best practice is to put such snippet inside its own partial.
|
235
|
+
|
236
|
+
## 3. Configuration
|
170
237
|
|
171
238
|
There is a small set of custom opinionated defaults. The following options are valid parameters:
|
172
239
|
|
173
240
|
```ruby
|
174
|
-
:crumb_length # breadcrumb length in integer, default length is 30 characters
|
175
|
-
:root # boolean, default is true, displays the home crumb
|
176
241
|
:capitalize # set breadcrumbs to have initial letter uppercase, default false
|
177
|
-
:
|
178
|
-
# defaults to 'selected'
|
242
|
+
:crumb_length # breadcrumb length in integer, default length is 30 characters
|
179
243
|
```
|
180
244
|
|
181
245
|
You can override them in your views by passing them to the view `breadcrumb` helper
|
182
246
|
|
183
|
-
```
|
184
|
-
<%
|
247
|
+
```erb
|
248
|
+
<% breadcrumb_trail crumb_length: 20 do |name, url, styles| %>
|
185
249
|
..
|
186
250
|
<% end %>
|
187
251
|
```
|
188
252
|
|
189
|
-
or by
|
253
|
+
or by configuring an option in `config/initializers/loaf.rb`:
|
190
254
|
|
191
255
|
```ruby
|
192
256
|
Loaf.configure do |config|
|
@@ -194,7 +258,7 @@ Loaf.configure do |config|
|
|
194
258
|
end
|
195
259
|
```
|
196
260
|
|
197
|
-
##
|
261
|
+
## 4. Translation
|
198
262
|
|
199
263
|
You can use locales files for breadcrumbs' titles. **Loaf** assumes that all breadcrumb names are scoped inside `breadcrumbs` namespace inside `loaf` scope. However, this can be easily changed by passing `scope: 'new_scope_name'` configuration option.
|
200
264
|
|
@@ -225,8 +289,8 @@ en:
|
|
225
289
|
|
226
290
|
## Contributing
|
227
291
|
|
228
|
-
Questions or problems? Please post them on the [issue tracker](https://github.com/
|
292
|
+
Questions or problems? Please post them on the [issue tracker](https://github.com/piotrmurach/loaf/issues). You can contribute changes by forking the project and submitting a pull request. You can ensure the tests are passing by running `bundle` and `rake`.
|
229
293
|
|
230
294
|
## Copyright
|
231
295
|
|
232
|
-
Copyright (c) 2011-
|
296
|
+
Copyright (c) 2011-2017 Piotr Murach. See LICENSE.txt for further details.
|
Binary file
|
data/bin/appraisal
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'appraisal' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require "pathname"
|
10
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require "rubygems"
|
14
|
+
require "bundler/setup"
|
15
|
+
|
16
|
+
load Gem.bin_path("appraisal", "appraisal")
|
data/bin/rake
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'rake' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require "pathname"
|
10
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require "rubygems"
|
14
|
+
require "bundler/setup"
|
15
|
+
|
16
|
+
load Gem.bin_path("rake", "rake")
|
data/gemfiles/rails3.2.gemfile
CHANGED
@@ -2,21 +2,23 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem "ammeter"
|
6
|
-
gem "
|
7
|
-
gem "
|
8
|
-
gem "
|
9
|
-
gem "
|
10
|
-
gem "
|
11
|
-
gem "
|
12
|
-
gem "
|
13
|
-
gem "
|
14
|
-
gem "rails", "~> 3.2.
|
5
|
+
gem "ammeter", "~> 1.1.4"
|
6
|
+
gem "appraisal", "~> 2.2.0"
|
7
|
+
gem "yard", "~> 0.9.9"
|
8
|
+
gem "capybara", "~> 2.15.4"
|
9
|
+
gem "rspec-rails", "~> 3.6.1"
|
10
|
+
gem "nokogiri", "~> 1.6.8"
|
11
|
+
gem "public_suffix", "~> 2.0.5"
|
12
|
+
gem "sqlite3", "~> 1.3.13", platforms: :ruby
|
13
|
+
gem "activerecord-jdbcsqlite3-adapter", "~> 1.3.23", platforms: :jruby
|
14
|
+
gem "rails", "~> 3.2.22.5"
|
15
|
+
gem "test-unit"
|
16
|
+
gem "mime-types", "~> 2.99"
|
15
17
|
|
16
18
|
group :metrics do
|
17
|
-
gem "coveralls", "
|
18
|
-
gem "simplecov", "~> 0.
|
19
|
+
gem "coveralls", "0.8.17"
|
20
|
+
gem "simplecov", "~> 0.12.0"
|
19
21
|
gem "yardstick", "~> 0.9.9"
|
20
22
|
end
|
21
23
|
|
22
|
-
gemspec :
|
24
|
+
gemspec path: "../"
|
data/gemfiles/rails4.0.gemfile
CHANGED
@@ -2,22 +2,23 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem "ammeter"
|
6
|
-
gem "
|
7
|
-
gem "
|
8
|
-
gem "
|
9
|
-
gem "
|
10
|
-
gem "
|
11
|
-
gem "
|
12
|
-
gem "
|
13
|
-
gem "
|
5
|
+
gem "ammeter", "~> 1.1.4"
|
6
|
+
gem "appraisal", "~> 2.2.0"
|
7
|
+
gem "yard", "~> 0.9.9"
|
8
|
+
gem "capybara", "~> 2.15.4"
|
9
|
+
gem "rspec-rails", "~> 3.6.1"
|
10
|
+
gem "nokogiri", "~> 1.6.8"
|
11
|
+
gem "public_suffix", "~> 2.0.5"
|
12
|
+
gem "sqlite3", "~> 1.3.13", platforms: :ruby
|
13
|
+
gem "activerecord-jdbcsqlite3-adapter", "~> 1.3.23", platforms: :jruby
|
14
14
|
gem "rails", "~> 4.0.13"
|
15
15
|
gem "test-unit"
|
16
|
+
gem "mime-types", "~> 2.99"
|
16
17
|
|
17
18
|
group :metrics do
|
18
|
-
gem "coveralls", "
|
19
|
-
gem "simplecov", "~> 0.
|
19
|
+
gem "coveralls", "0.8.17"
|
20
|
+
gem "simplecov", "~> 0.12.0"
|
20
21
|
gem "yardstick", "~> 0.9.9"
|
21
22
|
end
|
22
23
|
|
23
|
-
gemspec :
|
24
|
+
gemspec path: "../"
|
data/gemfiles/rails4.1.gemfile
CHANGED
@@ -2,21 +2,22 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem "ammeter"
|
6
|
-
gem "
|
7
|
-
gem "
|
8
|
-
gem "
|
9
|
-
gem "
|
10
|
-
gem "
|
11
|
-
gem "
|
12
|
-
gem "
|
13
|
-
gem "
|
14
|
-
gem "rails", "~> 4.1.
|
5
|
+
gem "ammeter", "~> 1.1.4"
|
6
|
+
gem "appraisal", "~> 2.2.0"
|
7
|
+
gem "yard", "~> 0.9.9"
|
8
|
+
gem "capybara", "~> 2.15.4"
|
9
|
+
gem "rspec-rails", "~> 3.6.1"
|
10
|
+
gem "nokogiri", "~> 1.6.8"
|
11
|
+
gem "public_suffix", "~> 2.0.5"
|
12
|
+
gem "sqlite3", "~> 1.3.13", platforms: :ruby
|
13
|
+
gem "activerecord-jdbcsqlite3-adapter", "~> 1.3.23", platforms: :jruby
|
14
|
+
gem "rails", "~> 4.1.16"
|
15
|
+
gem "mime-types", "~> 2.99"
|
15
16
|
|
16
17
|
group :metrics do
|
17
|
-
gem "coveralls", "
|
18
|
-
gem "simplecov", "~> 0.
|
18
|
+
gem "coveralls", "0.8.17"
|
19
|
+
gem "simplecov", "~> 0.12.0"
|
19
20
|
gem "yardstick", "~> 0.9.9"
|
20
21
|
end
|
21
22
|
|
22
|
-
gemspec :
|
23
|
+
gemspec path: "../"
|
data/gemfiles/rails4.2.gemfile
CHANGED
@@ -2,21 +2,22 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
-
gem "ammeter"
|
6
|
-
gem "
|
7
|
-
gem "
|
8
|
-
gem "
|
9
|
-
gem "
|
10
|
-
gem "
|
11
|
-
gem "
|
12
|
-
gem "
|
13
|
-
gem "
|
14
|
-
gem "rails", "~> 4.2.
|
5
|
+
gem "ammeter", "~> 1.1.4"
|
6
|
+
gem "appraisal", "~> 2.2.0"
|
7
|
+
gem "yard", "~> 0.9.9"
|
8
|
+
gem "capybara", "~> 2.15.4"
|
9
|
+
gem "rspec-rails", "~> 3.6.1"
|
10
|
+
gem "nokogiri", "~> 1.6.8"
|
11
|
+
gem "public_suffix", "~> 2.0.5"
|
12
|
+
gem "sqlite3", "~> 1.3.13", platforms: :ruby
|
13
|
+
gem "activerecord-jdbcsqlite3-adapter", "~> 1.3.23", platforms: :jruby
|
14
|
+
gem "rails", "~> 4.2.9"
|
15
|
+
gem "mime-types", "~> 2.99"
|
15
16
|
|
16
17
|
group :metrics do
|
17
|
-
gem "coveralls", "
|
18
|
-
gem "simplecov", "~> 0.
|
18
|
+
gem "coveralls", "0.8.17"
|
19
|
+
gem "simplecov", "~> 0.12.0"
|
19
20
|
gem "yardstick", "~> 0.9.9"
|
20
21
|
end
|
21
22
|
|
22
|
-
gemspec :
|
23
|
+
gemspec path: "../"
|