nswebgen 0.5.6 → 0.5.7
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/nsweb/generators/nsweb/app/app_generator.rb +10 -17
- data/lib/nsweb/generators/nsweb/app/templates/Gemfile +2 -2
- data/lib/nsweb/generators/nsweb/app/templates/bundler/config.tt +3 -0
- data/lib/nsweb/generators/nsweb/app/templates/config/unicorn.rb +4 -83
- data/lib/nsweb/generators/nsweb/app/templates/config/unicorn_init_customer_qa.sh +85 -0
- data/lib/nsweb/generators/nsweb/app/templates/config/unicorn_init_production.sh +85 -0
- data/lib/nsweb/generators/nsweb/app/templates/config/unicorn_init_shareone_qa.sh +85 -0
- data/lib/nsweb/generators/nsweb/app/templates/config/vhosts/customer_qa.vhost.tt +1 -1
- data/lib/nsweb/generators/nsweb/app/templates/gitignore +1 -1
- data/lib/nswebgen/version.rb +1 -1
- metadata +7 -3
@@ -30,6 +30,9 @@ class AppBuilder < Rails::AppBuilder
|
|
30
30
|
template 'memcache.yml'
|
31
31
|
template 'deploy.rb'
|
32
32
|
template 'unicorn.rb'
|
33
|
+
template 'unicorn_init_customer_qa.sh'
|
34
|
+
template 'unicorn_init_production.sh'
|
35
|
+
template 'unicorn_init_shareone_qa.sh'
|
33
36
|
|
34
37
|
empty_directory 'environments'
|
35
38
|
|
@@ -103,6 +106,11 @@ EOB
|
|
103
106
|
|
104
107
|
def test
|
105
108
|
end
|
109
|
+
|
110
|
+
def vendor
|
111
|
+
directory('bundler', '.bundle')
|
112
|
+
super
|
113
|
+
end
|
106
114
|
end
|
107
115
|
|
108
116
|
module Nsweb
|
@@ -136,15 +144,15 @@ module Nsweb
|
|
136
144
|
|
137
145
|
def run!
|
138
146
|
self.destination_root = app_path
|
147
|
+
puts "destination_root: #{self.destination_root}"
|
139
148
|
|
140
149
|
validate_options!
|
141
150
|
|
142
151
|
generate_rails
|
143
152
|
|
144
|
-
init_bundler
|
145
153
|
init_nsweb
|
146
154
|
init_database
|
147
|
-
capify
|
155
|
+
bundle_command 'exec capify .'
|
148
156
|
gsub_file 'Capfile', /^# (load 'deploy\/assets.*)/, '\1'
|
149
157
|
init_git
|
150
158
|
|
@@ -214,27 +222,12 @@ module Nsweb
|
|
214
222
|
def generate_rails
|
215
223
|
rails_options = options.dup
|
216
224
|
rails_options[:skip_test_unit] = true
|
217
|
-
#rails_options[:skip_bundle] = true
|
218
225
|
rails_options[:skip_javascript] = true
|
219
226
|
|
220
227
|
Rails::Generators::AppGenerator.new([app_path], rails_options).invoke_all
|
221
|
-
add_source "http://gems.nssecuretesting.org/"
|
222
|
-
end
|
223
|
-
|
224
|
-
def init_bundler
|
225
|
-
directory('bundler', '.bundler')
|
226
|
-
run_bundle
|
227
228
|
end
|
228
229
|
|
229
230
|
def init_nsweb
|
230
|
-
append_file 'Gemfile' do
|
231
|
-
<<-EOF.strip_heredoc
|
232
|
-
##### NSWEB GEMS #####
|
233
|
-
#gem 'nsweb'
|
234
|
-
gem 'nsweb', :path => '../../nsweb'
|
235
|
-
### END NSWEB GEMS ###
|
236
|
-
EOF
|
237
|
-
end
|
238
231
|
generate(:session_migration)
|
239
232
|
rake('nsweb:install:migrations')
|
240
233
|
args = []
|
@@ -14,6 +14,6 @@ group :development do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
##### NSWEB GEMS #####
|
17
|
-
gem 'nsweb', git: 'gitosis@192.168.126.10:nsweb.git'
|
18
|
-
|
17
|
+
#gem 'nsweb', git: 'gitosis@192.168.126.10:nsweb.git'
|
18
|
+
gem 'nsweb', path: '../../nsweb'
|
19
19
|
### END NSWEB GEMS ###
|
@@ -1,12 +1,3 @@
|
|
1
|
-
# Sample verbose configuration file for Unicorn (not Rack)
|
2
|
-
#
|
3
|
-
# This configuration file documents many features of Unicorn
|
4
|
-
# that may not be needed for some applications. See
|
5
|
-
# http://unicorn.bogomips.org/examples/unicorn.conf.minimal.rb
|
6
|
-
# for a much simpler configuration file.
|
7
|
-
#
|
8
|
-
# See http://unicorn.bogomips.org/Unicorn/Configurator.html for complete
|
9
|
-
# documentation.
|
10
1
|
rack_env = ENV['RACK_ENV'] || 'development'
|
11
2
|
|
12
3
|
# Use at least one worker per core if you're on a dedicated server,
|
@@ -19,84 +10,14 @@ else
|
|
19
10
|
worker_processes 1
|
20
11
|
end
|
21
12
|
|
22
|
-
|
23
|
-
|
24
|
-
# as root unless it's from system init scripts.
|
25
|
-
# If running the master process as root and the workers as an unprivileged
|
26
|
-
# user, do this to switch euid/egid in the workers (also chowns logs):
|
27
|
-
# user "unprivileged_user", "unprivileged_group"
|
13
|
+
APP_PATH = "/var/www/<%= @app_name %>"
|
14
|
+
working_directory APP_PATH + "/current"
|
28
15
|
|
29
|
-
|
30
|
-
# "current" directory that Capistrano sets up.
|
31
|
-
APP_PATH = "/var/www/<%= @app_name %>" # available in 0.94.0+
|
32
|
-
working_directory APP_PATH + "/current" # available in 0.94.0+
|
16
|
+
listen "/var/tmp/<%= @app_name %>.sock", backlog: 64
|
33
17
|
|
34
|
-
|
35
|
-
# we use a shorter backlog for quicker failover when busy
|
36
|
-
listen "/var/tmp/<%= @app_name %>.sock", :backlog => 64
|
37
|
-
#listen 8080, :tcp_nopush => true
|
18
|
+
timeout 60
|
38
19
|
|
39
|
-
# nuke workers after 30 seconds instead of 60 seconds (the default)
|
40
|
-
timeout 30
|
41
|
-
|
42
|
-
# feel free to point this anywhere accessible on the filesystem
|
43
20
|
pid APP_PATH + "/shared/pids/unicorn.pid"
|
44
21
|
|
45
|
-
# By default, the Unicorn logger will write to stderr.
|
46
|
-
# Additionally, ome applications/frameworks log to stderr or stdout,
|
47
|
-
# so prevent them from going to /dev/null when daemonized here:
|
48
22
|
stderr_path APP_PATH + "/shared/log/unicorn.stderr.log"
|
49
23
|
stdout_path APP_PATH + "/shared/log/unicorn.stdout.log"
|
50
|
-
|
51
|
-
# combine Ruby 2.0.0dev or REE with "preload_app true" for memory savings
|
52
|
-
# http://rubyenterpriseedition.com/faq.html#adapt_apps_for_cow
|
53
|
-
preload_app true
|
54
|
-
GC.respond_to?(:copy_on_write_friendly=) and
|
55
|
-
GC.copy_on_write_friendly = true
|
56
|
-
|
57
|
-
before_fork do |server, worker|
|
58
|
-
# the following is highly recomended for Rails + "preload_app true"
|
59
|
-
# as there's no need for the master process to hold a connection
|
60
|
-
defined?(ActiveRecord::Base) and
|
61
|
-
ActiveRecord::Base.connection.disconnect!
|
62
|
-
|
63
|
-
# The following is only recommended for memory/DB-constrained
|
64
|
-
# installations. It is not needed if your system can house
|
65
|
-
# twice as many worker_processes as you have configured.
|
66
|
-
#
|
67
|
-
# # This allows a new master process to incrementally
|
68
|
-
# # phase out the old master process with SIGTTOU to avoid a
|
69
|
-
# # thundering herd (especially in the "preload_app false" case)
|
70
|
-
# # when doing a transparent upgrade. The last worker spawned
|
71
|
-
# # will then kill off the old master process with a SIGQUIT.
|
72
|
-
# old_pid = "#{server.config[:pid]}.oldbin"
|
73
|
-
# if old_pid != server.pid
|
74
|
-
# begin
|
75
|
-
# sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
|
76
|
-
# Process.kill(sig, File.read(old_pid).to_i)
|
77
|
-
# rescue Errno::ENOENT, Errno::ESRCH
|
78
|
-
# end
|
79
|
-
# end
|
80
|
-
#
|
81
|
-
# Throttle the master from forking too quickly by sleeping. Due
|
82
|
-
# to the implementation of standard Unix signal handlers, this
|
83
|
-
# helps (but does not completely) prevent identical, repeated signals
|
84
|
-
# from being lost when the receiving process is busy.
|
85
|
-
# sleep 1
|
86
|
-
end
|
87
|
-
|
88
|
-
after_fork do |server, worker|
|
89
|
-
# per-process listener ports for debugging/admin/migrations
|
90
|
-
# addr = "127.0.0.1:#{9293 + worker.nr}"
|
91
|
-
# server.listen(addr, :tries => -1, :delay => 5, :tcp_nopush => true)
|
92
|
-
|
93
|
-
# the following is *required* for Rails + "preload_app true",
|
94
|
-
defined?(ActiveRecord::Base) and
|
95
|
-
ActiveRecord::Base.establish_connection
|
96
|
-
|
97
|
-
# if preload_app is true, then you may also want to check and
|
98
|
-
# restart any other shared sockets/descriptors such as Memcached,
|
99
|
-
# and Redis. TokyoCabinet file handles are safe to reuse
|
100
|
-
# between any number of forked children (assuming your kernel
|
101
|
-
# correctly implements pread()/pwrite() system calls)
|
102
|
-
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
### BEGIN INIT INFO
|
3
|
+
# Provides: unicorn_<%= @app_name %>
|
4
|
+
# Required-Start: $remote_fs $syslog
|
5
|
+
# Required-Stop: $remote_fs $syslog
|
6
|
+
# Default-Start: 2 3 4 5
|
7
|
+
# Default-Stop: 0 1 6
|
8
|
+
# Short-Description: Manage unicorn server for <%= @app_name %>
|
9
|
+
# Description: Start, stop, restart unicorn server for <%= @app_name %>
|
10
|
+
### END INIT INFO
|
11
|
+
set -e
|
12
|
+
|
13
|
+
# Feel free to change any of the following variables for your app:
|
14
|
+
TIMEOUT=${TIMEOUT-60}
|
15
|
+
APP_PATH=/var/www/<%= @app_name %>
|
16
|
+
PID=$APP_PATH/shared/pids/unicorn.pid
|
17
|
+
APP_ROOT=$APP_PATH/current
|
18
|
+
CMD="cd $APP_ROOT; bundle exec unicorn -D -c $APP_ROOT/config/unicorn.rb -E customer_qa"
|
19
|
+
AS_USER=deployer
|
20
|
+
set -u
|
21
|
+
|
22
|
+
OLD_PIN="$PID.oldbin"
|
23
|
+
|
24
|
+
sig () {
|
25
|
+
test -s "$PID" && kill -$1 `cat $PID`
|
26
|
+
}
|
27
|
+
|
28
|
+
oldsig () {
|
29
|
+
test -s $OLD_PIN && kill -$1 `cat $OLD_PIN`
|
30
|
+
}
|
31
|
+
|
32
|
+
run () {
|
33
|
+
if [ "$(id -un)" = "$AS_USER" ]; then
|
34
|
+
eval $1
|
35
|
+
else
|
36
|
+
su -c "$1" - $AS_USER
|
37
|
+
fi
|
38
|
+
}
|
39
|
+
|
40
|
+
case "$1" in
|
41
|
+
start)
|
42
|
+
sig 0 && echo >&2 "Already running" && exit 0
|
43
|
+
run "$CMD"
|
44
|
+
;;
|
45
|
+
stop)
|
46
|
+
sig QUIT && exit 0
|
47
|
+
echo >&2 "Not running"
|
48
|
+
;;
|
49
|
+
force-stop)
|
50
|
+
sig TERM && exit 0
|
51
|
+
echo >&2 "Not running"
|
52
|
+
;;
|
53
|
+
restart|reload)
|
54
|
+
sig HUP && echo reloaded OK && exit 0
|
55
|
+
echo >&2 "Couldn't reload, starting '$CMD' instead"
|
56
|
+
run "$CMD"
|
57
|
+
;;
|
58
|
+
upgrade)
|
59
|
+
if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
|
60
|
+
then
|
61
|
+
n=$TIMEOUT
|
62
|
+
while test -s $OLD_PIN && test $n -ge 0
|
63
|
+
do
|
64
|
+
printf '.' && sleep 1 && n=$(( $n - 1 ))
|
65
|
+
done
|
66
|
+
echo
|
67
|
+
|
68
|
+
if test $n -lt 0 && test -s $OLD_PIN
|
69
|
+
then
|
70
|
+
echo >&2 "$OLD_PIN still exists after $TIMEOUT seconds"
|
71
|
+
exit 1
|
72
|
+
fi
|
73
|
+
exit 0
|
74
|
+
fi
|
75
|
+
echo >&2 "Couldn't upgrade, starting '$CMD' instead"
|
76
|
+
run "$CMD"
|
77
|
+
;;
|
78
|
+
reopen-logs)
|
79
|
+
sig USR1
|
80
|
+
;;
|
81
|
+
*)
|
82
|
+
echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
|
83
|
+
exit 1
|
84
|
+
;;
|
85
|
+
esac
|
@@ -0,0 +1,85 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
### BEGIN INIT INFO
|
3
|
+
# Provides: unicorn_<%= @app_name %>
|
4
|
+
# Required-Start: $remote_fs $syslog
|
5
|
+
# Required-Stop: $remote_fs $syslog
|
6
|
+
# Default-Start: 2 3 4 5
|
7
|
+
# Default-Stop: 0 1 6
|
8
|
+
# Short-Description: Manage unicorn server for <%= @app_name %>
|
9
|
+
# Description: Start, stop, restart unicorn server for <%= @app_name %>
|
10
|
+
### END INIT INFO
|
11
|
+
set -e
|
12
|
+
|
13
|
+
# Feel free to change any of the following variables for your app:
|
14
|
+
TIMEOUT=${TIMEOUT-60}
|
15
|
+
APP_PATH=/var/www/<%= @app_name %>
|
16
|
+
PID=$APP_PATH/shared/pids/unicorn.pid
|
17
|
+
APP_ROOT=$APP_PATH/current
|
18
|
+
CMD="cd $APP_ROOT; bundle exec unicorn -D -c $APP_ROOT/config/unicorn.rb -E production"
|
19
|
+
AS_USER=deployer
|
20
|
+
set -u
|
21
|
+
|
22
|
+
OLD_PIN="$PID.oldbin"
|
23
|
+
|
24
|
+
sig () {
|
25
|
+
test -s "$PID" && kill -$1 `cat $PID`
|
26
|
+
}
|
27
|
+
|
28
|
+
oldsig () {
|
29
|
+
test -s $OLD_PIN && kill -$1 `cat $OLD_PIN`
|
30
|
+
}
|
31
|
+
|
32
|
+
run () {
|
33
|
+
if [ "$(id -un)" = "$AS_USER" ]; then
|
34
|
+
eval $1
|
35
|
+
else
|
36
|
+
su -c "$1" - $AS_USER
|
37
|
+
fi
|
38
|
+
}
|
39
|
+
|
40
|
+
case "$1" in
|
41
|
+
start)
|
42
|
+
sig 0 && echo >&2 "Already running" && exit 0
|
43
|
+
run "$CMD"
|
44
|
+
;;
|
45
|
+
stop)
|
46
|
+
sig QUIT && exit 0
|
47
|
+
echo >&2 "Not running"
|
48
|
+
;;
|
49
|
+
force-stop)
|
50
|
+
sig TERM && exit 0
|
51
|
+
echo >&2 "Not running"
|
52
|
+
;;
|
53
|
+
restart|reload)
|
54
|
+
sig HUP && echo reloaded OK && exit 0
|
55
|
+
echo >&2 "Couldn't reload, starting '$CMD' instead"
|
56
|
+
run "$CMD"
|
57
|
+
;;
|
58
|
+
upgrade)
|
59
|
+
if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
|
60
|
+
then
|
61
|
+
n=$TIMEOUT
|
62
|
+
while test -s $OLD_PIN && test $n -ge 0
|
63
|
+
do
|
64
|
+
printf '.' && sleep 1 && n=$(( $n - 1 ))
|
65
|
+
done
|
66
|
+
echo
|
67
|
+
|
68
|
+
if test $n -lt 0 && test -s $OLD_PIN
|
69
|
+
then
|
70
|
+
echo >&2 "$OLD_PIN still exists after $TIMEOUT seconds"
|
71
|
+
exit 1
|
72
|
+
fi
|
73
|
+
exit 0
|
74
|
+
fi
|
75
|
+
echo >&2 "Couldn't upgrade, starting '$CMD' instead"
|
76
|
+
run "$CMD"
|
77
|
+
;;
|
78
|
+
reopen-logs)
|
79
|
+
sig USR1
|
80
|
+
;;
|
81
|
+
*)
|
82
|
+
echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
|
83
|
+
exit 1
|
84
|
+
;;
|
85
|
+
esac
|
@@ -0,0 +1,85 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
### BEGIN INIT INFO
|
3
|
+
# Provides: unicorn_<%= @app_name %>
|
4
|
+
# Required-Start: $remote_fs $syslog
|
5
|
+
# Required-Stop: $remote_fs $syslog
|
6
|
+
# Default-Start: 2 3 4 5
|
7
|
+
# Default-Stop: 0 1 6
|
8
|
+
# Short-Description: Manage unicorn server for <%= @app_name %>
|
9
|
+
# Description: Start, stop, restart unicorn server for <%= @app_name %>
|
10
|
+
### END INIT INFO
|
11
|
+
set -e
|
12
|
+
|
13
|
+
# Feel free to change any of the following variables for your app:
|
14
|
+
TIMEOUT=${TIMEOUT-60}
|
15
|
+
APP_PATH=/var/www/<%= @app_name %>
|
16
|
+
PID=$APP_PATH/shared/pids/unicorn.pid
|
17
|
+
APP_ROOT=$APP_PATH/current
|
18
|
+
CMD="cd $APP_ROOT; bundle exec unicorn -D -c $APP_ROOT/config/unicorn.rb -E shareone_qa"
|
19
|
+
AS_USER=deployer
|
20
|
+
set -u
|
21
|
+
|
22
|
+
OLD_PIN="$PID.oldbin"
|
23
|
+
|
24
|
+
sig () {
|
25
|
+
test -s "$PID" && kill -$1 `cat $PID`
|
26
|
+
}
|
27
|
+
|
28
|
+
oldsig () {
|
29
|
+
test -s $OLD_PIN && kill -$1 `cat $OLD_PIN`
|
30
|
+
}
|
31
|
+
|
32
|
+
run () {
|
33
|
+
if [ "$(id -un)" = "$AS_USER" ]; then
|
34
|
+
eval $1
|
35
|
+
else
|
36
|
+
su -c "$1" - $AS_USER
|
37
|
+
fi
|
38
|
+
}
|
39
|
+
|
40
|
+
case "$1" in
|
41
|
+
start)
|
42
|
+
sig 0 && echo >&2 "Already running" && exit 0
|
43
|
+
run "$CMD"
|
44
|
+
;;
|
45
|
+
stop)
|
46
|
+
sig QUIT && exit 0
|
47
|
+
echo >&2 "Not running"
|
48
|
+
;;
|
49
|
+
force-stop)
|
50
|
+
sig TERM && exit 0
|
51
|
+
echo >&2 "Not running"
|
52
|
+
;;
|
53
|
+
restart|reload)
|
54
|
+
sig HUP && echo reloaded OK && exit 0
|
55
|
+
echo >&2 "Couldn't reload, starting '$CMD' instead"
|
56
|
+
run "$CMD"
|
57
|
+
;;
|
58
|
+
upgrade)
|
59
|
+
if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
|
60
|
+
then
|
61
|
+
n=$TIMEOUT
|
62
|
+
while test -s $OLD_PIN && test $n -ge 0
|
63
|
+
do
|
64
|
+
printf '.' && sleep 1 && n=$(( $n - 1 ))
|
65
|
+
done
|
66
|
+
echo
|
67
|
+
|
68
|
+
if test $n -lt 0 && test -s $OLD_PIN
|
69
|
+
then
|
70
|
+
echo >&2 "$OLD_PIN still exists after $TIMEOUT seconds"
|
71
|
+
exit 1
|
72
|
+
fi
|
73
|
+
exit 0
|
74
|
+
fi
|
75
|
+
echo >&2 "Couldn't upgrade, starting '$CMD' instead"
|
76
|
+
run "$CMD"
|
77
|
+
;;
|
78
|
+
reopen-logs)
|
79
|
+
sig USR1
|
80
|
+
;;
|
81
|
+
*)
|
82
|
+
echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
|
83
|
+
exit 1
|
84
|
+
;;
|
85
|
+
esac
|
data/lib/nswebgen/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: nswebgen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.5.
|
5
|
+
version: 0.5.7
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- John C. Burr
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2012-
|
14
|
+
date: 2012-05-22 00:00:00 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: railties
|
@@ -64,12 +64,16 @@ files:
|
|
64
64
|
- lib/nsweb/generators/nsweb/app/app_generator.rb
|
65
65
|
- lib/nsweb/generators/nsweb/app/templates/Gemfile
|
66
66
|
- lib/nsweb/generators/nsweb/app/templates/README
|
67
|
+
- lib/nsweb/generators/nsweb/app/templates/bundler/config.tt
|
67
68
|
- lib/nsweb/generators/nsweb/app/templates/config/database.yml
|
68
69
|
- lib/nsweb/generators/nsweb/app/templates/config/deploy.rb
|
69
70
|
- lib/nsweb/generators/nsweb/app/templates/config/initializers/session_store.rb.tt
|
70
71
|
- lib/nsweb/generators/nsweb/app/templates/config/memcache.yml
|
71
72
|
- lib/nsweb/generators/nsweb/app/templates/config/routes.rb
|
72
73
|
- lib/nsweb/generators/nsweb/app/templates/config/unicorn.rb
|
74
|
+
- lib/nsweb/generators/nsweb/app/templates/config/unicorn_init_customer_qa.sh
|
75
|
+
- lib/nsweb/generators/nsweb/app/templates/config/unicorn_init_production.sh
|
76
|
+
- lib/nsweb/generators/nsweb/app/templates/config/unicorn_init_shareone_qa.sh
|
73
77
|
- lib/nsweb/generators/nsweb/app/templates/config/vhosts/customer_qa.vhost.tt
|
74
78
|
- lib/nsweb/generators/nsweb/app/templates/config/vhosts/production.vhost.tt
|
75
79
|
- lib/nsweb/generators/nsweb/app/templates/gitignore
|
@@ -91,7 +95,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
91
95
|
requirements:
|
92
96
|
- - ">="
|
93
97
|
- !ruby/object:Gem::Version
|
94
|
-
hash:
|
98
|
+
hash: 260496689
|
95
99
|
segments:
|
96
100
|
- 0
|
97
101
|
version: "0"
|