- create your own user
adduser johndoe # root@vps
# now, relogin onto johndoe
mkdir .ssh
# copy ssh key from your local machine to johndoe's account
| #!/bin/sh | |
| iptables -F | |
| iptables -X | |
| iptables -P INPUT DROP | |
| iptables -P FORWARD DROP | |
| iptables -P OUTPUT ACCEPT | |
| iptables -A INPUT -i lo -j ACCEPT | |
| iptables -A FORWARD -o lo -j ACCEPT | |
| iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED |
| # Thanks to http://makandracards.com/makandra/1431-resque-+-god-+-capistrano for an idea and v2 version. | |
| namespace :god do | |
| def god_is_running | |
| capture(:bundle, "exec god status > /dev/null 2>&1 || echo 'god not running'") != 'god not running' | |
| end | |
| # Must be executed within SSHKit context | |
| def config_file | |
| "#{release_path}/config/god.rb" |
| RAILS_ROOT = File.expand_path('../', File.dirname(__FILE__)) | |
| RAILS_ENV = ENV['RAILS_ENV'] || 'production' | |
| God.watch do |w| | |
| w.name = "websocket_rails" | |
| w.start = "cd #{RAILS_ROOT} && bundle exec rake websocket_rails:start_server" | |
| w.stop = "cd #{RAILS_ROOT} && bundle exec rake websocket_rails:stop_server" | |
| w.pid_file = "#{RAILS_ROOT}/tmp/pids/websocket_rails.pid" |
| // See issue https://github.com/twbs/bootstrap/issues/8810 for more information. | |
| // | |
| // Thanks for the idea of the fix to: | |
| // https://github.com/sixfootsixdesigns/Bootstrap-3-Grid-Columns-Clearing | |
| @import "bootstrap/variables" | |
| // Useful @media mixins (based on dimensions taken from bootstrap-sass) | |
| =media-width-below($max) |
| # Idea from http://krautcomputing.com/blog/2012/10/07/how-to-make-everything-background-processable-through-sidekiq/ | |
| # | |
| # Usage: | |
| # | |
| # class Synchronization | |
| # include Asyncable | |
| # end | |
| # | |
| # Then: | |
| # Synchronization.find(12).perform_async(:synchronize, 3, 2) |
| angular.module 'gulliver' | |
| # This will transform data[Hash] into FormData object. | |
| # Supports nested objects and FileList (file input's value). | |
| # | |
| # Note: This won't work on browsers not supporting FormData and FileList (f.e. IE 8-9). | |
| .service 'httpTransformRequestToFormData', -> | |
| (data) -> | |
| return data unless data |
| var IonicModule = angular.module('ionic'), | |
| extend = angular.extend, | |
| forEach = angular.forEach, | |
| isDefined = angular.isDefined, | |
| isString = angular.isString, | |
| jqLite = angular.element; | |
| /** | |
| * @ngdoc directive | |
| * @name ionVerticalSlideBox |
| app.config ($injector) -> | |
| model = ionic.Platform.device().model or "" | |
| animateNavigation = ionic.Platform.grade == "a" | |
| unless animateNavigation | |
| defaults = | |
| '$ionicNavBarConfig': | |
| transition: 'no-animation' | |
| '$ionicNavViewConfig': | |
| transition: 'no-animation' |
| # ... | |
| namespace :deploy do | |
| desc 'Restart application' | |
| task :restart => ["eye:reload", "eye:restart"] | |
| after :published, :restart | |
| end |