munin_passenger 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +2 -0
- data/.travis.yml +16 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +20 -0
- data/README.md +69 -0
- data/Rakefile +19 -0
- data/Vagrantfile +172 -0
- data/bin/munin_passenger-install +10 -0
- data/bin/munin_passenger-install.sh +13 -0
- data/bin/passenger_cpu +9 -0
- data/bin/passenger_last_used +9 -0
- data/bin/passenger_munin-install.sh +13 -0
- data/bin/passenger_processed +9 -0
- data/bin/passenger_queue +9 -0
- data/bin/passenger_ram +9 -0
- data/bin/passenger_uptime +9 -0
- data/example/.gitignore +23 -0
- data/example/Gemfile +45 -0
- data/example/Gemfile.lock +194 -0
- data/example/README.md +24 -0
- data/example/Rakefile +6 -0
- data/example/app/assets/config/manifest.js +3 -0
- data/example/app/assets/images/.keep +0 -0
- data/example/app/assets/javascripts/application.js +15 -0
- data/example/app/assets/javascripts/cable.js +13 -0
- data/example/app/assets/javascripts/channels/.keep +0 -0
- data/example/app/assets/stylesheets/application.css +15 -0
- data/example/app/channels/application_cable/channel.rb +4 -0
- data/example/app/channels/application_cable/connection.rb +4 -0
- data/example/app/controllers/application_controller.rb +8 -0
- data/example/app/controllers/concerns/.keep +0 -0
- data/example/app/helpers/application_helper.rb +2 -0
- data/example/app/jobs/application_job.rb +2 -0
- data/example/app/mailers/application_mailer.rb +4 -0
- data/example/app/models/application_record.rb +3 -0
- data/example/app/models/concerns/.keep +0 -0
- data/example/app/views/layouts/application.html.erb +14 -0
- data/example/app/views/layouts/mailer.html.erb +13 -0
- data/example/app/views/layouts/mailer.text.erb +1 -0
- data/example/bin/bundle +3 -0
- data/example/bin/rails +9 -0
- data/example/bin/rake +9 -0
- data/example/bin/setup +38 -0
- data/example/bin/spring +17 -0
- data/example/bin/update +29 -0
- data/example/bin/yarn +11 -0
- data/example/config/application.rb +18 -0
- data/example/config/boot.rb +3 -0
- data/example/config/cable.yml +10 -0
- data/example/config/database.yml +7 -0
- data/example/config/environment.rb +5 -0
- data/example/config/environments/development.rb +54 -0
- data/example/config/environments/production.rb +91 -0
- data/example/config/environments/test.rb +42 -0
- data/example/config/initializers/application_controller_renderer.rb +8 -0
- data/example/config/initializers/assets.rb +14 -0
- data/example/config/initializers/backtrace_silencers.rb +7 -0
- data/example/config/initializers/cookies_serializer.rb +5 -0
- data/example/config/initializers/filter_parameter_logging.rb +4 -0
- data/example/config/initializers/inflections.rb +16 -0
- data/example/config/initializers/mime_types.rb +4 -0
- data/example/config/initializers/wrap_parameters.rb +14 -0
- data/example/config/locales/en.yml +33 -0
- data/example/config/puma.rb +56 -0
- data/example/config/routes.rb +4 -0
- data/example/config/secrets.yml +33 -0
- data/example/config/spring.rb +6 -0
- data/example/config.ru +5 -0
- data/example/db/seeds.rb +7 -0
- data/example/lib/assets/.keep +0 -0
- data/example/lib/tasks/.keep +0 -0
- data/example/log/.keep +0 -0
- data/example/package.json +5 -0
- data/example/public/404.html +67 -0
- data/example/public/422.html +67 -0
- data/example/public/500.html +66 -0
- data/example/public/apple-touch-icon-precomposed.png +0 -0
- data/example/public/apple-touch-icon.png +0 -0
- data/example/public/favicon.ico +0 -0
- data/example/public/robots.txt +1 -0
- data/example/test/application_system_test_case.rb +5 -0
- data/example/test/controllers/.keep +0 -0
- data/example/test/fixtures/.keep +0 -0
- data/example/test/fixtures/files/.keep +0 -0
- data/example/test/helpers/.keep +0 -0
- data/example/test/integration/.keep +0 -0
- data/example/test/mailers/.keep +0 -0
- data/example/test/models/.keep +0 -0
- data/example/test/system/.keep +0 -0
- data/example/test/test_helper.rb +10 -0
- data/example/tmp/.keep +0 -0
- data/example/vendor/.keep +0 -0
- data/lib/munin_passenger/collect.rb +71 -0
- data/lib/munin_passenger/graphs.rb +213 -0
- data/lib/munin_passenger/version.rb +3 -0
- data/lib/munin_passenger.rb +2 -0
- data/munin_passenger.gemspec +34 -0
- data/scripts/capture-passenger-status.sh +3 -0
- data/scripts/load-test.sh +3 -0
- data/scripts/make-bins.rb +38 -0
- data/spec/mock/passenger-status +3 -0
- data/spec/mock/passenger-status.xml +2 -0
- data/spec/munin_passenger_spec.rb +139 -0
- data/spec/spec_helper.rb +15 -0
- metadata +255 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cd4851916ebee9fa861409169457d111a73ffd2ba8601f94baac9656be2df3d5
|
4
|
+
data.tar.gz: 5d65009a959ae947020602d57a84d97e7464f604cc0be371285a99177f357dd1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 699faab7cf106fbd9243e0ab513ba43a7f78479f3dfcdedefab1f88364aa863eb360eaeb2d0dbc6f12d5521178a4463b6113c61642919e6af2941146cc7334fb
|
7
|
+
data.tar.gz: 6467c039f53a061b6d4324c2b79b09eac0a32c8678f0933d31a05c130690bb9ede1852d90b3011a8f28e2c7e2b3ab1d62df4ef778041c07044b983a6e165704c
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2018 Paul A. Jungwirth
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
This is a collection of [munin](http://munin-monitoring.org/) plugins for [Phusion Passenger](https://www.phusionpassenger.com/).
|
2
|
+
|
3
|
+
They give you graphs for things like:
|
4
|
+
|
5
|
+
- How many requests are waiting in the queue for a worker.
|
6
|
+
- How many requests each worker is currently handling.
|
7
|
+
- How much RAM each Passenger worker is using.
|
8
|
+
- How much CPU each Passenger worker is using.
|
9
|
+
- How many cumulative requests have been processed by each worker.
|
10
|
+
- How long each worker has been alive.
|
11
|
+
- How long each worker has been idle.
|
12
|
+
|
13
|
+
The plugins are written in Ruby and packaged as a gem,
|
14
|
+
because if you're running Passenger, presumably you are comfortable with Ruby and its ecosystem.
|
15
|
+
To install them, first install the gem, then add symlinks to your munin `plugins` directory as desired.
|
16
|
+
You can run this to symlink all the plugins automatically:
|
17
|
+
|
18
|
+
```
|
19
|
+
munin_passenger-install /etc/munin/plugins
|
20
|
+
```
|
21
|
+
|
22
|
+
(Actually `/etc/munin/plugins` if the default, so you can leave it off if you like.)
|
23
|
+
|
24
|
+
You should also configure the plugins by adding a file at `/etc/munin/plugin-conf.d/passenger` with these contents:
|
25
|
+
|
26
|
+
```
|
27
|
+
[passenger_*]
|
28
|
+
user root
|
29
|
+
env.PASSENGER_ROOT /usr/sbin
|
30
|
+
```
|
31
|
+
|
32
|
+
The `user root` line is necessary because otherwise `passenger-status` will refuse to run.
|
33
|
+
The second line should be whatever directory contains `passenger-status`.
|
34
|
+
|
35
|
+
Once installed, you will get graphs for most of the things `passenger-status` can tell you.
|
36
|
+
|
37
|
+
# TODO
|
38
|
+
|
39
|
+
- Distinguish between different groups/supergroups, perhaps by having plugins like `passenger_ram_` etc.
|
40
|
+
so you can get them in separate graphs.
|
41
|
+
|
42
|
+
- Suppress the "helpful" `passenger-status` message about `xmllint` so it doesn't clutter the munin log,
|
43
|
+
without suppressing all the rest of stderr.
|
44
|
+
|
45
|
+
# Development
|
46
|
+
|
47
|
+
You can run tests by saying `rspec spec`.
|
48
|
+
|
49
|
+
You can build a local copy of the gem by saying `rake build`, and install it with `rake install`.
|
50
|
+
|
51
|
+
After running `rake build`
|
52
|
+
you can run `vagrant up` to build a machine running Passenger against a dummy Rails app,
|
53
|
+
with this munin plugin included.
|
54
|
+
It will install the most recent `*.gem` file in `pkg`.
|
55
|
+
Then you can do to http://192.168.60.10:7778/ to see the graphs.
|
56
|
+
|
57
|
+
You can run `scripts/make-bins.rb` to regenerate the files in `bin`.
|
58
|
+
|
59
|
+
You can run `scripts/load-test.sh` to simulate load on the app.
|
60
|
+
While that is running, do `scripts/capture-passenger-status.sh` to get some realish XML you can use as a test fixture or example.
|
61
|
+
|
62
|
+
If you have it installed, you can use `xmllint --format -` and `xmllint --noblanks -` to make Passenger's XML readable vs compact.
|
63
|
+
|
64
|
+
You can release a new version of the gem with `rake release`.
|
65
|
+
|
66
|
+
# Copyright
|
67
|
+
|
68
|
+
Copyright (c) 2018 by Paul A. Jungwirth.
|
69
|
+
See LICENSE.txt for further details.
|
data/Rakefile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
require 'rubocop/rake_task'
|
4
|
+
|
5
|
+
RSpec::Core::RakeTask.new(:spec)
|
6
|
+
RuboCop::RakeTask.new
|
7
|
+
|
8
|
+
task readme: [] do
|
9
|
+
`markdown README.md >README.html`
|
10
|
+
end
|
11
|
+
|
12
|
+
if ENV['CI'].nil?
|
13
|
+
task default: %w[spec rubocop]
|
14
|
+
else
|
15
|
+
case ENV['SUITE']
|
16
|
+
when 'rubocop' then task default: :rubocop
|
17
|
+
else task default: :spec
|
18
|
+
end
|
19
|
+
end
|
data/Vagrantfile
ADDED
@@ -0,0 +1,172 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
Vagrant.configure("2") do |config|
|
5
|
+
# All Vagrant configuration is done here. The most common configuration
|
6
|
+
# options are documented and commented below. For a complete reference,
|
7
|
+
# please see the online documentation at vagrantup.com.
|
8
|
+
|
9
|
+
# Every Vagrant virtual environment requires a box to build off of.
|
10
|
+
config.vm.box = "ubuntu/xenial64"
|
11
|
+
# config.vm.box_version = '0.1.0'
|
12
|
+
|
13
|
+
config.ssh.forward_agent = true
|
14
|
+
config.omnibus.chef_version = '12.18.31'
|
15
|
+
|
16
|
+
config.vm.define "app" do |host|
|
17
|
+
host.vm.network :private_network, ip: "192.168.60.10"
|
18
|
+
host.vm.provider :virtualbox do |vb|
|
19
|
+
vb.name = "munin_with_passenger"
|
20
|
+
vb.customize ["modifyvm", :id, "--memory", "1024"]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
config.vm.provision :shell, inline: <<-EOS
|
25
|
+
set -eu
|
26
|
+
|
27
|
+
sudo apt-get update
|
28
|
+
|
29
|
+
# nginx
|
30
|
+
sudo apt-get install -y nginx
|
31
|
+
|
32
|
+
# passenger
|
33
|
+
sudo apt-get install -y dirmngr gnupg
|
34
|
+
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
|
35
|
+
sudo apt-get install -y apt-transport-https ca-certificates
|
36
|
+
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main > /etc/apt/sources.list.d/passenger.list'
|
37
|
+
sudo apt-get update
|
38
|
+
sudo apt-get install -y nginx-extras passenger
|
39
|
+
sudo tee /etc/nginx/nginx.conf <<EOF
|
40
|
+
user www-data;
|
41
|
+
worker_processes 2;
|
42
|
+
pid /run/nginx.pid;
|
43
|
+
|
44
|
+
events {
|
45
|
+
worker_connections 768;
|
46
|
+
}
|
47
|
+
|
48
|
+
http {
|
49
|
+
sendfile on;
|
50
|
+
tcp_nopush on;
|
51
|
+
tcp_nodelay on;
|
52
|
+
keepalive_timeout 65;
|
53
|
+
types_hash_max_size 2048;
|
54
|
+
# server_tokens off;
|
55
|
+
|
56
|
+
# server_names_hash_bucket_size 64;
|
57
|
+
# server_name_in_redirect off;
|
58
|
+
|
59
|
+
include /etc/nginx/mime.types;
|
60
|
+
default_type application/octet-stream;
|
61
|
+
|
62
|
+
##
|
63
|
+
# SSL Settings
|
64
|
+
##
|
65
|
+
|
66
|
+
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
|
67
|
+
ssl_prefer_server_ciphers on;
|
68
|
+
|
69
|
+
##
|
70
|
+
# Logging Settings
|
71
|
+
##
|
72
|
+
|
73
|
+
access_log /var/log/nginx/access.log;
|
74
|
+
error_log /var/log/nginx/error.log;
|
75
|
+
|
76
|
+
##
|
77
|
+
# Gzip Settings
|
78
|
+
##
|
79
|
+
|
80
|
+
gzip on;
|
81
|
+
gzip_disable "msie6";
|
82
|
+
|
83
|
+
# gzip_vary on;
|
84
|
+
# gzip_proxied any;
|
85
|
+
# gzip_comp_level 6;
|
86
|
+
# gzip_buffers 16 8k;
|
87
|
+
# gzip_http_version 1.1;
|
88
|
+
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
|
89
|
+
|
90
|
+
##
|
91
|
+
# Phusion Passenger config
|
92
|
+
##
|
93
|
+
# Uncomment it if you installed passenger or passenger-enterprise
|
94
|
+
##
|
95
|
+
|
96
|
+
include /etc/nginx/passenger.conf;
|
97
|
+
passenger_max_pool_size 4;
|
98
|
+
passenger_pool_idle_time 300;
|
99
|
+
passenger_pre_start http://127.0.0.1/;
|
100
|
+
passenger_user_switching off;
|
101
|
+
passenger_default_user www-data;
|
102
|
+
passenger_default_group www-data;
|
103
|
+
|
104
|
+
limit_req_zone \\$binary_remote_addr zone=one:10m rate=20r/s;
|
105
|
+
|
106
|
+
##
|
107
|
+
# Virtual Host Configs
|
108
|
+
##
|
109
|
+
|
110
|
+
include /etc/nginx/conf.d/*.conf;
|
111
|
+
include /etc/nginx/sites-enabled/*;
|
112
|
+
}
|
113
|
+
EOF
|
114
|
+
|
115
|
+
sudo tee /etc/nginx/sites-available/rails <<EOF
|
116
|
+
server {
|
117
|
+
listen 80 default_server;
|
118
|
+
server_name _;
|
119
|
+
|
120
|
+
root /vagrant/example/public;
|
121
|
+
try_files \\$uri @passenger;
|
122
|
+
|
123
|
+
location @passenger {
|
124
|
+
rails_env production;
|
125
|
+
passenger_enabled on;
|
126
|
+
passenger_min_instances 4;
|
127
|
+
limit_req zone=one burst=5;
|
128
|
+
}
|
129
|
+
}
|
130
|
+
EOF
|
131
|
+
sudo rm -f /etc/nginx/sites-enabled/default
|
132
|
+
sudo ln -s /etc/nginx/sites-available/rails /etc/nginx/sites-enabled/
|
133
|
+
|
134
|
+
# munin
|
135
|
+
sudo add-apt-repository -y ppa:hawq/munin
|
136
|
+
sudo apt-get update
|
137
|
+
sudo apt-get install -y munin munin-node
|
138
|
+
sudo tee /etc/nginx/sites-available/munin <<EOF
|
139
|
+
server {
|
140
|
+
listen 7778;
|
141
|
+
root /var/cache/munin/www;
|
142
|
+
}
|
143
|
+
EOF
|
144
|
+
sudo ln -s /etc/nginx/sites-available/munin /etc/nginx/sites-enabled/
|
145
|
+
|
146
|
+
# postgres
|
147
|
+
sudo apt-get install -y postgresql postgresql-contrib
|
148
|
+
sudo su - postgres -c "psql -c \\"CREATE USER rails WITH PASSWORD 'rails';\\""
|
149
|
+
sudo su - postgres -c "psql -c \\"CREATE DATABASE rails WITH OWNER rails;\\""
|
150
|
+
|
151
|
+
# rails
|
152
|
+
cd /vagrant/example
|
153
|
+
sudo gem install bundler
|
154
|
+
sudo apt-get install -y build-essential patch ruby-dev zlib1g-dev liblzma-dev libpq-dev nodejs
|
155
|
+
sudo bundle install --system
|
156
|
+
RAILS_ENV=production bundle exec rake db:migrate
|
157
|
+
|
158
|
+
# my plugin
|
159
|
+
the_gem=`ls -t /vagrant/pkg/*.gem | head -1`
|
160
|
+
if [ ! -z "$the_gem" ]; then
|
161
|
+
sudo gem install /vagrant/pkg/`ls /vagrant/pkg/ | head -1`
|
162
|
+
fi
|
163
|
+
sudo munin_passenger-install
|
164
|
+
sudo tee /etc/munin/plugin-conf.d/passenger <<EOF
|
165
|
+
[passenger_*]
|
166
|
+
user root
|
167
|
+
env.PASSENGER_ROOT /usr/sbin
|
168
|
+
EOF
|
169
|
+
sudo service munin-node restart
|
170
|
+
sudo service nginx restart
|
171
|
+
EOS
|
172
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#/usr/bin/env ruby
|
2
|
+
|
3
|
+
# This has to be a Ruby script, not a shell script!
|
4
|
+
# See https://stackoverflow.com/questions/23701726/deploy-a-shell-script-with-ruby-gem-and-install-in-bin-directory
|
5
|
+
|
6
|
+
bin_dir = File.expand_path(File.dirname(__FILE__))
|
7
|
+
shell_script_path = File.join(bin_dir, 'munin_passenger-install.sh')
|
8
|
+
|
9
|
+
# Have to make sure it runs bash, not dash or sh:
|
10
|
+
system("bash", shell_script_path, *ARGV)
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#/bin/bash
|
2
|
+
|
3
|
+
set -eu
|
4
|
+
|
5
|
+
dest="${1:-/etc/munin/plugins/}"
|
6
|
+
mydir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
7
|
+
|
8
|
+
ln -fs "${mydir}/passenger_queue" "$dest"
|
9
|
+
ln -fs "${mydir}/passenger_ram" "$dest"
|
10
|
+
ln -fs "${mydir}/passenger_cpu" "$dest"
|
11
|
+
ln -fs "${mydir}/passenger_processed" "$dest"
|
12
|
+
ln -fs "${mydir}/passenger_uptime" "$dest"
|
13
|
+
ln -fs "${mydir}/passenger_last_used" "$dest"
|
data/bin/passenger_cpu
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#/bin/bash
|
2
|
+
|
3
|
+
set -eu
|
4
|
+
|
5
|
+
dest="${1:-/etc/munin/plugins/}"
|
6
|
+
mydir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
7
|
+
|
8
|
+
ln -s "${mydir}/passenger_queue" "$dest"
|
9
|
+
ln -s "${mydir}/passenger_ram" "$dest"
|
10
|
+
ln -s "${mydir}/passenger_cpu" "$dest"
|
11
|
+
ln -s "${mydir}/passenger_processed" "$dest"
|
12
|
+
ln -s "${mydir}/passenger_uptime" "$dest"
|
13
|
+
ln -s "${mydir}/passenger_last_used" "$dest"
|
data/bin/passenger_queue
ADDED
data/bin/passenger_ram
ADDED
data/example/.gitignore
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
|
2
|
+
#
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
5
|
+
# git config --global core.excludesfile '~/.gitignore_global'
|
6
|
+
|
7
|
+
# Ignore bundler config.
|
8
|
+
/.bundle
|
9
|
+
|
10
|
+
# Ignore the default SQLite database.
|
11
|
+
/db/*.sqlite3
|
12
|
+
/db/*.sqlite3-journal
|
13
|
+
|
14
|
+
# Ignore all logfiles and tempfiles.
|
15
|
+
/log/*
|
16
|
+
/tmp/*
|
17
|
+
!/log/.keep
|
18
|
+
!/tmp/.keep
|
19
|
+
|
20
|
+
/node_modules
|
21
|
+
/yarn-error.log
|
22
|
+
|
23
|
+
.byebug_history
|
data/example/Gemfile
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
git_source(:github) do |repo_name|
|
4
|
+
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
|
5
|
+
"https://github.com/#{repo_name}.git"
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
gem 'rails', '~> 5.1.6'
|
10
|
+
gem 'pg'
|
11
|
+
gem 'puma', '~> 3.7'
|
12
|
+
gem 'sass-rails', '~> 5.0'
|
13
|
+
gem 'uglifier', '>= 1.3.0'
|
14
|
+
# See https://github.com/rails/execjs#readme for more supported runtimes
|
15
|
+
gem 'therubyracer', platforms: :ruby
|
16
|
+
|
17
|
+
gem 'turbolinks', '~> 5'
|
18
|
+
gem 'jbuilder', '~> 2.5'
|
19
|
+
# Use Redis adapter to run Action Cable in production
|
20
|
+
# gem 'redis', '~> 4.0'
|
21
|
+
# Use ActiveModel has_secure_password
|
22
|
+
# gem 'bcrypt', '~> 3.1.7'
|
23
|
+
|
24
|
+
# Use Capistrano for deployment
|
25
|
+
# gem 'capistrano-rails', group: :development
|
26
|
+
|
27
|
+
group :development, :test do
|
28
|
+
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
29
|
+
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
|
30
|
+
# Adds support for Capybara system testing and selenium driver
|
31
|
+
gem 'capybara', '~> 2.13'
|
32
|
+
gem 'selenium-webdriver'
|
33
|
+
end
|
34
|
+
|
35
|
+
group :development do
|
36
|
+
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
|
37
|
+
gem 'web-console', '>= 3.3.0'
|
38
|
+
gem 'listen', '>= 3.0.5', '< 3.2'
|
39
|
+
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
40
|
+
gem 'spring'
|
41
|
+
gem 'spring-watcher-listen', '~> 2.0.0'
|
42
|
+
end
|
43
|
+
|
44
|
+
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
45
|
+
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|