guide 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/README.md +440 -0
- data/app/controllers/guide/scenarios_controller.rb +1 -1
- data/app/views/guide/_content.html.erb +1 -1
- data/app/views/guide/common/_navigation_node.html.erb +2 -2
- data/app/views/guide/nodes/_scenario.html.erb +1 -1
- data/app/views/guide/scenarios/scenario/_toolbar.html.erb +1 -1
- data/lib/guide/version.rb +1 -1
- metadata +46 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46e49cb7b34a4c156ed424ee68a838bf963977cd285a5311f6f5f7ac3c8d1707
|
4
|
+
data.tar.gz: 928e5227e921ff48d2887b63346d6962dae48b20d904deaabfa83dac036c1518
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aadbddb29a93a068d28713fc04ee49ac89edaf2faceb78d007dc4e2583c6d281ae02835379cc3e2cbaeb1f44925719589a8ab26d9928d16f72eb7434630b92ac
|
7
|
+
data.tar.gz: 99d8528e53f3edefe0ea3a645190b186b6120ca613430093896d55b8e48c47415214e32c82e31a4bb90398ad28f46359f664450e70dc3dfe7310327bc5f4470c
|
data/README.md
ADDED
@@ -0,0 +1,440 @@
|
|
1
|
+
# Guide gem
|
2
|
+
Document your entire user interface, not just your styles.
|
3
|
+
|
4
|
+
# Features
|
5
|
+
|
6
|
+
- Create a component library using real templates from your application
|
7
|
+
- Organise your components into a dynamic tree structure
|
8
|
+
- Fake out your backend at the view model layer
|
9
|
+
- See what each template looks like when you vary the data it receives
|
10
|
+
|
11
|
+
## Development Status [![tests](https://github.com/envato/guide/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/envato/guide/actions/workflows/test.yml)
|
12
|
+
Guide runs in production at [Envato](https://market.styleguide.envato.com). While it is moderately mature at this stage, its API and features are still subject to changes.
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
Add this line to your application's Gemfile:
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
gem 'guide'
|
19
|
+
```
|
20
|
+
|
21
|
+
And then execute:
|
22
|
+
```shell
|
23
|
+
$ bundle install
|
24
|
+
```
|
25
|
+
|
26
|
+
## Configuration
|
27
|
+
Add `/config/initializers/guide.rb`
|
28
|
+
|
29
|
+
```Ruby
|
30
|
+
# Available options with example usage
|
31
|
+
|
32
|
+
Guide.configure do |config|
|
33
|
+
config.asset_path_for_logo = "guide/aweosme-guide-logo.svg"
|
34
|
+
config.company_name = "Your Awesome Company"
|
35
|
+
config.controller_class_to_inherit = "Guide::ControllerInjection"
|
36
|
+
config.default_stylesheets_for_structures = ['application/core/index', 'application/pages/default/index']
|
37
|
+
config.guide_name = "Your Awesome Guide"
|
38
|
+
config.helper_module_to_globally_include = 'Guide::HelperInjection'
|
39
|
+
config.local_variable_for_view_model = :view_model
|
40
|
+
config.supported_locales = {
|
41
|
+
"English" => "en",
|
42
|
+
"Portuguese" => "pt",
|
43
|
+
"Spanish" => "es",
|
44
|
+
}
|
45
|
+
end
|
46
|
+
```
|
47
|
+
|
48
|
+
**Note:** If you are having asset compiling issues you may need to add Guide's assets to your asset precompile config e.g.
|
49
|
+
|
50
|
+
```Ruby
|
51
|
+
# config/application.rb
|
52
|
+
|
53
|
+
config.assets.precompile += [
|
54
|
+
'guide/application.js',
|
55
|
+
'guide/scenario.js',
|
56
|
+
'guide/application.css',
|
57
|
+
'guide/scenario.css'
|
58
|
+
]
|
59
|
+
```
|
60
|
+
|
61
|
+
|
62
|
+
## Build your Guide(s)
|
63
|
+
|
64
|
+
### Architecture & Navigation
|
65
|
+
|
66
|
+
Each Guide is essentially a tree of nodes with pages that are either a `Document` or a `Structure`.
|
67
|
+
|
68
|
+
- Use `Node` for organising things in the tree without adding pages
|
69
|
+
- Use `Document` for static pages
|
70
|
+
- Use `Structure` for dynamic pages with scenarios. Each `Structure` represents a template in your application.
|
71
|
+
|
72
|
+
`content.rb` is the root node of that tree and defines your top level navigation structure.
|
73
|
+
To add child nodes, use the following DSL:
|
74
|
+
|
75
|
+
`contains :child_node_name`
|
76
|
+
|
77
|
+
This example declares that the tree contains a child node named:
|
78
|
+
|
79
|
+
`Guide::Content::ChildNodeName`
|
80
|
+
|
81
|
+
You will need to create a class for it.
|
82
|
+
|
83
|
+
All of your content should live in the `Guide::Content` namespace so that Guide can find it easily.
|
84
|
+
|
85
|
+
Feel free to redeclare the base node class in your system at the following path:
|
86
|
+
|
87
|
+
`app/<whatever_you_want>/guide/content.rb`
|
88
|
+
|
89
|
+
It needs to be a `Document` or a `Structure`, otherwise your Guide will not have a working homepage.
|
90
|
+
|
91
|
+
The convention for the subdirectory in app/ is `documentation`,
|
92
|
+
but if you don't like that, you can use something else.
|
93
|
+
|
94
|
+
We don't recommend putting it inside the standard rails directories though.
|
95
|
+
|
96
|
+
Here's an example of what `app/documentation/guide/content.rb` might look like:
|
97
|
+
|
98
|
+
``` Ruby
|
99
|
+
# app/documentation/guide/content.rb
|
100
|
+
|
101
|
+
class Guide::Content < Guide::Document
|
102
|
+
contains :structures
|
103
|
+
contains :ui_library
|
104
|
+
contains :branding
|
105
|
+
end
|
106
|
+
```
|
107
|
+
|
108
|
+
To specify options such as visibility, append them to the declaration:
|
109
|
+
|
110
|
+
```Ruby
|
111
|
+
contains :structures # no visbility specified = public
|
112
|
+
contains :ui_library, :visibility => :unpublished
|
113
|
+
contains :branding, :visibility => :restricted
|
114
|
+
```
|
115
|
+
|
116
|
+
### Node
|
117
|
+
> A node is a point on the content tree. Everything in the content folder is a node.
|
118
|
+
|
119
|
+
```Ruby
|
120
|
+
# app/documentation/guide/ui_library/typography
|
121
|
+
|
122
|
+
class Guide::Content::UILibrary::Typography < Guide::Node
|
123
|
+
contains :body
|
124
|
+
contains :currency
|
125
|
+
contains :heading
|
126
|
+
contains :new_experiment, :visibility => :unpublished
|
127
|
+
contains :link
|
128
|
+
contains :list
|
129
|
+
contains :preformatted
|
130
|
+
end
|
131
|
+
```
|
132
|
+
|
133
|
+
### Document
|
134
|
+
> This type of node has no scenarios, but is still renderable. It corresponds to a static template, usually with the same name, in the same folder.
|
135
|
+
|
136
|
+
**Supported formats**
|
137
|
+
- `html`
|
138
|
+
- `text`
|
139
|
+
|
140
|
+
```Ruby
|
141
|
+
# app/documentation/guide/content/ui_library/typography/heading.rb
|
142
|
+
|
143
|
+
class Guide::Content::UILibrary::Typography::Heading < Guide::Document
|
144
|
+
end
|
145
|
+
```
|
146
|
+
|
147
|
+
`app/documentation/guide/content/ui_library/typography/heading.html`
|
148
|
+
```HTML
|
149
|
+
<div><p>Whatever you like!</p></div>
|
150
|
+
```
|
151
|
+
|
152
|
+
### Structure
|
153
|
+
> This type of node can manage a list of Scenarios, so that we can render a piece of the UI as it would look in lots of different situations.
|
154
|
+
|
155
|
+
For more info on how to add Structures and Scenarios, see the [wiki](https://github.com/envato/guide/wiki/Adding-Structures)
|
156
|
+
|
157
|
+
### Scenario
|
158
|
+
> Each Scenario represents a set of data passed into the template via its view model. These let us see what our templates look like under various conditions.
|
159
|
+
|
160
|
+
### Homepage
|
161
|
+
The homepage of your Guide is a special snowflake. Edit the contents here:
|
162
|
+
`app/documentation/guide/_content.html.erb`
|
163
|
+
|
164
|
+
|
165
|
+
## Advanced setup
|
166
|
+
### Linking
|
167
|
+
|
168
|
+
In order to link to other Guide pages from within your content, you will need to use the `node_path` url helper. Here are a couple of examples:
|
169
|
+
|
170
|
+
```Ruby
|
171
|
+
<%= link_to "root level link", guide.node_path('documents') %>
|
172
|
+
<%= link_to "nested link", guide.node_path('documents/restricted') %>
|
173
|
+
```
|
174
|
+
|
175
|
+
### Fixtures
|
176
|
+
Fixtures are reusable data for your Structures. They can be defined once and then reused across multiple structures and scenarios.
|
177
|
+
|
178
|
+
Tip: Try to organise your fixtures in a similar way to your real view models.
|
179
|
+
|
180
|
+
Guide defines the `Guide::Fixtures` module, so if your put your fixtures in `app/documentation/guide/fixtures/` they should be autoloaded correctly.
|
181
|
+
|
182
|
+
```Ruby
|
183
|
+
# app/documentation/guide/fixtures/common.rb
|
184
|
+
|
185
|
+
class Guide::Fixtures::Common < Guide::Fixture
|
186
|
+
def self.alert_box_view_model(options = {})
|
187
|
+
Guide::ViewModel.new(
|
188
|
+
{
|
189
|
+
:type => :notice,
|
190
|
+
:message => "You need to set a message",
|
191
|
+
}, options
|
192
|
+
)
|
193
|
+
end
|
194
|
+
end
|
195
|
+
```
|
196
|
+
|
197
|
+
### Injections
|
198
|
+
Injections can be used when you need to supply code to help Guide work within the context of your application.
|
199
|
+
|
200
|
+
|
201
|
+
#### Controller base class
|
202
|
+
|
203
|
+
Guide allows you to push code directly into its controllers through dependency injection. You will need to do this to be able to use most of the other code injections that Guide supports, as you'll see a bit later on.
|
204
|
+
|
205
|
+
When configuring Guide, one of the options available to you is to specify a `controller_class_to_inherit`. This does what it says. Think of it like an ApplicationController, but specific to your Guide.
|
206
|
+
|
207
|
+
The class that you supply needs to be a Rails controller, so you'll need to inherit from `ActionController::Base`.
|
208
|
+
|
209
|
+
If you choose to use this feature, remember to use unique method names. It may be helpful to take a glance at the code for Guide's controllers to make sure that you haven't got any clashes.
|
210
|
+
|
211
|
+
```Ruby
|
212
|
+
# Controller base class injection
|
213
|
+
|
214
|
+
Guide.configure do |config|
|
215
|
+
config.controller_class_to_inherit = "Guide::ControllerInjection"
|
216
|
+
end
|
217
|
+
|
218
|
+
class Guide::ControllerInjection < ActionController::Base
|
219
|
+
# Your code here
|
220
|
+
end
|
221
|
+
```
|
222
|
+
|
223
|
+
#### Authentication system
|
224
|
+
|
225
|
+
Unless you're running a totally public Guide, you will need some way to determine who is viewing it so that you can choose what they are allowed to see.
|
226
|
+
|
227
|
+
Since the means of authentication varies across different applications, Guide allows you to pass in an authentication system instead of providing its own.
|
228
|
+
|
229
|
+
If you inject an authentication system, Guide will call the `#user_signed_in?`, `#url_for_sign_in` and `#url_for_sign_out` methods on it. It's recommended that you inherit from `Guide::DefaultAuthenticationSystem`.
|
230
|
+
|
231
|
+
Here's an example of how you might set this up:
|
232
|
+
|
233
|
+
```Ruby
|
234
|
+
# Authentication system injection
|
235
|
+
|
236
|
+
class Guide::ControllerInjection < ActionController::Base
|
237
|
+
private
|
238
|
+
|
239
|
+
def authentication_system
|
240
|
+
Guide::AuthenticationSystemInjection.new(request)
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
class Guide::AuthenticationSystem < Guide::DefaultAuthenticationSystem
|
245
|
+
def initialize(request)
|
246
|
+
@request = request
|
247
|
+
end
|
248
|
+
|
249
|
+
def user_signed_in?
|
250
|
+
RealAuthenticationSystemForYourApplication.new(request).signed_in?
|
251
|
+
end
|
252
|
+
|
253
|
+
def url_for_sign_in
|
254
|
+
# Where do you want to send people when they click the 'sign in' link?
|
255
|
+
end
|
256
|
+
|
257
|
+
def url_for_sign_out
|
258
|
+
# This is where people will end up when they click 'sign out'
|
259
|
+
end
|
260
|
+
end
|
261
|
+
```
|
262
|
+
|
263
|
+
#### Authorisation system
|
264
|
+
|
265
|
+
Once you've figured out who is looking at your Guide, you're ready to decide what they're allowed to see.
|
266
|
+
|
267
|
+
As with the authentication system, most applications have some way of determining this sort of thing. Instead of presuming to know how your system works, Guide lets you implement this yourself.
|
268
|
+
|
269
|
+
If you inject an authorisation system, Guide will call the `#allow?(action)`, `#user_is_privileged?` and `#valid_visibility_options` methods on it. Inheriting from `Guide::DefaultAuthorisatinSystem` will get you some sensible defaults for the latter two of these methods.
|
270
|
+
|
271
|
+
You can set this up however you like, as long as you hook into the controller via `#authorisation_system` and implement the `#allow?(action)` method. Here's an example of how you might do it:
|
272
|
+
|
273
|
+
```Ruby
|
274
|
+
# Authorisation system injection
|
275
|
+
|
276
|
+
class Guide::ControllerInjection < ActionController::Base
|
277
|
+
private
|
278
|
+
|
279
|
+
def authorisation_system
|
280
|
+
Guide::AuthorisationSystemInjection.new(real_authorisation_system)
|
281
|
+
end
|
282
|
+
|
283
|
+
def real_authorisation_system
|
284
|
+
RealAuthorisationSystemForYourApplication.new(signed_in_user)
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
class Guide::AuthorisationSystemInjection < Guide::DefaultAuthorisationSystem
|
289
|
+
def initialize(real_system)
|
290
|
+
@real_system = real_system
|
291
|
+
end
|
292
|
+
|
293
|
+
def allow?(action)
|
294
|
+
if Rails.env.development?
|
295
|
+
true
|
296
|
+
else
|
297
|
+
@real_system.allow?(action)
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
# Optional methods for if you want to use custom visibility options
|
302
|
+
|
303
|
+
def user_is_privileged?
|
304
|
+
allow?(:view_guide_not_ready_yet) ||
|
305
|
+
allow?(:view_guide_top_secret_feature)
|
306
|
+
end
|
307
|
+
|
308
|
+
def valid_visibility_options
|
309
|
+
[
|
310
|
+
nil,
|
311
|
+
:not_ready_yet,
|
312
|
+
:restricted,
|
313
|
+
]
|
314
|
+
end
|
315
|
+
end
|
316
|
+
```
|
317
|
+
|
318
|
+
#### HTML Injection
|
319
|
+
|
320
|
+
If you would like to push some HTML directly onto every page in Guide, you can do so using an HTML injection.
|
321
|
+
|
322
|
+
A good example of HTML that you might like to inject is a stylesheet link tag:
|
323
|
+
|
324
|
+
```Ruby
|
325
|
+
# HTML injection for a stylesheet link tag
|
326
|
+
|
327
|
+
class Guide::ControllerInjection
|
328
|
+
private
|
329
|
+
|
330
|
+
def html_injection
|
331
|
+
Guide::HtmlInjection.new.prepare_injection(view_context)
|
332
|
+
end
|
333
|
+
end
|
334
|
+
|
335
|
+
class Guide::HtmlInjection
|
336
|
+
include ActionView::Helpers::AssetTagHelper
|
337
|
+
|
338
|
+
def prepare_injection(view_context)
|
339
|
+
[
|
340
|
+
view_context.stylesheet_link_tag("application/core/index"),
|
341
|
+
].join(" ")
|
342
|
+
end
|
343
|
+
end
|
344
|
+
```
|
345
|
+
|
346
|
+
#### Helper Injection
|
347
|
+
|
348
|
+
While the Guide development team recommends the use of view models instead of helpers, sometimes you're working on an application that already relies on them. Guide allows you to inject helpers so that you can get started without first having to retire them all.
|
349
|
+
|
350
|
+
Here's how to do it:
|
351
|
+
|
352
|
+
```Ruby
|
353
|
+
# Injecting helper modules
|
354
|
+
|
355
|
+
Guide.configure do |config|
|
356
|
+
config.helper_module_to_globally_include = "Guide::HelperInjection"
|
357
|
+
end
|
358
|
+
|
359
|
+
module Guide::HelperInjection
|
360
|
+
include ::RegretHelper
|
361
|
+
include ::SoonToBeRetiredHelper
|
362
|
+
end
|
363
|
+
```
|
364
|
+
|
365
|
+
If you _really_ need to, you can add `include ::ApplicationHelper` to this list.
|
366
|
+
|
367
|
+
## Browser tests
|
368
|
+
Guide does not come packaged with browser tests, but it's a great idea to write some. Here's an example of how you might create one:
|
369
|
+
|
370
|
+
```ruby
|
371
|
+
content = Guide::Content.new
|
372
|
+
authorisation_system = Guide::DefaultAuthorisationSystem.new
|
373
|
+
bouncer = Guide::Bouncer.new(authorisation_system: authorisation_system)
|
374
|
+
cartographer = Guide::Cartographer.new(bouncer)
|
375
|
+
|
376
|
+
cartographer.draw_paths_to_visible_renderable_nodes(starting_node: content).each do |node_path, node_title|
|
377
|
+
aggregate_failures do
|
378
|
+
begin
|
379
|
+
visit Guide::Engine.routes.url_helpers.node_path(:node_path => node_path)
|
380
|
+
with_scope('.sg-header') do
|
381
|
+
expect(page).to have_content("<put something recognisable here>")
|
382
|
+
end
|
383
|
+
puts "Successfully visited #{node_title}"
|
384
|
+
rescue StandardError, RSpec::Expectations::ExpectationNotMetError => e
|
385
|
+
raise [
|
386
|
+
"Could not load the guide page for #{node_path},",
|
387
|
+
"To open this in your browser, visit <Root path to your guide>/#{node_path}",
|
388
|
+
"You can find the file for this at app/documentation/guide/content/#{node_path}.rb",
|
389
|
+
"Here's what I saw when I tried to go there:",
|
390
|
+
"#{e.message}",
|
391
|
+
"#{page.body.split('Full backtrace').first}",
|
392
|
+
].join("\n\n")
|
393
|
+
end
|
394
|
+
end
|
395
|
+
end
|
396
|
+
```
|
397
|
+
|
398
|
+
### Consistency Specs
|
399
|
+
These specs ensure that your fake view models (Guide::ViewModel) in Guide have the same public interfaces as the real view models in your application
|
400
|
+
`spec/documentation/guide/content`
|
401
|
+
|
402
|
+
### Step 3: Access your Guide(s)
|
403
|
+
When you mount the gem in your routes file, you can specify a route to mount it to. If you want it mounted at the root of your application, you'd use:
|
404
|
+
|
405
|
+
```ruby
|
406
|
+
mount Guide::Engine => "/"
|
407
|
+
```
|
408
|
+
|
409
|
+
Or if you want it at, say, `/guide/`, you could use:
|
410
|
+
|
411
|
+
```ruby
|
412
|
+
mount Guide::Engine => '/guide/'
|
413
|
+
```
|
414
|
+
|
415
|
+
Any routes defined by the Guide gem will be prefixed with the path you specify when you mount it.
|
416
|
+
|
417
|
+
## Maintainer
|
418
|
+
- [Luke Arndt](https://github.com/lukearndt)
|
419
|
+
|
420
|
+
## License
|
421
|
+
Guide uses the MIT license. See [LICENSE.txt](https://github.com/envato/guide/blob/master/LICENSE.txt) for details.
|
422
|
+
|
423
|
+
## Contact
|
424
|
+
- [github project](https://github.com/envato/guide)
|
425
|
+
- Bug reports and feature requests are via [github issues](https://github.com/envato/guide/issues)
|
426
|
+
|
427
|
+
## Code of conduct
|
428
|
+
We welcome contribution from everyone. Read more about it in
|
429
|
+
[`CODE_OF_CONDUCT.md`](https://github.com/envato/guide/blob/master/CODE_OF_CONDUCT.md)
|
430
|
+
|
431
|
+
## Contributing
|
432
|
+
1. Fork it ( http://github.com/envato/guide/fork )
|
433
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
434
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
435
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
436
|
+
5. Create new Pull Request
|
437
|
+
|
438
|
+
For larger new features: do everything as above, but first also make contact with the project maintainers to be sure your change fits with the project direction and you won't be wasting effort going in the wrong direction.
|
439
|
+
|
440
|
+
Please see the [Wiki](https://github.com/envato/guide/wiki) for indepth instructions on developing and understanding the Guide gem.
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<div am-Grid class="h-text-align-center">
|
3
3
|
<div am-Grid-Col="m:4 l:6" am-Grid-Row="m:start l:start">
|
4
4
|
<div class="sg-home__section">
|
5
|
-
<%= link_to '
|
5
|
+
<%= link_to guide.node_path('structures'),
|
6
6
|
:class => "t-link -color-dark -decoration-reversed" do %>
|
7
7
|
<h3 class="t-heading -size-m">Structures</h3>
|
8
8
|
<% end %>
|
@@ -4,12 +4,12 @@
|
|
4
4
|
:class => top_level_node ? 'sg-navigation__section' : nil do %>
|
5
5
|
<% if child_node_view.leaf_node? %>
|
6
6
|
<%= link_to child_node_view.name,
|
7
|
-
node_path
|
7
|
+
guide.node_path([node_path, child_node_view.id].compact.join('/')),
|
8
8
|
:class => child_node_view.active? ? 'is-active' : nil %>
|
9
9
|
<% else %>
|
10
10
|
<% if top_level_node %>
|
11
11
|
<div class="sg-navigation__section-title">
|
12
|
-
<%= link_to
|
12
|
+
<%= link_to(guide.node_path(child_node_view.id)) do %>
|
13
13
|
<h4><%= child_node_view.name %></h4>
|
14
14
|
<% end %>
|
15
15
|
</div>
|
@@ -26,7 +26,7 @@
|
|
26
26
|
<%= link_to "L", "##{scenario_id}", :class => "js-guide__responsive-desktop t-link -color-inherit -decoration-reversed" %>
|
27
27
|
</div>
|
28
28
|
<div class="sg-actions__control">
|
29
|
-
<%= link_to
|
29
|
+
<%= link_to guide.scenario_path(scenario_id, view.formats.first, view.node_path),
|
30
30
|
:class =>"sg-actions__icon",
|
31
31
|
:target => "_blank",
|
32
32
|
:alt => "Open this scenario in a new tab" do %>
|
data/lib/guide/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: guide
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Arndt
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-
|
13
|
+
date: 2021-06-09 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: railties
|
@@ -18,28 +18,56 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
21
|
+
version: '5.2'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: '
|
28
|
+
version: '5.2'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: actionpack
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '5.2'
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '5.2'
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: actionview
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '5.2'
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '5.2'
|
29
57
|
- !ruby/object:Gem::Dependency
|
30
58
|
name: activemodel
|
31
59
|
requirement: !ruby/object:Gem::Requirement
|
32
60
|
requirements:
|
33
61
|
- - ">="
|
34
62
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
63
|
+
version: '5.2'
|
36
64
|
type: :runtime
|
37
65
|
prerelease: false
|
38
66
|
version_requirements: !ruby/object:Gem::Requirement
|
39
67
|
requirements:
|
40
68
|
- - ">="
|
41
69
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
70
|
+
version: '5.2'
|
43
71
|
- !ruby/object:Gem::Dependency
|
44
72
|
name: sprockets-rails
|
45
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -83,7 +111,7 @@ dependencies:
|
|
83
111
|
- !ruby/object:Gem::Version
|
84
112
|
version: '0'
|
85
113
|
- !ruby/object:Gem::Dependency
|
86
|
-
name:
|
114
|
+
name: rspec-rails
|
87
115
|
requirement: !ruby/object:Gem::Requirement
|
88
116
|
requirements:
|
89
117
|
- - ">="
|
@@ -97,7 +125,7 @@ dependencies:
|
|
97
125
|
- !ruby/object:Gem::Version
|
98
126
|
version: '0'
|
99
127
|
- !ruby/object:Gem::Dependency
|
100
|
-
name:
|
128
|
+
name: pry
|
101
129
|
requirement: !ruby/object:Gem::Requirement
|
102
130
|
requirements:
|
103
131
|
- - ">="
|
@@ -111,7 +139,7 @@ dependencies:
|
|
111
139
|
- !ruby/object:Gem::Version
|
112
140
|
version: '0'
|
113
141
|
- !ruby/object:Gem::Dependency
|
114
|
-
name:
|
142
|
+
name: rails-controller-testing
|
115
143
|
requirement: !ruby/object:Gem::Requirement
|
116
144
|
requirements:
|
117
145
|
- - ">="
|
@@ -134,6 +162,7 @@ extensions: []
|
|
134
162
|
extra_rdoc_files: []
|
135
163
|
files:
|
136
164
|
- LICENSE
|
165
|
+
- README.md
|
137
166
|
- Rakefile
|
138
167
|
- app/assets/javascripts/guide/application.js
|
139
168
|
- app/assets/javascripts/guide/scenario.js
|
@@ -214,7 +243,13 @@ files:
|
|
214
243
|
homepage: https://github.com/envato/guide
|
215
244
|
licenses:
|
216
245
|
- MIT
|
217
|
-
metadata:
|
246
|
+
metadata:
|
247
|
+
homepage_uri: https://github.com/envato/guide
|
248
|
+
source_code_uri: https://github.com/envato/guide/tree/v0.6.0
|
249
|
+
changelog_uri: https://github.com/envato/guide/blob/HEAD/CHANGELOG.md
|
250
|
+
bug_tracker_uri: https://github.com/envato/guide/issues
|
251
|
+
wiki_uri: https://github.com/envato/guide/wiki
|
252
|
+
documentation_uri: https://www.rubydoc.info/gems/guide/0.6.0
|
218
253
|
post_install_message:
|
219
254
|
rdoc_options: []
|
220
255
|
require_paths:
|
@@ -223,7 +258,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
223
258
|
requirements:
|
224
259
|
- - ">="
|
225
260
|
- !ruby/object:Gem::Version
|
226
|
-
version: '
|
261
|
+
version: '2.6'
|
227
262
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
228
263
|
requirements:
|
229
264
|
- - ">="
|