gretel-trails 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +39 -15
- data/gretel-trails.gemspec +1 -1
- data/lib/gretel/trails.rb +17 -9
- data/lib/gretel/trails/patches/renderer.rb +15 -1
- data/lib/gretel/trails/patches/view_helpers.rb +8 -0
- data/lib/gretel/trails/stores/store.rb +2 -5
- data/lib/gretel/trails/strategies/hidden_strategy.rb +17 -0
- data/lib/gretel/trails/version.rb +1 -1
- data/test/dummy/app/controllers/home_controller.rb +7 -0
- data/test/dummy/app/views/home/about.html.erb +11 -0
- data/test/dummy/app/views/home/index.html.erb +1 -0
- data/test/{gretel_trails_test.rb → strategies/hidden_strategy_test.rb} +21 -5
- data/test/trails_test.rb +12 -0
- metadata +13 -9
- data/test/dummy/config/initializers/gretel.rb +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ecb5003348bd54d39ff554ef56de1f38c82f0bf
|
4
|
+
data.tar.gz: 4c2cde48545343930bb454cda4d2e2f63cb330e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70a4faff241e9417d5791048af7a7972a33f3c3f2e101e5756ca8426f6e5deade6796aec721962c0c15bf6ce3f16b384a44244f278fca391da44548a0221f9c6
|
7
|
+
data.tar.gz: 38cf86aeef2f3e9cb402c4697dfac4815d825215b778460a52c396a641b94dc60f2820418767104e51cb043d59421a8ce1aceea25d74b851e610b397002bf433
|
data/README.md
CHANGED
@@ -29,7 +29,9 @@ The default store is the URL store that encodes trails directly in the URL. Note
|
|
29
29
|
In order to use the URL store, you must set a secret that's used to prevent cross-site scripting attacks. In an initializer, e.g. *config/initializers/gretel.rb*:
|
30
30
|
|
31
31
|
```
|
32
|
-
Gretel::Trails
|
32
|
+
Gretel::Trails.configure do |config|
|
33
|
+
config.store.secret = 'your_key_here' # Must be changed to something else to be secure
|
34
|
+
end
|
33
35
|
```
|
34
36
|
|
35
37
|
You can generate a secret using `SecureRandom.hex(64)` or `rake secret`.
|
@@ -51,7 +53,9 @@ The product view will now have the breadcrumb trail from the first page (reviews
|
|
51
53
|
The default trail param is `params[:trail]`. You can change it in an initializer:
|
52
54
|
|
53
55
|
```ruby
|
54
|
-
Gretel::Trails.
|
56
|
+
Gretel::Trails.configure do |config|
|
57
|
+
config.trail_param = :other_param
|
58
|
+
end
|
55
59
|
```
|
56
60
|
|
57
61
|
## Hiding trails in URLs
|
@@ -61,7 +65,9 @@ Gretel::Trails has a `:hidden` strategy that can be used to hide trails in URLs
|
|
61
65
|
To hide trails, you set the strategy in an initializer, e.g. *config/initializers/gretel.rb*:
|
62
66
|
|
63
67
|
```ruby
|
64
|
-
Gretel::Trails.
|
68
|
+
Gretel::Trails.configure do |config|
|
69
|
+
config.strategy = :hidden
|
70
|
+
end
|
65
71
|
```
|
66
72
|
|
67
73
|
Add a data attribute with the trail to your `<body>` tag, in *application.html.erb*:
|
@@ -117,24 +123,30 @@ If you want to do custom breadcrumb links with these changes applied, you can us
|
|
117
123
|
|
118
124
|
The link will now have a URL without the trail param and `data-trail` containing the trail.
|
119
125
|
|
120
|
-
|
126
|
+
### Customization
|
121
127
|
|
122
|
-
|
128
|
+
#### JS selector
|
123
129
|
|
124
130
|
If you want to customize the JS selector (the default is `.js-append-trail`), you can do so in an initializer:
|
125
131
|
|
126
132
|
```ruby
|
127
|
-
Gretel::Trails
|
133
|
+
Gretel::Trails.configure do |config|
|
134
|
+
config.strategy = :hidden
|
135
|
+
config.hidden.js_selector = ".my-other-selector"
|
136
|
+
end
|
128
137
|
```
|
129
138
|
|
130
139
|
It supports all [CSS selectors](http://api.jquery.com/category/selectors/) that you can use in jQuery.
|
131
140
|
|
132
|
-
|
141
|
+
#### Data attribute
|
133
142
|
|
134
143
|
The default trail data attribute for `<body>` and links is `data-trail` but you can change this in an initializer:
|
135
144
|
|
136
145
|
```ruby
|
137
|
-
Gretel::Trails
|
146
|
+
Gretel::Trails.configure do |config|
|
147
|
+
config.strategy = :hidden
|
148
|
+
config.hidden.data_attribute = "other-data-attribute"
|
149
|
+
end
|
138
150
|
```
|
139
151
|
|
140
152
|
`data-` is added automatically, so if for example you want the attribute to be `data-my-attr`, you just set it to `my-attr`.
|
@@ -150,8 +162,10 @@ The default store is the URL store which is great for simple use, but if you hav
|
|
150
162
|
To use the URL store, set it in an initializer, e.g. *config/initializers/gretel.rb*:
|
151
163
|
|
152
164
|
```ruby
|
153
|
-
Gretel::Trails.
|
154
|
-
|
165
|
+
Gretel::Trails.configure do |config|
|
166
|
+
config.store = :url # Not really needed as this is the default
|
167
|
+
config.store.secret = 'your_key_here' # Must be changed to something else to be secure
|
168
|
+
end
|
155
169
|
```
|
156
170
|
|
157
171
|
The secret is used to prevent cross-site scripting attacks. You can generate a secure one using `SecureRandom.hex(64)` or `rake secret`.
|
@@ -163,7 +177,9 @@ The database store stores trails in the database so the trail keys have a maximu
|
|
163
177
|
To use the database store, set it an initializer, e.g. *config/initializers/gretel.rb*:
|
164
178
|
|
165
179
|
```ruby
|
166
|
-
Gretel::Trails.
|
180
|
+
Gretel::Trails.configure do |config|
|
181
|
+
config.store = :db
|
182
|
+
end
|
167
183
|
```
|
168
184
|
|
169
185
|
You also need to create a migration for the database table that holds the trails:
|
@@ -187,7 +203,10 @@ If you need a gem for managing recurring tasks, [Whenever](https://github.com/ja
|
|
187
203
|
The default expiration period is 1 day. To set a custom expiration period, in an initializer:
|
188
204
|
|
189
205
|
```ruby
|
190
|
-
Gretel::Trails
|
206
|
+
Gretel::Trails.configure do |config|
|
207
|
+
config.store = :db
|
208
|
+
config.store.expires_in = 2.days
|
209
|
+
end
|
191
210
|
```
|
192
211
|
|
193
212
|
### Redis store
|
@@ -197,8 +216,10 @@ If you want to store trails in [Redis](https://github.com/redis/redis), you can
|
|
197
216
|
To use the Redis store, set it in an initializer, e.g. *config/initializers/gretel.rb*:
|
198
217
|
|
199
218
|
```ruby
|
200
|
-
Gretel::Trails.
|
201
|
-
|
219
|
+
Gretel::Trails.configure do |config|
|
220
|
+
config.store = :redis
|
221
|
+
config.store.connect_options = { host: "10.0.1.1", port: 6380 }
|
222
|
+
end
|
202
223
|
```
|
203
224
|
|
204
225
|
Trails are now stored in Redis and expired automatically after 1 day (by default).
|
@@ -206,7 +227,10 @@ Trails are now stored in Redis and expired automatically after 1 day (by default
|
|
206
227
|
To set a custom expiration period, in an initializer:
|
207
228
|
|
208
229
|
```ruby
|
209
|
-
Gretel::Trails
|
230
|
+
Gretel::Trails.configure do |config|
|
231
|
+
config.store = :redis
|
232
|
+
config.store.expires_in = 2.days
|
233
|
+
end
|
210
234
|
```
|
211
235
|
|
212
236
|
## Requirements
|
data/gretel-trails.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^test/})
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
-
spec.add_dependency "gretel", ">= 3.0.0.
|
20
|
+
spec.add_dependency "gretel", ">= 3.0.0.beta6"
|
21
21
|
spec.add_dependency "rails", ">= 3.2.0"
|
22
22
|
spec.add_development_dependency "rails", "~> 3.2.13"
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.3"
|
data/lib/gretel/trails.rb
CHANGED
@@ -7,13 +7,15 @@ require "gretel/trails/engine"
|
|
7
7
|
|
8
8
|
module Gretel
|
9
9
|
module Trails
|
10
|
-
|
10
|
+
DEFAULT_STORES = {
|
11
11
|
url: UrlStore,
|
12
12
|
db: ActiveRecordStore,
|
13
13
|
redis: RedisStore
|
14
14
|
}
|
15
15
|
|
16
16
|
class << self
|
17
|
+
include Gretel::Resettable
|
18
|
+
|
17
19
|
# Activated strategies
|
18
20
|
def strategies
|
19
21
|
@strategies ||= []
|
@@ -40,14 +42,26 @@ module Gretel
|
|
40
42
|
# Can be a subclass of +Gretel::Trails::Store+, or a symbol: +:url+, +:db+, or +:redis+.
|
41
43
|
def store=(value)
|
42
44
|
if value.is_a?(Symbol)
|
43
|
-
klass =
|
44
|
-
raise ArgumentError, "Unknown Gretel::Trails.store #{value.inspect}. Use any of #{
|
45
|
+
klass = available_stores[value]
|
46
|
+
raise ArgumentError, "Unknown Gretel::Trails.store #{value.inspect}. Use any of #{available_stores.inspect}." unless klass
|
45
47
|
self.store = klass
|
46
48
|
else
|
47
49
|
@store = value
|
48
50
|
end
|
49
51
|
end
|
50
52
|
|
53
|
+
# Registers a store for use with `Gretel::Trails.store = :key`.
|
54
|
+
#
|
55
|
+
# Gretel::Trails.register_store :url, UrlStore
|
56
|
+
def register_store(key, klass)
|
57
|
+
available_stores[key] = klass
|
58
|
+
end
|
59
|
+
|
60
|
+
# Hash of registered stores.
|
61
|
+
def available_stores
|
62
|
+
@available_stores ||= DEFAULT_STORES
|
63
|
+
end
|
64
|
+
|
51
65
|
# Uses the store to encode an array of links to a unique key that can be used in URLs.
|
52
66
|
def encode(links)
|
53
67
|
store.encode(links)
|
@@ -93,12 +107,6 @@ module Gretel
|
|
93
107
|
def configure
|
94
108
|
yield self
|
95
109
|
end
|
96
|
-
|
97
|
-
# Resets all changes made to +Gretel::Trail+. Used for testing.
|
98
|
-
def reset!
|
99
|
-
instance_variables.each { |var| remove_instance_variable var }
|
100
|
-
STORES.each_value(&:reset!)
|
101
|
-
end
|
102
110
|
end
|
103
111
|
end
|
104
112
|
end
|
@@ -12,6 +12,20 @@ Gretel::Renderer.class_eval do
|
|
12
12
|
|
13
13
|
# Returns encoded trail for the breadcrumb.
|
14
14
|
def trail
|
15
|
-
@trail ||=
|
15
|
+
@trail ||= begin
|
16
|
+
transformed_links = links.dup
|
17
|
+
if transform_current_path && transformed_links.any? && request
|
18
|
+
transformed_links.last.url = request.fullpath
|
19
|
+
end
|
20
|
+
Gretel::Trails.encode(transformed_links)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Whether to set the current link path to +request.fullpath+.
|
25
|
+
def transform_current_path
|
26
|
+
return @transform_current_path if defined?(@transform_current_path)
|
27
|
+
@transform_current_path = true
|
16
28
|
end
|
29
|
+
|
30
|
+
attr_writer :transform_current_path
|
17
31
|
end
|
@@ -3,4 +3,12 @@ Gretel::ViewHelpers.class_eval do
|
|
3
3
|
def breadcrumb_trail
|
4
4
|
gretel_renderer.trail
|
5
5
|
end
|
6
|
+
|
7
|
+
# Yields a block having the breadcrumb trail set to the breadcrumb given by +key+.
|
8
|
+
def with_breadcrumb_trail(key, *args, &block)
|
9
|
+
with_breadcrumb(key, *args) do
|
10
|
+
gretel_renderer.transform_current_path = false
|
11
|
+
yield
|
12
|
+
end
|
13
|
+
end
|
6
14
|
end
|
@@ -2,6 +2,8 @@ module Gretel
|
|
2
2
|
module Trails
|
3
3
|
class Store
|
4
4
|
class << self
|
5
|
+
include Gretel::Resettable
|
6
|
+
|
5
7
|
# Save an encoded array to the store. It must return the trail key that
|
6
8
|
# can later be used to retrieve the array from the store.
|
7
9
|
def save(array)
|
@@ -43,11 +45,6 @@ module Gretel
|
|
43
45
|
[]
|
44
46
|
end
|
45
47
|
end
|
46
|
-
|
47
|
-
# Resets all changes made to the store. Used for testing.
|
48
|
-
def reset!
|
49
|
-
instance_variables.each { |var| remove_instance_variable var }
|
50
|
-
end
|
51
48
|
end
|
52
49
|
end
|
53
50
|
end
|
@@ -5,6 +5,8 @@ module Gretel
|
|
5
5
|
DEFAULT_DATA_ATTRIBUTE = "trail"
|
6
6
|
|
7
7
|
class << self
|
8
|
+
include Gretel::Resettable
|
9
|
+
|
8
10
|
# jQuery selector for links that should have the trail appended
|
9
11
|
# to them on click. Default: +.js-append-trail+
|
10
12
|
def js_selector
|
@@ -27,6 +29,21 @@ module Gretel
|
|
27
29
|
end
|
28
30
|
end
|
29
31
|
|
32
|
+
Gretel::Trails.class_eval do
|
33
|
+
class << self
|
34
|
+
def hidden
|
35
|
+
Gretel::Trails::HiddenStrategy
|
36
|
+
end
|
37
|
+
|
38
|
+
def reset_with_hidden!
|
39
|
+
reset_without_hidden!
|
40
|
+
hidden.reset!
|
41
|
+
end
|
42
|
+
|
43
|
+
alias_method_chain :reset!, :hidden
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
30
47
|
Gretel::Renderer.class_eval do
|
31
48
|
# Moves the trail from the querystring into a data attribute.
|
32
49
|
def breadcrumb_link_to_with_hidden_trail(name, url, options = {})
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<% breadcrumb :about %>
|
2
|
+
|
3
|
+
<h1>About</h1>
|
4
|
+
|
5
|
+
<%= link_to "Recent products before different trail", recent_products_path, data: { trail: breadcrumb_trail } %>
|
6
|
+
|
7
|
+
<% with_breadcrumb_trail :product, Product.find_by_slug("one") do %>
|
8
|
+
<%= link_to "Recent products with different trail", recent_products_path, data: { trail: breadcrumb_trail } %>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<%= link_to "Recent products after different trail", recent_products_path, data: { trail: breadcrumb_trail } %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<h1>Welcome!</h1>
|
@@ -1,6 +1,22 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class GretelTrailsTest < ActionDispatch::IntegrationTest
|
4
|
+
setup do
|
5
|
+
Gretel.reset!
|
6
|
+
Gretel::Trails.configure do |config|
|
7
|
+
config.store = :db
|
8
|
+
config.strategy = :hidden
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
test "configuration block" do
|
13
|
+
Gretel::Trails.configure do |config|
|
14
|
+
config.hidden.js_selector = ".test"
|
15
|
+
end
|
16
|
+
|
17
|
+
assert_equal ".test", Gretel::Trails::HiddenStrategy.js_selector
|
18
|
+
end
|
19
|
+
|
4
20
|
test "regular breadcrumbs" do
|
5
21
|
visit "/categories/one"
|
6
22
|
|
@@ -23,24 +39,24 @@ class GretelTrailsTest < ActionDispatch::IntegrationTest
|
|
23
39
|
end
|
24
40
|
|
25
41
|
test "invisibly applying trail" do
|
26
|
-
visit "/products/recent"
|
42
|
+
visit "/products/recent?page=2"
|
27
43
|
|
28
44
|
within "#products" do
|
29
45
|
click_link "Product One"
|
30
46
|
end
|
31
47
|
assert_equal "/products/one", current_fullpath
|
32
|
-
assert_equal ["/", "/products/recent"], all(".breadcrumbs a").map { |a| a[:href] }
|
48
|
+
assert_equal ["/", "/products/recent?page=2"], all(".breadcrumbs a").map { |a| a[:href] }
|
33
49
|
|
34
50
|
click_link "See reviews"
|
35
51
|
assert_equal "/products/one/reviews", current_fullpath
|
36
|
-
assert_equal ["/", "/products/recent", "/products/one"], all(".breadcrumbs a").map { |a| a[:href] }
|
52
|
+
assert_equal ["/", "/products/recent?page=2", "/products/one"], all(".breadcrumbs a").map { |a| a[:href] }
|
37
53
|
|
38
54
|
all(".breadcrumbs a").last.click
|
39
55
|
assert_equal "/products/one", current_fullpath
|
40
|
-
assert_equal ["/", "/products/recent"], all(".breadcrumbs a").map { |a| a[:href] }
|
56
|
+
assert_equal ["/", "/products/recent?page=2"], all(".breadcrumbs a").map { |a| a[:href] }
|
41
57
|
|
42
58
|
all(".breadcrumbs a").last.click
|
43
|
-
assert_equal "/products/recent", current_fullpath
|
59
|
+
assert_equal "/products/recent?page=2", current_fullpath
|
44
60
|
end
|
45
61
|
|
46
62
|
test "breadcrumb_link_to" do
|
data/test/trails_test.rb
CHANGED
@@ -11,10 +11,13 @@ class TrailsTest < ActiveSupport::TestCase
|
|
11
11
|
|
12
12
|
test "configuration block" do
|
13
13
|
Gretel::Trails.configure do |config|
|
14
|
+
config.store = :url
|
15
|
+
config.store.secret = "1234"
|
14
16
|
config.trail_param = :set_from_config
|
15
17
|
end
|
16
18
|
|
17
19
|
assert_equal :set_from_config, Gretel::Trails.trail_param
|
20
|
+
assert_equal "1234", Gretel::Trails::UrlStore.secret
|
18
21
|
end
|
19
22
|
|
20
23
|
test "setting invalid store" do
|
@@ -22,4 +25,13 @@ class TrailsTest < ActiveSupport::TestCase
|
|
22
25
|
Gretel::Trails.store = :xx
|
23
26
|
end
|
24
27
|
end
|
28
|
+
|
29
|
+
test "register store" do
|
30
|
+
klass = Class.new(Gretel::Trails::Store)
|
31
|
+
|
32
|
+
Gretel::Trails.register_store :test_store, klass
|
33
|
+
Gretel::Trails.store = :test_store
|
34
|
+
|
35
|
+
assert_equal klass, Gretel::Trails.store
|
36
|
+
end
|
25
37
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gretel-trails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lasse Bunk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gretel
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 3.0.0.
|
19
|
+
version: 3.0.0.beta6
|
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: 3.0.0.
|
26
|
+
version: 3.0.0.beta6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,6 +192,7 @@ files:
|
|
192
192
|
- test/dummy/app/assets/stylesheets/application.css
|
193
193
|
- test/dummy/app/controllers/application_controller.rb
|
194
194
|
- test/dummy/app/controllers/categories_controller.rb
|
195
|
+
- test/dummy/app/controllers/home_controller.rb
|
195
196
|
- test/dummy/app/controllers/products_controller.rb
|
196
197
|
- test/dummy/app/controllers/reviews_controller.rb
|
197
198
|
- test/dummy/app/helpers/application_helper.rb
|
@@ -200,6 +201,8 @@ files:
|
|
200
201
|
- test/dummy/app/models/category.rb
|
201
202
|
- test/dummy/app/models/product.rb
|
202
203
|
- test/dummy/app/views/categories/show.html.erb
|
204
|
+
- test/dummy/app/views/home/about.html.erb
|
205
|
+
- test/dummy/app/views/home/index.html.erb
|
203
206
|
- test/dummy/app/views/layouts/application.html.erb
|
204
207
|
- test/dummy/app/views/products/recent.html.erb
|
205
208
|
- test/dummy/app/views/products/show.html.erb
|
@@ -214,7 +217,6 @@ files:
|
|
214
217
|
- test/dummy/config/environments/production.rb
|
215
218
|
- test/dummy/config/environments/test.rb
|
216
219
|
- test/dummy/config/initializers/backtrace_silencers.rb
|
217
|
-
- test/dummy/config/initializers/gretel.rb
|
218
220
|
- test/dummy/config/initializers/inflections.rb
|
219
221
|
- test/dummy/config/initializers/mime_types.rb
|
220
222
|
- test/dummy/config/initializers/secret_token.rb
|
@@ -235,10 +237,10 @@ files:
|
|
235
237
|
- test/dummy/script/rails
|
236
238
|
- test/dummy/test/fixtures/categories.yml
|
237
239
|
- test/dummy/test/fixtures/products.yml
|
238
|
-
- test/gretel_trails_test.rb
|
239
240
|
- test/stores/active_record_store_test.rb
|
240
241
|
- test/stores/redis_store_test.rb
|
241
242
|
- test/stores/url_store_test.rb
|
243
|
+
- test/strategies/hidden_strategy_test.rb
|
242
244
|
- test/test_helper.rb
|
243
245
|
- test/trails_test.rb
|
244
246
|
- test/view_helpers_test.rb
|
@@ -262,7 +264,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
262
264
|
version: '0'
|
263
265
|
requirements: []
|
264
266
|
rubyforge_project:
|
265
|
-
rubygems_version: 2.
|
267
|
+
rubygems_version: 2.1.10
|
266
268
|
signing_key:
|
267
269
|
specification_version: 4
|
268
270
|
summary: Collection of strategies for handling Gretel trails.
|
@@ -273,6 +275,7 @@ test_files:
|
|
273
275
|
- test/dummy/app/assets/stylesheets/application.css
|
274
276
|
- test/dummy/app/controllers/application_controller.rb
|
275
277
|
- test/dummy/app/controllers/categories_controller.rb
|
278
|
+
- test/dummy/app/controllers/home_controller.rb
|
276
279
|
- test/dummy/app/controllers/products_controller.rb
|
277
280
|
- test/dummy/app/controllers/reviews_controller.rb
|
278
281
|
- test/dummy/app/helpers/application_helper.rb
|
@@ -281,6 +284,8 @@ test_files:
|
|
281
284
|
- test/dummy/app/models/category.rb
|
282
285
|
- test/dummy/app/models/product.rb
|
283
286
|
- test/dummy/app/views/categories/show.html.erb
|
287
|
+
- test/dummy/app/views/home/about.html.erb
|
288
|
+
- test/dummy/app/views/home/index.html.erb
|
284
289
|
- test/dummy/app/views/layouts/application.html.erb
|
285
290
|
- test/dummy/app/views/products/recent.html.erb
|
286
291
|
- test/dummy/app/views/products/show.html.erb
|
@@ -295,7 +300,6 @@ test_files:
|
|
295
300
|
- test/dummy/config/environments/production.rb
|
296
301
|
- test/dummy/config/environments/test.rb
|
297
302
|
- test/dummy/config/initializers/backtrace_silencers.rb
|
298
|
-
- test/dummy/config/initializers/gretel.rb
|
299
303
|
- test/dummy/config/initializers/inflections.rb
|
300
304
|
- test/dummy/config/initializers/mime_types.rb
|
301
305
|
- test/dummy/config/initializers/secret_token.rb
|
@@ -316,10 +320,10 @@ test_files:
|
|
316
320
|
- test/dummy/script/rails
|
317
321
|
- test/dummy/test/fixtures/categories.yml
|
318
322
|
- test/dummy/test/fixtures/products.yml
|
319
|
-
- test/gretel_trails_test.rb
|
320
323
|
- test/stores/active_record_store_test.rb
|
321
324
|
- test/stores/redis_store_test.rb
|
322
325
|
- test/stores/url_store_test.rb
|
326
|
+
- test/strategies/hidden_strategy_test.rb
|
323
327
|
- test/test_helper.rb
|
324
328
|
- test/trails_test.rb
|
325
329
|
- test/view_helpers_test.rb
|