Add 'gem thin': WebBrick is deprecated
This commit is contained in:
parent
e6774a071f
commit
b97c484ff8
2
Gemfile
2
Gemfile
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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'
|
||||||
|
@ -3,9 +3,7 @@
|
|||||||
<div class="popup">
|
<div class="popup">
|
||||||
<h2> Choose mount point </h2>
|
<h2> Choose mount point </h2>
|
||||||
<a class="close" href="#">×</a>
|
<a class="close" href="#">×</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>
|
||||||
|
Loading…
Reference in New Issue
Block a user