localtower 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +45 -27
- data/app/controllers/localtower/pages_controller.rb +3 -3
- data/app/views/layouts/localtower/application.html.erb +31 -2
- data/app/views/localtower/pages/migrations.html.erb +3 -3
- data/app/views/localtower/pages/models.html.erb +9 -5
- data/app/views/localtower/pages/relations.html.erb +4 -4
- data/lib/localtower/generators/migration.rb +4 -0
- data/lib/localtower/generators/model.rb +22 -0
- data/lib/localtower/generators/service_objects/insert_defaults.rb +64 -0
- data/lib/localtower/tools.rb +7 -7
- data/lib/localtower/version.rb +1 -1
- data/public/css/app.css +57 -0
- data/public/light-bootstrap-dashboard-master/assets/js/light-bootstrap-dashboard.js +8 -11
- data/public/logo-localtower-white-300.png +0 -0
- data/public/logo-localtower-white.png +0 -0
- data/public/logo-localtower.png +0 -0
- data/spec/dummy/Gemfile +1 -0
- data/spec/dummy/Gemfile.lock +12 -2
- data/spec/dummy/log/development.log +171 -28434
- data/spec/dummy/log/localtower.log +330 -17775
- data/spec/dummy/log/test.log +323 -14507
- data/spec/lib/localtower/generators/service_objects/insert_defaults_spec.rb +70 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba7763048711f0533d77bbe20b4918e2ae11f2e1
|
4
|
+
data.tar.gz: 6640f9f32f1cbc27e2b05dabfd0987bc7ff27a4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b5d643d48891eaec18c30192ccfbe2a2f5373d89c1def8038f2b9b7791128ac788905c5cc7d25fb57387e3974f37fb00660450e1edf20559890e811a1c8df2b
|
7
|
+
data.tar.gz: 5af92258f408e3f9e8320881c3e8eb140feef90f4b6f6603104224957c125772e36f4a415ca5dccac6e5263cd086ff2054c53aeaee2b77358473017845e0c857
|
data/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
<p align="center">
|
2
|
+
<img src="https://raw.githubusercontent.com/damln/localtower/master/public/logo-localtower-white-300.png" alt="Localtower">
|
3
|
+
</p>
|
2
4
|
|
3
5
|
### See the schema
|
4
6
|
![Schema](https://raw.githubusercontent.com/damln/localtower/master/public/screenshots/v0.1.6/1_schema.png)
|
@@ -15,43 +17,59 @@
|
|
15
17
|
|
16
18
|
## INSTALL
|
17
19
|
|
18
|
-
|
20
|
+
Only tested with Rails 4.2 and Rails 5.1 (should work with any Rails 4.2+ application).
|
21
|
+
Only tested with PostgreSQL.
|
19
22
|
|
20
|
-
|
23
|
+
Add to your `Gemfile` file:
|
24
|
+
```ruby
|
25
|
+
group :development do
|
26
|
+
gem "localtower"
|
27
|
+
end
|
28
|
+
```
|
21
29
|
|
22
|
-
|
23
|
-
|
24
|
-
|
30
|
+
If you want the latest master branch, add to your `Gemfile` file following:
|
31
|
+
```ruby
|
32
|
+
group :development do
|
33
|
+
gem "localtower", github: "damln/localtower"
|
34
|
+
end
|
35
|
+
```
|
25
36
|
|
26
|
-
|
37
|
+
Run command in your terminal:
|
38
|
+
```bash
|
39
|
+
bundle install
|
40
|
+
```
|
27
41
|
|
28
|
-
|
42
|
+
Add to your `config/routes.rb`:
|
43
|
+
```ruby
|
44
|
+
if Rails.env.development?
|
45
|
+
mount Localtower::Engine, at: "localtower"
|
46
|
+
end
|
47
|
+
```
|
29
48
|
|
30
|
-
|
49
|
+
## Usage
|
31
50
|
|
32
|
-
|
51
|
+
Open your browser at [http://localhost:3000/localtower](http://localhost:3000/localtower).
|
33
52
|
|
34
|
-
|
35
|
-
mount Localtower::Engine, at: "localtower"
|
36
|
-
end
|
53
|
+
## RSpec
|
37
54
|
|
38
|
-
|
55
|
+
Create a `spec/dummy/.env` file with the credentials to your PostgreSQL Database. It should look like this:
|
39
56
|
|
40
|
-
|
57
|
+
```
|
58
|
+
LOCALTOWER_PG_USERNAME="admin"
|
59
|
+
LOCALTOWER_PG_PASSWORD="root_or_smething"
|
60
|
+
```
|
41
61
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
62
|
+
Run the spec:
|
63
|
+
```bash
|
64
|
+
bundle install
|
65
|
+
bundle exec rspec spec/
|
66
|
+
```
|
47
67
|
|
48
|
-
|
49
|
-
|
68
|
+
Notes:
|
69
|
+
Tests are currently very slow because this is testing rails commands so it boots the framework for each test. Zeus or spring should be introduced.
|
50
70
|
|
51
|
-
|
71
|
+
## Contribute
|
52
72
|
|
53
|
-
|
54
|
-
bundle exec rspec spec/
|
73
|
+
Thanks for reporting issues, I'll do my best.
|
55
74
|
|
56
|
-
|
57
|
-
Tests are currently very slow because this is testing rails commands so it boots the rails for each test. Zeus or spring should be introced.
|
75
|
+
[![Analytics](https://ga-beacon.appspot.com/UA-93841935-1/github-readme?pixel)](https://github.com/damln/localtower)
|
@@ -48,14 +48,14 @@ module Localtower
|
|
48
48
|
|
49
49
|
def post_models
|
50
50
|
use_generator(::Localtower::Generators::Model, params[:models])
|
51
|
-
redirect_to
|
51
|
+
redirect_to relations_path
|
52
52
|
end
|
53
53
|
|
54
54
|
private
|
55
55
|
|
56
56
|
def use_generator(generator_klass, options)
|
57
|
-
|
58
|
-
generator.run
|
57
|
+
generator_klass.new(options).run
|
59
58
|
end
|
59
|
+
|
60
60
|
end
|
61
61
|
end
|
@@ -24,8 +24,7 @@
|
|
24
24
|
<body>
|
25
25
|
|
26
26
|
<div class="wrapper">
|
27
|
-
<div class="sidebar"
|
28
|
-
<!-- you can change the color of the sidebar using: data-color="blue | azure | green | orange | red | purple" -->
|
27
|
+
<div class="sidebar">
|
29
28
|
|
30
29
|
<div class="sidebar-wrapper">
|
31
30
|
<ul class="nav">
|
@@ -68,6 +67,36 @@
|
|
68
67
|
</ul>
|
69
68
|
</div>
|
70
69
|
</div>
|
70
|
+
<div class="tower-nav">
|
71
|
+
<div class="<%= is_active_link?(dashboard_path, :inclusive) ? "active" : nil %>">
|
72
|
+
<a class="tower-a" href="<%= dashboard_path %>">
|
73
|
+
<i class="pe-7s-home"></i>
|
74
|
+
<p>Schema</p>
|
75
|
+
</a>
|
76
|
+
</div>
|
77
|
+
|
78
|
+
|
79
|
+
<div class="<%= is_active_link?(models_path, :inclusive) ? "active" : nil %>">
|
80
|
+
<a class="tower-a" href="<%= models_path %>">
|
81
|
+
<i class="pe-7s-server"></i>
|
82
|
+
<p>New Model</p>
|
83
|
+
</a>
|
84
|
+
</div>
|
85
|
+
|
86
|
+
<div class="<%= is_active_link?(relations_path, :inclusive) ? "active" : nil %>">
|
87
|
+
<a class="tower-a" href="<%= relations_path %>">
|
88
|
+
<i class="pe-7s-shuffle"></i>
|
89
|
+
<p>New Relation</p>
|
90
|
+
</a>
|
91
|
+
</div>
|
92
|
+
|
93
|
+
<div class="<%= is_active_link?(migrations_path, :inclusive) ? "active" : nil %>">
|
94
|
+
<a class="tower-a" href="<%= migrations_path %>">
|
95
|
+
<i class="pe-7s-edit"></i>
|
96
|
+
<p>New Migration</p>
|
97
|
+
</a>
|
98
|
+
</div>
|
99
|
+
</div>
|
71
100
|
|
72
101
|
<div class="main-panel">
|
73
102
|
<div class="content">
|
@@ -61,7 +61,7 @@
|
|
61
61
|
|
62
62
|
<td>
|
63
63
|
<div class="pull-right">
|
64
|
-
<button class="btn btn-danger btn-xs" data-selector="remove">Remove</button>
|
64
|
+
<button class="btn btn-danger btn-xs pointer" data-selector="remove">Remove</button>
|
65
65
|
</div>
|
66
66
|
</td>
|
67
67
|
</tr>
|
@@ -69,8 +69,8 @@
|
|
69
69
|
</table>
|
70
70
|
|
71
71
|
<div class="row">
|
72
|
-
<div class="col-md-12">
|
73
|
-
<
|
72
|
+
<div class="col-md-12 text-center">
|
73
|
+
<i class="pe-7s-plus pointer" data-selector="duplicate" style="font-size: 3em;"></i>
|
74
74
|
</div>
|
75
75
|
</div>
|
76
76
|
|
@@ -22,8 +22,9 @@
|
|
22
22
|
<table class="table table-hover table-striped">
|
23
23
|
<thead>
|
24
24
|
<th>Field</th>
|
25
|
-
<th>
|
26
|
-
<th>
|
25
|
+
<th>Type</th>
|
26
|
+
<th>Default</th>
|
27
|
+
<th>Index?</th>
|
27
28
|
<th>Can be null?</th>
|
28
29
|
<th></th>
|
29
30
|
</thead>
|
@@ -36,6 +37,9 @@
|
|
36
37
|
<td>
|
37
38
|
<%= select_tag "models[attributes][][attribute_type]", options_for_select(::Localtower::Generators::Migration::TYPES), class: "form-control" %>
|
38
39
|
</td>
|
40
|
+
<td>
|
41
|
+
<%= select_tag "models[attributes][][defaults]", options_for_select(::Localtower::Generators::Migration::DEFAULTS), include_blank: true, class: "form-control" %>
|
42
|
+
</td>
|
39
43
|
<td>
|
40
44
|
<input type="checkbox" value="true" name="models[attributes][][index]" class="form-control">
|
41
45
|
</td>
|
@@ -44,7 +48,7 @@
|
|
44
48
|
</td>
|
45
49
|
<td>
|
46
50
|
<div class="pull-right">
|
47
|
-
<button class="btn btn-danger btn-xs" data-selector="remove">Remove</button>
|
51
|
+
<button class="btn btn-danger btn-xs pointer" data-selector="remove">Remove</button>
|
48
52
|
</div>
|
49
53
|
</td>
|
50
54
|
</tr>
|
@@ -52,8 +56,8 @@
|
|
52
56
|
</table>
|
53
57
|
|
54
58
|
<div class="row">
|
55
|
-
<div class="col-md-12">
|
56
|
-
<
|
59
|
+
<div class="col-md-12 text-center">
|
60
|
+
<i class="pe-7s-plus pointer" data-selector="duplicate" style="font-size: 3em;"></i>
|
57
61
|
</div>
|
58
62
|
</div>
|
59
63
|
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<%= form_tag relations_path, class: "form" do %>
|
13
13
|
<div class="row">
|
14
14
|
<div class="form-group">
|
15
|
-
<div class="col-md-offset-4 col-md-4">
|
15
|
+
<div class="col-md-offset-4 col-sm-offset-3 col-md-4 col-sm-6">
|
16
16
|
<div class="form-group">
|
17
17
|
<div class="text-center">
|
18
18
|
<label>Name of the Model (optional)</label>
|
@@ -23,20 +23,20 @@
|
|
23
23
|
|
24
24
|
<div class="clearfix"></div>
|
25
25
|
|
26
|
-
<div class="col-md-5">
|
26
|
+
<div class="col-md-5 col-sm-5">
|
27
27
|
<label>Model 1:</label>
|
28
28
|
|
29
29
|
<%= select("relations", "model_one_name", ::Localtower::Tools.models.collect {|p| [ p, p ] }, {include_blank: false}, class: "form-control") %>
|
30
30
|
</div>
|
31
31
|
|
32
|
-
<div class="col-md-2">
|
32
|
+
<div class="col-md-2 col-sm-2">
|
33
33
|
<div class="text-center">
|
34
34
|
<br>
|
35
35
|
<i class="pe-7s-loop" style="font-size: 3em;"></i>
|
36
36
|
</div>
|
37
37
|
</div>
|
38
38
|
|
39
|
-
<div class="col-md-5">
|
39
|
+
<div class="col-md-5 col-sm-5">
|
40
40
|
<label>Model 2:</label>
|
41
41
|
<%= select("relations", "model_two_name", ::Localtower::Tools.models.collect {|p| [ p, p ] }, {include_blank: false}, class: "form-control") %>
|
42
42
|
</div>
|
@@ -24,6 +24,10 @@ module Localtower
|
|
24
24
|
|
25
25
|
::Localtower::Tools.perform_cmd(cmd, false)
|
26
26
|
|
27
|
+
if defaults_present?
|
28
|
+
insert_default_values.call
|
29
|
+
end
|
30
|
+
|
27
31
|
if @opts['run_migrate']
|
28
32
|
::Localtower::Tools.perform_cmd('rake db:migrate', false)
|
29
33
|
# ::Localtower::Tools.perform_cmd('rake db:migrate RAILS_ENV=test', false)
|
@@ -31,6 +35,24 @@ module Localtower
|
|
31
35
|
|
32
36
|
self
|
33
37
|
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def defaults_present?
|
42
|
+
return false unless @opts['attributes'].any? { |attr| attr["defaults"].present? }
|
43
|
+
true
|
44
|
+
end
|
45
|
+
|
46
|
+
def params_for_defaults
|
47
|
+
@opts['attributes'].each_with_object([]) do |attr, arr|
|
48
|
+
arr << Hash[ attr['attribute_name'], attr['defaults'] ] unless attr['defaults'].empty?
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def insert_default_values
|
53
|
+
::Localtower::Generators::ServiceObjects::InsertDefaults.new(params_for_defaults)
|
54
|
+
end
|
55
|
+
|
34
56
|
end
|
35
57
|
end
|
36
58
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Localtower
|
2
|
+
module Generators
|
3
|
+
module ServiceObjects
|
4
|
+
class InsertDefaults
|
5
|
+
|
6
|
+
def initialize(attributes)
|
7
|
+
@attributes = attributes
|
8
|
+
end
|
9
|
+
|
10
|
+
def call
|
11
|
+
insert_defaults
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
attr_reader :attributes
|
17
|
+
|
18
|
+
def insert_defaults
|
19
|
+
attributes.each do |attribute|
|
20
|
+
attribute.each do |attr_key, attr_value|
|
21
|
+
process_migration_file(attr_key, attr_value)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
build_file(file_lines)
|
25
|
+
end
|
26
|
+
|
27
|
+
def process_migration_file(attr_key, attr_value)
|
28
|
+
file_lines.map do |line|
|
29
|
+
attach_default_value(line, attr_key, attr_value)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def attach_default_value(line, attr_key, attr_value)
|
34
|
+
if table_attribute_line?(line) and line.include? attr_key
|
35
|
+
build_line(line, attr_value)
|
36
|
+
else
|
37
|
+
line
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def build_file(lines)
|
42
|
+
File.open(latest_migration, 'w') { |f| f.puts lines }
|
43
|
+
end
|
44
|
+
|
45
|
+
def build_line(line, attr_value)
|
46
|
+
line.gsub!("\n", "") << ", default: " << "#{attr_value}" << "\n"
|
47
|
+
end
|
48
|
+
|
49
|
+
def latest_migration
|
50
|
+
@latest_migration ||= Dir["#{Rails.root}/db/migrate/*"].last
|
51
|
+
end
|
52
|
+
|
53
|
+
def file_lines
|
54
|
+
@file_lines ||= File.readlines(latest_migration)
|
55
|
+
end
|
56
|
+
|
57
|
+
def table_attribute_line?(line)
|
58
|
+
line.squish.start_with? "t."
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/localtower/tools.rb
CHANGED
@@ -19,19 +19,19 @@ module Localtower
|
|
19
19
|
all_folders = (app_folders + lib_folders).flatten
|
20
20
|
|
21
21
|
all_folders.each do |file|
|
22
|
-
|
23
|
-
|
22
|
+
begin
|
23
|
+
ActiveSupport::Dependencies.require_or_load(file)
|
24
|
+
rescue Exception => e
|
25
|
+
puts "Error loading: #{file}"
|
26
|
+
end
|
24
27
|
end
|
25
28
|
end
|
26
29
|
|
27
30
|
def models
|
28
31
|
self.force_reload!
|
29
32
|
|
30
|
-
|
31
|
-
|
32
|
-
Dir["#{Rails.root}/app/models/\*.rb"].map { |f|
|
33
|
-
File.basename(f, '.*').camelize.constantize
|
34
|
-
}.select { |klass| klass != klass_parent }.select { |klass| klass.respond_to?(:columns_hash) }
|
33
|
+
root_klass = defined?(ApplicationRecord) ? ApplicationRecord : ActiveRecord::Base
|
34
|
+
root_klass.subclasses
|
35
35
|
end
|
36
36
|
|
37
37
|
def models_presented
|
data/lib/localtower/version.rb
CHANGED
data/public/css/app.css
CHANGED
@@ -1,3 +1,46 @@
|
|
1
|
+
|
2
|
+
.tower-nav{
|
3
|
+
display: none;
|
4
|
+
justify-content: space-around;
|
5
|
+
padding: 10px 0 0;
|
6
|
+
background-color: #1F77D0;
|
7
|
+
text-align: center;
|
8
|
+
}
|
9
|
+
|
10
|
+
.tower-nav div{
|
11
|
+
display: inline;
|
12
|
+
border-radius: 4px;
|
13
|
+
padding: 5px;
|
14
|
+
margin-bottom: 10px;
|
15
|
+
}
|
16
|
+
|
17
|
+
.tower-nav div:hover{
|
18
|
+
background: rgba(255, 255, 255, 0.23);
|
19
|
+
}
|
20
|
+
|
21
|
+
.tower-a{
|
22
|
+
display: inline-block;
|
23
|
+
color: white;
|
24
|
+
}
|
25
|
+
|
26
|
+
.tower-a:hover{
|
27
|
+
color: white;
|
28
|
+
}
|
29
|
+
|
30
|
+
.tower-nav p{
|
31
|
+
margin: 0;
|
32
|
+
line-height: 30px;
|
33
|
+
font-size: 12px;
|
34
|
+
font-weight: 600;
|
35
|
+
text-transform: uppercase;
|
36
|
+
}
|
37
|
+
|
38
|
+
@media (max-width: 991px) {
|
39
|
+
.tower-nav{
|
40
|
+
display: flex;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
1
44
|
.full-message {
|
2
45
|
z-index: 999;
|
3
46
|
position: fixed;
|
@@ -41,3 +84,17 @@
|
|
41
84
|
width: 45%;
|
42
85
|
margin: 2%;
|
43
86
|
}
|
87
|
+
|
88
|
+
.pointer:hover {
|
89
|
+
cursor: pointer;
|
90
|
+
opacity: 0.9;
|
91
|
+
}
|
92
|
+
|
93
|
+
.pointer:active {
|
94
|
+
position: relative;
|
95
|
+
top: 1px;
|
96
|
+
}
|
97
|
+
|
98
|
+
.sidebar:after, body > .navbar-collapse:after {
|
99
|
+
background: #1E8FE1;
|
100
|
+
}
|
@@ -1,19 +1,19 @@
|
|
1
1
|
/*!
|
2
|
-
|
2
|
+
|
3
3
|
=========================================================
|
4
4
|
* Light Bootstrap Dashboard - v1.3.1.0
|
5
5
|
=========================================================
|
6
|
-
|
6
|
+
|
7
7
|
* Product Page: http://www.creative-tim.com/product/light-bootstrap-dashboard
|
8
8
|
* Copyright 2017 Creative Tim (http://www.creative-tim.com)
|
9
9
|
* Licensed under MIT (https://github.com/creativetimofficial/light-bootstrap-dashboard/blob/master/LICENSE.md)
|
10
|
-
|
10
|
+
|
11
11
|
=========================================================
|
12
|
-
|
12
|
+
|
13
13
|
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
14
|
-
|
14
|
+
|
15
15
|
*/
|
16
|
-
|
16
|
+
|
17
17
|
var searchVisible = 0;
|
18
18
|
var transparent = true;
|
19
19
|
|
@@ -83,9 +83,6 @@ lbd = {
|
|
83
83
|
$sidebar = $('.sidebar');
|
84
84
|
sidebar_color = $sidebar.data('color');
|
85
85
|
|
86
|
-
$logo = $sidebar.find('.logo').first();
|
87
|
-
logo_content = $logo[0].outerHTML;
|
88
|
-
|
89
86
|
ul_content = '';
|
90
87
|
|
91
88
|
$navbar.attr('data-color',sidebar_color);
|
@@ -107,7 +104,7 @@ lbd = {
|
|
107
104
|
'</ul>' +
|
108
105
|
'</div>';
|
109
106
|
|
110
|
-
navbar_content =
|
107
|
+
navbar_content = ul_content;
|
111
108
|
|
112
109
|
$navbar.html(navbar_content);
|
113
110
|
|
@@ -179,4 +176,4 @@ function debounce(func, wait, immediate) {
|
|
179
176
|
}, wait);
|
180
177
|
if (immediate && !timeout) func.apply(context, args);
|
181
178
|
};
|
182
|
-
};
|
179
|
+
};
|
Binary file
|
Binary file
|
Binary file
|
data/spec/dummy/Gemfile
CHANGED
data/spec/dummy/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: /Users/damln/Work/localtower/localtower
|
3
3
|
specs:
|
4
|
-
localtower (0.1.
|
4
|
+
localtower (0.1.8)
|
5
5
|
active_link_to
|
6
6
|
pg
|
7
7
|
rails (>= 4.2.0)
|
@@ -35,8 +35,9 @@ GEM
|
|
35
35
|
erubis (~> 2.7.0)
|
36
36
|
rails-dom-testing (~> 2.0)
|
37
37
|
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
38
|
-
active_link_to (1.0.
|
38
|
+
active_link_to (1.0.4)
|
39
39
|
actionpack
|
40
|
+
addressable
|
40
41
|
activejob (5.0.1)
|
41
42
|
activesupport (= 5.0.1)
|
42
43
|
globalid (>= 0.3.6)
|
@@ -51,6 +52,8 @@ GEM
|
|
51
52
|
i18n (~> 0.7)
|
52
53
|
minitest (~> 5.1)
|
53
54
|
tzinfo (~> 1.1)
|
55
|
+
addressable (2.5.0)
|
56
|
+
public_suffix (~> 2.0, >= 2.0.2)
|
54
57
|
arel (7.1.4)
|
55
58
|
better_errors (2.1.1)
|
56
59
|
coderay (>= 1.0.0)
|
@@ -100,6 +103,11 @@ GEM
|
|
100
103
|
nokogiri (1.7.0.1)
|
101
104
|
mini_portile2 (~> 2.1.0)
|
102
105
|
pg (0.19.0)
|
106
|
+
pry (0.10.4)
|
107
|
+
coderay (~> 1.1.0)
|
108
|
+
method_source (~> 0.8.1)
|
109
|
+
slop (~> 3.4)
|
110
|
+
public_suffix (2.0.5)
|
103
111
|
puma (3.7.0)
|
104
112
|
rack (2.0.1)
|
105
113
|
rack-test (0.6.3)
|
@@ -140,6 +148,7 @@ GEM
|
|
140
148
|
sprockets (>= 2.8, < 4.0)
|
141
149
|
sprockets-rails (>= 2.0, < 4.0)
|
142
150
|
tilt (>= 1.1, < 3)
|
151
|
+
slop (3.6.0)
|
143
152
|
sprockets (3.7.1)
|
144
153
|
concurrent-ruby (~> 1.0)
|
145
154
|
rack (> 1, < 3)
|
@@ -174,6 +183,7 @@ DEPENDENCIES
|
|
174
183
|
listen (~> 3.0.5)
|
175
184
|
localtower!
|
176
185
|
pg
|
186
|
+
pry
|
177
187
|
puma
|
178
188
|
rails (>= 5.0.1)
|
179
189
|
require_reloader
|