Add 'gem thin': WebBrick is deprecated

This commit is contained in:
kyg516 2016-09-14 16:23:13 +09:00
parent e6774a071f
commit b97c484ff8
5 changed files with 41 additions and 59 deletions

View File

@ -35,6 +35,7 @@ gem 'sdoc', '~> 0.4.0', group: :doc
# Use Capistrano for deployment # Use Capistrano for deployment
# gem 'capistrano-rails', group: :development # gem 'capistrano-rails', group: :development
gem 'thin'
group :development, :test do group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console # Call 'byebug' anywhere in the code to stop execution and get a debugger console
@ -48,4 +49,3 @@ group :development do
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring' gem 'spring'
end end

View File

@ -61,6 +61,7 @@ GEM
execjs execjs
coffee-script-source (1.10.0) coffee-script-source (1.10.0)
concurrent-ruby (1.0.1) concurrent-ruby (1.0.1)
daemons (1.2.4)
debug_inspector (0.0.2) debug_inspector (0.0.2)
devise (4.2.0) devise (4.2.0)
bcrypt (~> 3.0) bcrypt (~> 3.0)
@ -69,6 +70,7 @@ GEM
responders responders
warden (~> 1.2.3) warden (~> 1.2.3)
erubis (2.7.0) erubis (2.7.0)
eventmachine (1.2.0.1)
execjs (2.6.0) execjs (2.6.0)
font-awesome-rails (4.6.3.1) font-awesome-rails (4.6.3.1)
railties (>= 3.2, < 5.1) railties (>= 3.2, < 5.1)
@ -148,6 +150,10 @@ GEM
activesupport (>= 4.0) activesupport (>= 4.0)
sprockets (>= 3.0.0) sprockets (>= 3.0.0)
sqlite3 (1.3.11) sqlite3 (1.3.11)
thin (1.7.0)
daemons (~> 1.0, >= 1.0.9)
eventmachine (~> 1.0, >= 1.0.4)
rack (>= 1, < 3)
thor (0.19.1) thor (0.19.1)
thread_safe (0.3.5) thread_safe (0.3.5)
tilt (2.0.2) tilt (2.0.2)
@ -182,9 +188,10 @@ DEPENDENCIES
sdoc (~> 0.4.0) sdoc (~> 0.4.0)
spring spring
sqlite3 sqlite3
thin
turbolinks turbolinks
uglifier (>= 1.3.0) uglifier (>= 1.3.0)
web-console (~> 2.0) web-console (~> 2.0)
BUNDLED WITH BUNDLED WITH
1.12.5 1.13.0

View File

@ -2,6 +2,7 @@ class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception. # Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead. # For APIs, you may want to use :null_session instead.
# protect_from_forgery with: :exception # protect_from_forgery with: :exception
helper_method :volume_mount, :volume_unmount, :volume_create, :volume_delete, :volume_start, :volume_stop
def get_conf def get_conf
@config = Hash.new @config = Hash.new

View File

@ -101,7 +101,7 @@ class VolumeController < ApplicationController
command << "force" command << "force"
puts command puts command
`#{command}` `#{command}`
# redirect_to '/volume/index' redirect_to '/volume/index'
end end
def volume_stop def volume_stop
@ -132,7 +132,7 @@ class VolumeController < ApplicationController
command << "-p " + @config["host_port"].to_s + " " command << "-p " + @config["host_port"].to_s + " "
end end
command << @config["host_user"].to_s + "@" + @config["host_ip"].to_s command << @config["host_user"].to_s + "@" + @config["host_ip"].to_s
command << " gluster volume start " + volume_name command << " gluster volume start " + volume_name.to_s
puts command puts command
`#{command}` `#{command}`
redirect_to '/volume/index' redirect_to '/volume/index'

View File

@ -3,9 +3,7 @@
<div class="popup"> <div class="popup">
<h2> Choose mount point </h2> <h2> Choose mount point </h2>
<a class="close" href="#">&times;</a> <a class="close" href="#">&times;</a>
<form id="form_volume_create" data-parsley-validate class="form-horizontal form-label-left"> <form id="form_volume_create" data-parsley-validate class="form-horizontal form-label-left">
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="volume-name">Volume Name <span class="required">*</span> <label class="control-label col-md-3 col-sm-3 col-xs-12" for="volume-name">Volume Name <span class="required">*</span>
</label> </label>
@ -13,7 +11,6 @@
<input type="text" required="required" class="form-control col-md-7 col-xs-12"> <input type="text" required="required" class="form-control col-md-7 col-xs-12">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Volume Type <span class="required">*</span> <label class="control-label col-md-3 col-sm-3 col-xs-12">Volume Type <span class="required">*</span>
</label> </label>
@ -25,7 +22,6 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Number of brick <span class="required">*</span> <label class="control-label col-md-3 col-sm-3 col-xs-12">Number of brick <span class="required">*</span>
</label> </label>
@ -37,7 +33,6 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="row" style="margin:0 0 10px 0"> <div class="row" style="margin:0 0 10px 0">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Bricks <span class="required">*</span> <label class="control-label col-md-3 col-sm-3 col-xs-12">Bricks <span class="required">*</span>
@ -56,9 +51,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="ln_solid"></div> <div class="ln_solid"></div>
<div class="form-group"> <div class="form-group">
<div class="col-md-6 col-sm-6 col-xs-12 col-md-offset-3"> <div class="col-md-6 col-sm-6 col-xs-12 col-md-offset-3">
<a href="#" class="btn btn-primary">Cancel</a> <a href="#" class="btn btn-primary">Cancel</a>
@ -66,7 +59,6 @@
</div> </div>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
@ -97,7 +89,10 @@
</td> </td>
<td><%=t["auth"]%></td> <td><%=t["auth"]%></td>
<td> <td>
<button class="btn btn-primary pull-right" onclick="volume_mount('<%=@current_dir + "/" + t["name"]%>')">select</botton> <form data-parsley-validate>
<input type="hidden" value='<%=@current_dir + "/" + t["name"]%>'>
<button type="submit" class="btn btn-primary pull-right">select</botton>
</form>
</td> </td>
</tr> </tr>
<%end%> <%end%>
@ -153,7 +148,7 @@
<div class="col-md-6 col-sm-6 col-xs-12"> <div class="col-md-6 col-sm-6 col-xs-12">
<div style="margin: 10px"> <div style="margin: 10px">
<p class="text-muted font-13 m-b-30"><code>Volume Info</code></p> <p class="text-muted font-13 m-b-30"><span class="badge bg-blue">Volume Info</span></p>
Type : <%=t["Type"]%> <br> Type : <%=t["Type"]%> <br>
Volume ID : <%=t["Volume ID"]%> <br> Volume ID : <%=t["Volume ID"]%> <br>
Status : <%=t["Status"]%> <br> Status : <%=t["Status"]%> <br>
@ -189,12 +184,15 @@
<!-- right content --> <!-- right content -->
<div class="col-md-6 col-sm-6 col-xs-12"> <div class="col-md-6 col-sm-6 col-xs-12">
<% if t["Mount State"] == "mounted" %> <% if t["Mount State"] == "mounted" %>
<p>Drag multiple files to the box below for multi upload or click to select files.</p> <p class="text-muted font-13 m-b-30"><span class="badge bg-green">Uploader</span> Activated</p>
<form action="/file_upload" method="post" enctype="multipart/form-data" class="dropzone" style="border: 1px solid #e5e5e5; height: 300px; overflow:auto;"> <form action="/file_upload" method="post" enctype="multipart/form-data" class="dropzone" style="border: 1px solid #e5e5e5; height: 300px; overflow:auto;">
</form> </form>
<br/> <br/>
<% elsif t["Status"] == " Started" %>
<% else %> <% else %>
<p class="text-muted font-13 m-b-30"><span class="badge bg-red">Uploader</span> Inactivated</p>
<form style="border: 1px solid #e5e5e5; height: 300px; overflow:auto;">
</form>
<br/>
<% end %> <% end %>
</div> </div>
</div> </div>
@ -205,33 +203,7 @@
</div> </div>
<!-- /page content --> <!-- /page content -->
<!-- volume functions --> <!-- File manager functions -->
<script>
function volume_mount(mnt_point) {
var url = window.location + '';
var vol_name = url.match(/volume_name=([^#]+)/)[1];
$.ajax({
type: 'post',
url: '/volume/mount',
data: {mount_point: mnt_point, volume_name: vol_name},
success: function(data){
console.log("mount success");
window.location.replace(url.split("?")[0]);
}
});
}
</script>
<!-- data table handler -->
<script type="text/javascript">
$(document).ready(function() {
$('#datatable').dataTable();
});
</script>
<!-- file manager functions -->
<script> <script>
function change_upper(directory){ function change_upper(directory){
if(directory == "/") return; if(directory == "/") return;
@ -248,7 +220,7 @@
$("#datatable_body").empty(); $("#datatable_body").empty();
var new_tr = ""; var new_tr = "";
new_tr += "<tr role='row' class='odd'> <td><i class='fa fa-reply'></i>"; new_tr += "<tr role='row' class='odd'> <td><i class='fa fa-reply'></i>";
nrailew_tr += "<a style='cursor: pointer' onclick='change_upper(" + '"' + directory + '"' +")'> ..</a>"; new_tr += "<a style='cursor: pointer' onclick='change_upper(" + '"' + directory + '"' +")'> ..</a>";
new_tr += "</td><td> </td><td> </td><td> </td></tr>"; new_tr += "</td><td> </td><td> </td><td> </td></tr>";
for( var i = 0; i < result.file.length; i++){ for( var i = 0; i < result.file.length; i++){
if(result.file[i].auth[0] != "d") continue; if(result.file[i].auth[0] != "d") continue;
@ -262,12 +234,26 @@
new_tr += "</tr>"; new_tr += "</tr>";
} }
$("#datatable_body").append(new_tr); $("#datatable_body").append(new_tr);
$('#datatable').dataTable();
} }
}) })
} }
</script> </script>
<!-- Mount overlay functions -->
<script>
$("#popup_mount #datatable_body form").submit(function(){
var mnt_point = $(this).find("input").val();
var url = window.location + '';
var vol_name = url.match(/volume_name=([^#]+)/)[1];
$.ajax({
type: 'post',
url: '/volume/mount',
data: {mount_point: mnt_point, volume_name: vol_name},
success: function(result){
}
});
})
</script>
<!-- Create overlay functions -->
<script> <script>
// Volume type changed // Volume type changed
$("#form_volume_create .form-group").eq(1).change(function (){ $("#form_volume_create .form-group").eq(1).change(function (){
@ -276,7 +262,6 @@
case "Distribute": case "Distribute":
case "Stripe": case "Stripe":
case "Replica": case "Replica":
case "Arbiter":
case "Disperse": case "Disperse":
case "Disperse-data": case "Disperse-data":
case "Redundancy": case "Redundancy":
@ -287,7 +272,6 @@
break; break;
} }
}) })
// Number of bricks changed // Number of bricks changed
$("#form_volume_create .form-group").eq(2).change(function (){ $("#form_volume_create .form-group").eq(2).change(function (){
var $num_of_brick = $(this).find("option:selected").val(); var $num_of_brick = $(this).find("option:selected").val();
@ -316,14 +300,12 @@
} }
$body.append(new_body); $body.append(new_body);
}) })
// Volume create
$("#form_volume_create").submit(function(){ $("#form_volume_create").submit(function(){
var volume_name = $(this).find(".form-group:eq(0) input").val(); var volume_name = $(this).find(".form-group:eq(0) input").val();
var volume_type = $(this).find(".form-group:eq(1) option:selected").val(); var volume_type = $(this).find(".form-group:eq(1) option:selected").val();
var num_of_brick = $(this).find(".form-group:eq(2) option:selected").val() * 1; // convert to Number type var num_of_brick = $(this).find(".form-group:eq(2) option:selected").val() * 1; // convert to Number type
var bricks = []; var bricks = [];
// error check
if(volume_name.indexOf(' ') >= 0){ if(volume_name.indexOf(' ') >= 0){
alert("Volume name can't contains white spaces"); alert("Volume name can't contains white spaces");
return; return;
@ -334,11 +316,9 @@
return; return;
} }
<% end %> <% end %>
for(var i = 0; i < num_of_brick; i++){ for(var i = 0; i < num_of_brick; i++){
var server_name = $(this).find(".form-group .row").eq(i).find("option:selected").val(); var server_name = $(this).find(".form-group .row").eq(i).find("option:selected").val();
var brick_name = $(this).find(".form-group .row").eq(i).find("input").val(); var brick_name = $(this).find(".form-group .row").eq(i).find("input").val();
if(brick_name.indexOf(' ') >= 0) { if(brick_name.indexOf(' ') >= 0) {
alert("Brick name can't contain white spaces"); alert("Brick name can't contain white spaces");
return; return;
@ -347,7 +327,6 @@
alert("Brick name can't start with slash"); alert("Brick name can't start with slash");
return; return;
} }
var brick = ""; var brick = "";
if(server_name == "<%=@config['server_name']%>"){ if(server_name == "<%=@config['server_name']%>"){
brick += "<%=@config['host_ip']%>"; brick += "<%=@config['host_ip']%>";
@ -361,17 +340,12 @@
return; return;
} }
} }
console.log("Create volume..");
$.ajax({ $.ajax({
method: "POST", method: "POST",
url: "/volume/create", url: "/volume/create",
data: { volume_name : volume_name, volume_type : volume_type, num_of_brick : num_of_brick, bricks : bricks }, data: { volume_name : volume_name, volume_type : volume_type, num_of_brick : num_of_brick, bricks : bricks },
success : function(result){ success : function(result){
console.log("volume create success");
} }
}) })
}); });
</script> </script>