localtower 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|

|
@@ -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
|
+
[](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
|