flash_kick 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.travis.yml +4 -0
  4. data/CODE_OF_CONDUCT.md +49 -0
  5. data/Gemfile +5 -0
  6. data/LICENSE.txt +14 -0
  7. data/README.md +114 -0
  8. data/Rakefile +10 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/flash_kick.gemspec +33 -0
  12. data/img/Flash_Kick.gif +0 -0
  13. data/lib/flash_kick/version.rb +3 -0
  14. data/lib/flash_kick.rb +14 -0
  15. data/lib/generators/flash_kick/base.rb +29 -0
  16. data/lib/generators/flash_kick/deployment_generator.rb +121 -0
  17. data/lib/generators/flash_kick/init_generator.rb +42 -0
  18. data/lib/generators/flash_kick/lib/question_helper.rb +50 -0
  19. data/lib/generators/flash_kick/lib/variable_store.rb +23 -0
  20. data/lib/generators/flash_kick/templates/_Vagrantfile +20 -0
  21. data/lib/generators/flash_kick/templates/_database.yml +18 -0
  22. data/lib/generators/flash_kick/templates/_deploy.rb +59 -0
  23. data/lib/generators/flash_kick/templates/_puma.rb +23 -0
  24. data/lib/generators/flash_kick/templates/_puma.sh +78 -0
  25. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/complete/tasks/main.yml +17 -0
  26. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/complete/templates/database.yml +9 -0
  27. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/complete/templates/secrets.yml +2 -0
  28. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/essentials/tasks/main.yml +43 -0
  29. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/essentials/templates/vimrc +470 -0
  30. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/nginx/tasks/main.yml +15 -0
  31. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/nginx/templates/platform.conf +24 -0
  32. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/nodejs/tasks/main.yml +6 -0
  33. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/postgresql/handlers/main.yml +3 -0
  34. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/postgresql/tasks/main.yml +39 -0
  35. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/postgresql/templates/pg_hba.conf +91 -0
  36. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/ruby/files/gemrc +5 -0
  37. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/ruby/tasks/gems.yml +6 -0
  38. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/ruby/tasks/main.yml +4 -0
  39. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/ruby/tasks/rbenv.yml +32 -0
  40. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/ruby/tasks/ruby.yml +15 -0
  41. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/security/tasks/fail2ban.yml +4 -0
  42. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/security/tasks/firewall.yml +8 -0
  43. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/security/tasks/main.yml +4 -0
  44. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/security/tasks/ssh_settings.yml +25 -0
  45. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/user/tasks/main.yml +6 -0
  46. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/variables/tasks/application.yml +21 -0
  47. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/variables/tasks/main.yml +3 -0
  48. data/lib/generators/flash_kick/templates/ansible/playbooks/roles/variables/tasks/session.yml +23 -0
  49. data/lib/generators/flash_kick/templates/ansible/playbooks/tasks/vagrant_settings.yml +3 -0
  50. data/lib/generators/flash_kick/templates/ansible/provision.sh +1 -0
  51. data/lib/generators/flash_kick/templates/ansible_templates/_hosts +3 -0
  52. data/lib/generators/flash_kick/templates/ansible_templates/playbooks/_production.yml +21 -0
  53. data/lib/generators/flash_kick/templates/ansible_templates/playbooks/_vagrant.yml +17 -0
  54. data/lib/generators/flash_kick/templates/ansible_templates/playbooks/group_vars/_all.yml +4 -0
  55. data/lib/generators/flash_kick/templates/env_templates/_development_env.yml +1 -0
  56. data/lib/generators/flash_kick/templates/env_templates/_production_env.yml +13 -0
  57. data/lib/generators/flash_kick/templates/env_templates/_test_env.yml +1 -0
  58. data/lib/generators/flash_kick/vagrant_generator.rb +56 -0
  59. metadata +145 -0
@@ -0,0 +1,23 @@
1
+ workers Integer(ENV['PUMA_WORKERS'] || 3)
2
+ threads Integer(ENV['MIN_THREADS'] || 1), Integer(ENV['MAX_THREADS'] || 16)
3
+
4
+ preload_app!
5
+
6
+ rackup DefaultRackup
7
+ port ENV['PORT'] || 3000
8
+ environment ENV['RACK_ENV'] || 'production'
9
+
10
+ daemonize true
11
+ pidfile "/var/www/<%= FlashKick::VariableStore.variables['app_name'] %>/shared/tmp/pids/puma.pid"
12
+ stdout_redirect "/var/www/<%= FlashKick::VariableStore.variables['app_name'] %>/shared/tmp/log/stdout", "/var/www/<%= FlashKick::VariableStore.variables['app_name'] %>/shared/tmp/log/stderr"
13
+
14
+ bind "unix:///var/www/<%= FlashKick::VariableStore.variables['app_name'] %>/shared/tmp/sockets/puma.sock"
15
+
16
+ on_worker_boot do
17
+ # worker specific setup
18
+ ActiveSupport.on_load(:active_record) do
19
+ config = ActiveRecord::Base.configurations[Rails.env] || Rails.application.config.database_configuration[Rails.env]
20
+ config['pool'] = ENV['MAX_THREADS'] || 16
21
+ ActiveRecord::Base.establish_connection(config)
22
+ end
23
+ end
@@ -0,0 +1,78 @@
1
+ #! /bin/sh
2
+
3
+ BUNDLE_BIN=/usr/local/rbenv/shims/bundle
4
+ PUMA_CONFIG_FILE=$APP_ROOT/current/config/puma.rb
5
+ PUMA_PID_FILE=$APP_ROOT/shared/tmp/pids/puma.pid
6
+ PUMA_SOCKET=$APP_ROOT/shared/tmp/sockets/puma.sock
7
+
8
+ # check if puma process is running
9
+ puma_is_running() {
10
+ if [ -S $PUMA_SOCKET ] ; then
11
+ if [ -e $PUMA_PID_FILE ] ; then
12
+ if cat $PUMA_PID_FILE | xargs pgrep -P > /dev/null ; then
13
+ return 0
14
+ else
15
+ echo "No puma process found"
16
+ fi
17
+ else
18
+ echo "No puma pid file found"
19
+ fi
20
+ else
21
+ echo "No puma socket found"
22
+ fi
23
+
24
+ return 1
25
+ }
26
+
27
+ puma_start() {
28
+ rm -f $PUMA_SOCKET
29
+ if [ -e $PUMA_CONFIG_FILE ] ; then
30
+ $BUNDLE_BIN exec puma -C $PUMA_CONFIG_FILE
31
+ else
32
+ $BUNDLE_BIN exec puma
33
+ fi
34
+ }
35
+
36
+ puma_stop() {
37
+ cat $PUMA_PID_FILE | xargs kill -31
38
+ rm -f $PUMA_PID_FILE
39
+ rm -f $PUMA_SOCKET
40
+ }
41
+
42
+ case "$1" in
43
+ start)
44
+ echo "Starting puma..."
45
+ puma_start
46
+ echo "done"
47
+ ;;
48
+
49
+ stop)
50
+ echo "Stopping puma..."
51
+ puma_stop
52
+ echo "done"
53
+ ;;
54
+
55
+ restart)
56
+ if puma_is_running ; then
57
+ echo "Hot-restarting puma..."
58
+ puma_stop
59
+ puma_start
60
+
61
+ echo "Doublechecking the process restart..."
62
+ sleep 5
63
+ if puma_is_running ; then
64
+ echo "done"
65
+ exit 0
66
+ else
67
+ echo "Puma restart failed :/"
68
+ fi
69
+ fi
70
+
71
+ echo "Trying cold reboot"
72
+ bin/puma.sh start
73
+ ;;
74
+
75
+ *)
76
+ echo "Usage: script/puma.sh {start|stop|restart}" >&2
77
+ ;;
78
+ esac
@@ -0,0 +1,17 @@
1
+ ---
2
+ - name: create config directory
3
+ sudo: true
4
+ file: path={{app_root}}/shared/config owner={{server_user}} group={{server_user}} recurse=yes state=directory
5
+
6
+ - name: copy database.yml
7
+ template: src=database.yml dest={{app_root}}/shared/config/database.yml owner={{server_user}} group={{server_user}}
8
+
9
+ - name: copy secrets.yml
10
+ template: src=secrets.yml dest={{app_root}}/shared/config/secrets.yml owner={{server_user}} group={{server_user}}
11
+
12
+ - name: update app root directory permissions
13
+ sudo: true
14
+ file: path={{app_root}} owner={{server_user}} group={{server_user}} recurse=yes state=directory
15
+
16
+ - name: add symlink to app root
17
+ file: src={{app_root}} dest=/home/{{server_user}}/app owner={{server_user}} group={{server_user}} state=link
@@ -0,0 +1,9 @@
1
+ {{rails_env}}:
2
+ adapter: postgresql
3
+ host: localhost
4
+ encoding: unicode
5
+ pool: 5
6
+ template: template0
7
+ database: <%= ENV['DATABASE_NAME'] %>
8
+ username: <%= ENV['DATABASE_USER'] %>
9
+ password: <%= ENV['DATABASE_PASSWORD'] %>
@@ -0,0 +1,2 @@
1
+ {{rails_env}}:
2
+ secret_key_base: <%= ENV['SECRET_KEY_BASE'] %>
@@ -0,0 +1,43 @@
1
+ ---
2
+ - name: add keyscan to allow basic access to github
3
+ shell: ssh-keyscan github.com >> /etc/ssh/ssh_known_hosts
4
+
5
+ - name: install basic packages
6
+ apt: pkg={{item}} state=present update_cache=yes
7
+ with_items:
8
+ - build-essential
9
+ - git-core
10
+ - curl
11
+ - wget
12
+ - cmake
13
+ - python-dev
14
+
15
+ - name: add apt-get repository for latest vim
16
+ action: apt_repository repo=ppa:fcwu-tw/ppa
17
+
18
+ - name: install vim
19
+ apt: name=vim state=latest update_cache=yes
20
+
21
+ - name: copy .vimrc
22
+ template: src=vimrc dest=/home/{{server_user}}/.vimrc owner={{server_user}} group={{server_user}}
23
+
24
+ - name: check if NeoBundle exists
25
+ shell: test -d /home/{{server_user}}/.vim/bundle/.neobundle && echo true
26
+ register: neobundle_installed
27
+ ignore_errors: yes
28
+
29
+ - name: download NeoBundle plugin for vim
30
+ git: repo=git://github.com/Shougo/neobundle.vim dest=/home/{{server_user}}/.vim/bundle/neobundle.vim
31
+ when: neobundle_installed|failed
32
+
33
+ - name: check if YouCompleteMe exists
34
+ shell: test -d /home/{{server_user}}/.vim/bundle/YouCompleteMe && echo true
35
+ register: ycm_installed
36
+ ignore_errors: yes
37
+
38
+ - name: download YouCompleteMe plugin for vim
39
+ git: repo=git://github.com/Valloric/YouCompleteMe dest=/home/{{server_user}}/.vim/bundle/YouCompleteMe
40
+ when: ycm_installed|failed
41
+
42
+ - name: change .vim permissions
43
+ file: path=/home/{{server_user}}/.vim owner={{server_user}} group={{server_user}} recurse=yes state=directory
@@ -0,0 +1,470 @@
1
+ " ===================================================
2
+ " INITIALIZE
3
+ " ===================================================
4
+ if has('vim_starting')
5
+ set nocompatible
6
+ set runtimepath+=$HOME/.vim/bundle/neobundle.vim/
7
+ endif
8
+ call neobundle#begin(expand('$HOME/.vim/bundle'))
9
+
10
+ NeoBundleFetch 'Shougo/neobundle.vim'
11
+
12
+ " File management, search, navigation
13
+ NeoBundle 'mileszs/ack.vim'
14
+ NeoBundle 'kien/ctrlp.vim'
15
+ NeoBundle 'sjl/gundo.vim'
16
+ NeoBundle 'scrooloose/nerdtree'
17
+ NeoBundle 'vim-scripts/restore_view.vim'
18
+ NeoBundle 'jeetsukumaran/vim-buffergator'
19
+ NeoBundle 'vim-scripts/YankRing.vim'
20
+ NeoBundle 'vim-scripts/zoomwintab.vim'
21
+
22
+ " Vim UI/UX
23
+ NeoBundle 'bling/vim-airline'
24
+ NeoBundle 'reedes/vim-colors-pencil'
25
+ NeoBundle 'gcmt/taboo.vim'
26
+
27
+ " Syntax highlighting
28
+ NeoBundle 'jtratner/vim-flavored-markdown.git'
29
+ NeoBundle 'elzr/vim-json'
30
+ NeoBundle 'kchmck/vim-coffee-script'
31
+ NeoBundle 'pangloss/vim-javascript'
32
+
33
+ " Snippets & autocomplete
34
+ NeoBundle 'sirver/ultisnips'
35
+ NeoBundle 'Valloric/YouCompleteMe'
36
+ NeoBundle 'honza/vim-snippets'
37
+
38
+ " Formatters, selectors, accelerators
39
+ NeoBundle 'mattn/emmet-vim'
40
+ NeoBundle 'vim-scripts/matchit.zip'
41
+ NeoBundle 'godlygeek/tabular'
42
+ NeoBundle 'tpope/vim-commentary'
43
+ NeoBundle 'tpope/vim-endwise'
44
+ NeoBundle 'terryma/vim-multiple-cursors'
45
+ NeoBundle 'tpope/vim-repeat'
46
+ NeoBundle 'tpope/vim-surround'
47
+
48
+ " Ruby/Rails
49
+ NeoBundle 'vim-ruby/vim-ruby'
50
+ NeoBundle 'tpope/vim-rails'
51
+ NeoBundle 'henrik/vim-ruby-runner'
52
+ NeoBundle 'nelstrom/vim-textobj-rubyblock'
53
+ NeoBundle 'skalnik/vim-vroom'
54
+
55
+ " Git
56
+ NeoBundle 'tpope/vim-fugitive'
57
+ NeoBundle 'mhinz/vim-signify'
58
+
59
+ " Dependencies & utilities
60
+ NeoBundle 'MarcWeber/vim-addon-mw-utils'
61
+ NeoBundle 'kana/vim-textobj-user'
62
+ NeoBundle 'tomtom/tlib_vim'
63
+
64
+ call neobundle#end()
65
+
66
+ filetype plugin indent on
67
+
68
+ NeoBundleCheck
69
+
70
+ " ===================================================
71
+ " VISUALS
72
+ " ===================================================
73
+ syntax enable
74
+
75
+ " Colorscheme
76
+ set t_Co=256
77
+ set background=dark
78
+ colorscheme pencil
79
+ " Fix for pencil comments
80
+ hi Comment cterm=NONE ctermbg=00 ctermfg=08
81
+ " hi ColorColumn ctermbg=27
82
+
83
+ " Tab styles
84
+ hi TabLineFill ctermfg=08 ctermbg=08
85
+ hi TabLine ctermfg=13 ctermbg=08
86
+ hi TabLineSel ctermfg=02 ctermbg=00
87
+
88
+ " Interactive cursor
89
+ let &t_SI = "\<esc>]50;CursorShape=1\x7"
90
+ let &t_EI = "\<esc>]50;CursorShape=0\x7"
91
+
92
+ " For MacVim
93
+ if has("gui_running")
94
+ colorscheme pencil
95
+ set guifont=Monaco:h13
96
+ set guioptions-=r
97
+ set guioptions-=T
98
+ set guioptions-=L
99
+ set fuoptions=maxvert,maxhorz
100
+ set columns=1000
101
+ au GUIEnter * set fullscreen
102
+ endif
103
+
104
+ " ===================================================
105
+ " REMAPS
106
+ " ===================================================
107
+ let mapleader=","
108
+
109
+ " Movement
110
+ nnoremap j gj
111
+ nnoremap k gk
112
+ nnoremap <c-j> }
113
+ nnoremap <c-k> {
114
+ nnoremap <s-j> }
115
+ nnoremap <s-k> {
116
+ nnoremap <c-h> ^
117
+ nnoremap <c-l> $
118
+ vnoremap <c-h> ^
119
+ vnoremap <c-l> $
120
+
121
+ " Windows
122
+ nnoremap wl <c-w>l
123
+ nnoremap wh <c-w>h
124
+ nnoremap wj <c-w>j
125
+ nnoremap wk <c-w>k
126
+ nnoremap w= <c-w>=
127
+ nnoremap wL <c-w>L
128
+ nnoremap wH <c-w>H
129
+ nnoremap wJ <c-w>J
130
+ nnoremap wK <c-w>K
131
+ nnoremap wf <c-w>x
132
+ nnoremap wo :ZoomWinTabToggle<cr>
133
+
134
+ " Tabs
135
+ nnoremap t <esc>:tabnew<cr>
136
+ nnoremap T <esc><c-w>T
137
+ nnoremap { <esc>gT
138
+ nnoremap } <esc>gt
139
+
140
+ " File navigation, search, replace
141
+ nnoremap <leader>n :NERDTreeToggle<cr>
142
+ nnoremap <leader>f :NERDTreeFind<cr>
143
+ nnoremap <leader>s :Ack<space>
144
+ nnoremap <leader><space> :noh<cr>
145
+ nnoremap <leader>* *:%s//
146
+
147
+ " Keep search matches in the middle of the window
148
+ nnoremap n nzzzv
149
+ nnoremap N Nzzzv
150
+
151
+ " Keep indent selected
152
+ vnoremap <s-l> >gv
153
+ vnoremap <s-h> <gv
154
+ vnoremap > >gv
155
+ vnoremap < <gv
156
+
157
+ " Make F1 useful
158
+ nmap <F1> <esc>
159
+ imap <F1> <esc>
160
+
161
+ " Convential select all
162
+ nnoremap <leader>a ggVG
163
+
164
+ " Change pwd to current file
165
+ nnoremap <leader>cd :lcd<space>%:p:h<cr>:pwd<cr>
166
+
167
+ " Open in pwd
168
+ cnoremap e<space> e <c-r>=expand('%:p:h') . '/'<cr>
169
+
170
+ " Copy & paste to clipboard
171
+ vnoremap <leader>y "*y
172
+ nnoremap <leader>p "*p
173
+
174
+ " Drag block up/down
175
+ vnoremap <s-j> :m'>+<cr>gv
176
+ vnoremap <s-k> :m-2<cr>gv
177
+
178
+ " Toggle line wrapping
179
+ nnoremap <leader>w :set wrap!<cr>
180
+ nnoremap <leader>i :set list!<cr>
181
+
182
+ " Toggle relative numbers in visual line mode
183
+ nnoremap <silent> v v:<c-u>set nonu rnu<cr>gv
184
+ nnoremap <silent> V V0:<c-u>set nonu rnu<cr>gv
185
+ nnoremap <silent> <c-v> <c-v>:<c-u>set nonu rnu<cr>gv
186
+ vnoremap <esc> <esc>:set nornu nu<cr>
187
+ autocmd CursorMoved * if mode() !~# "[vV\<c-v>]" | set nornu nu | endif
188
+
189
+ " Use sane regexes
190
+ nnoremap / /\v
191
+ vnoremap / /\v
192
+
193
+ " Tags
194
+ nnoremap <c-]> <c-]>mzzvzz15<c-e>`z:Pulse<cr>
195
+ nnoremap <c-\> <c-w>v<c-w>L<c-]>mzzMzvzz15<c-e>`z:Pulse<cr>
196
+ nnoremap <leader>\ :tab split<CR>:exec("tag ".expand("<cword>"))<cr><c-e>`z:Pulse<cr>
197
+ nnoremap <silent> <leader>tt :!ctags -R . <cr>
198
+
199
+ " Sudo to write
200
+ cnoremap w!! w !sudo tee % >/dev/null
201
+
202
+ " Modify command line cursor movement
203
+ cnoremap <c-a> <home>
204
+ cnoremap <c-e> <end>
205
+
206
+ " Gundo
207
+ nnoremap <leader>G :GundoToggle<cr>
208
+
209
+ " Tabularize
210
+ vnoremap <leader>T :Tabularize /
211
+
212
+ " YankRing
213
+ nnoremap <leader>Y :YRShow<cr>
214
+
215
+ " ===================================================
216
+ " Settings
217
+ " ===================================================
218
+ " Searching
219
+ set incsearch
220
+ set ignorecase
221
+ set smartcase
222
+ set showmatch
223
+ set hlsearch
224
+ set gdefault
225
+ set wildmenu
226
+ set wildmode=list:longest,full
227
+ set wildignore+=*/.tmp/*,*.so,*.swp,*.zip,*.git
228
+ set shellpipe=>
229
+
230
+ " Tabbing and indents
231
+ set autoindent
232
+ set smartindent
233
+ set expandtab
234
+ set shiftwidth=2
235
+ set scrolloff=3
236
+ set softtabstop=2
237
+ set tabstop=8
238
+ set shiftround
239
+
240
+ " Formatting, layout, misc tweeks
241
+ set fileencoding=utf-8
242
+ set encoding=utf-8
243
+ set backspace=indent,eol,start
244
+ set autoread
245
+ set autowrite
246
+ set number
247
+ set ruler
248
+ set cursorline
249
+ set cursorcolumn
250
+ " set colorcolumn=80
251
+ set visualbell
252
+ set showcmd
253
+ set laststatus=2
254
+ set showmode!
255
+ set wrap
256
+ set linebreak
257
+ let &showbreak = '↪ '
258
+ set listchars=tab:▸\ ,trail:·,eol:¬
259
+ " set splitright
260
+
261
+ " Makes things faster?
262
+ set notimeout
263
+ set ttimeout
264
+ set ttimeoutlen=10
265
+ set lazyredraw
266
+
267
+ " Better completion
268
+ set complete=.,w,b,u,t
269
+ set completeopt=longest,menuone,preview
270
+
271
+ " Backups, swapfiles, views
272
+ set backup
273
+ set noswapfile
274
+ set history=1000
275
+ set undofile
276
+ set undoreload=10000
277
+ set viewoptions=cursor,folds
278
+
279
+ set undodir=~/.vim/tmp/undo//
280
+ set backupdir=~/.vim/backup//
281
+ set directory=~/.vim/tmp/swap//
282
+ set viewdir=~/.vim/tmp/view//
283
+ set viminfo+=n$HOME/.vim/tmp/.viminfo
284
+ set tags=./tmp/tags,./tags,tags
285
+
286
+ " Make those folders automatically if they don't already exist.
287
+ if !isdirectory(expand(&undodir))
288
+ call mkdir(expand(&undodir), "p")
289
+ endif
290
+ if !isdirectory(expand(&backupdir))
291
+ call mkdir(expand(&backupdir), "p")
292
+ endif
293
+ if !isdirectory(expand(&directory))
294
+ call mkdir(expand(&directory), "p")
295
+ endif
296
+ if !isdirectory(expand(&viewdir))
297
+ call mkdir(expand(&viewdir), "p")
298
+ endif
299
+
300
+ " Don't try to highlight lines longer than 800 characters.
301
+ set synmaxcol=800
302
+
303
+ " ===================================================
304
+ " PLUGINS
305
+ " ===================================================
306
+ " NERDTree
307
+ let NERDTreeShowHidden=1
308
+ let NERDTreeQuitOnOpen=1
309
+ let NERDTreeBookmarksFile=expand("$HOME/.vim/tmp/NERDTreeBookmarks")
310
+
311
+ " Ctrlp
312
+ let g:ctrlp_match_window='order:ttb,max:30'
313
+ let g:ctrlp_clear_cache_on_exit=1
314
+ let g:ctrlp_cache_dir='$HOME/.vim/tmp/cache/ctrlp'
315
+ let g:ctrlp_arg_map=1
316
+ let g:ctrlp_max_files=0
317
+ let g:ctrlp_max_depth=40
318
+ let g:ctrlp_custom_ignore = '\v[\/](\.git|\.hg|\.svn)$'
319
+
320
+ " Ack
321
+ let g:ackhighlight=1
322
+
323
+ " Airline
324
+ let g:airline_left_sep=''
325
+ let g:airline_right_sep=''
326
+ let g:airline#extensions#whitespace#enabled=0
327
+ let g:airline_theme='pencil'
328
+
329
+ " Buffergator
330
+ let g:buffergator_viewport_split_policy='R'
331
+ let g:buffergator_split_size=50
332
+
333
+ " Taboo
334
+ let g:taboo_tab_format=' %f '
335
+
336
+ " YankRing
337
+ let g:yankring_history_dir='$HOME/.vim/tmp'
338
+ let g:yankring_clipboard_monitor=0
339
+ " YR - Stop polluting my global map space
340
+ let g:yankring_n_keys=''
341
+ let g:yankring_o_keys=''
342
+ let g:yankring_zap_keys=''
343
+ let g:yankring_ignore_operator=''
344
+ let g:yankring_v_key=''
345
+ let g:yankring_del_v_key=''
346
+ let g:yankring_paste_n_bkey=''
347
+ let g:yankring_paste_n_akey=''
348
+ let g:yankring_paste_v_key=''
349
+ let g:yankring_replace_n_pkey=''
350
+ let g:yankring_replace_n_nkey=''
351
+
352
+ " UltiSnips
353
+ let g:UltiSnipsExpandTrigger='<c-j>'
354
+ let g:UltiSnipsEditSplit='vertical'
355
+
356
+ " Emmet
357
+ " Usage: <Ctrl>e,
358
+ let g:user_emmet_leader_key='<c-e>'
359
+ let g:user_emmet_prevkey='<c-e>p'
360
+
361
+ " RubyRunner
362
+ let g:RubyRunner_key = '<Leader>e'
363
+ let g:RubyRunner_keep_focus_key = '<Leader>E'
364
+ let g:RubyRunner_open_below = 1
365
+ let g:RubyRunner_window_size = 10
366
+
367
+ " Vim-Javascript
368
+ " let g:javascript_enable_domhtmlcss = 1
369
+ " let g:used_javascript_libs = 'jquery,angularjs,angularui,jasmin,coffeescript'
370
+ " let g:syntastic_html_tidy_ignore_errors=[" proprietary attribute \"ng-"]
371
+ let g:html_indent_inctags = "html,body,head,tbody"
372
+
373
+ " Vroom
374
+ let g:vroom_clear_screen = 0
375
+ let g:vroom_use_binstubs = 1
376
+ let g:vroom_use_bundle_exec = 0
377
+
378
+ " ===================================================
379
+ " CUSTOM FUNCTIONS
380
+ " ===================================================
381
+ " Git
382
+ autocmd Filetype gitcommit setlocal spell textwidth=72
383
+ autocmd Filetype gitcommit setlocal colorcolumn=80
384
+
385
+ " Use The Silver Searcher https://github.com/ggreer/the_silver_searcher
386
+ if executable('ag')
387
+ let g:ackprg='ag --nogroup --column'
388
+
389
+ " Use Ag over Grep
390
+ set grepprg=ag\ --nogroup\ --nocolor
391
+
392
+ " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore
393
+ let g:ctrlp_user_command='ag %s --hidden -l --nocolor -g ""'
394
+ endif
395
+
396
+ " Hide cursor crosshairs when not in focus
397
+ augroup cline
398
+ au!
399
+ au WinLeave,InsertEnter * set nocursorline
400
+ au WinLeave,InsertEnter * set nocursorcolumn
401
+ au WinEnter,InsertLeave * set cursorline
402
+ au WinEnter,InsertLeave * set cursorcolumn
403
+ augroup END
404
+
405
+ " Sets Quickfix window height
406
+ au FileType qf call AdjustWindowHeight(3, 30)
407
+ function! AdjustWindowHeight(minheight, maxheight)
408
+ exe max([min([line("$"), a:maxheight]), a:minheight]) . "wincmd _"
409
+ endfunction
410
+
411
+ " Clear register
412
+ function! <SID>ClearRegisters()
413
+ let regs='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/-="*+'
414
+ let i=0
415
+ while (i<strlen(regs))
416
+ exec 'let @'.regs[i].'=""'
417
+ let i=i+1
418
+ endwhile
419
+ endfunction
420
+ command! -nargs=0 ClearRegisters call <SID>ClearRegisters()
421
+
422
+ " Clear undo history
423
+ function! <SID>ForgetUndo()
424
+ let old_undolevels = &undolevels
425
+ set undolevels=-1
426
+ exe "normal a \<BS>\<esc>"
427
+ let &undolevels = old_undolevels
428
+ unlet old_undolevels
429
+ endfunction
430
+ command! -nargs=0 ClearUndo call <SID>ForgetUndo()
431
+
432
+ " Make JavaScript brackets close properly
433
+ augroup ft_javascript
434
+ au!
435
+ au Filetype javascript inoremap <buffer> {<cr> {}<left><cr><tab>.<cr><esc>kA<bs>
436
+ augroup END
437
+
438
+ " Pulse Line - used to highlight matches when navigating ctags
439
+ function! s:Pulse()
440
+ let current_window = winnr()
441
+ windo set nocursorline
442
+ execute current_window . 'wincmd w'
443
+ setlocal cursorline
444
+
445
+ redir => old_hi
446
+ silent execute 'hi CursorLine'
447
+ redir END
448
+ let old_hi = split(old_hi, '\n')[0]
449
+ let old_hi = substitute(old_hi, 'xxx', '', '')
450
+
451
+ let steps = 9
452
+ let width = 1
453
+ let start = width
454
+ let end = steps * width
455
+ let color = 233
456
+
457
+ for i in range(start, end, width)
458
+ execute "hi CursorLine ctermbg=" . (color + i)
459
+ redraw
460
+ sleep 6m
461
+ endfor
462
+ for i in range(end, start, -1 * width)
463
+ execute "hi CursorLine ctermbg=" . (color + i)
464
+ redraw
465
+ sleep 6m
466
+ endfor
467
+
468
+ execute 'hi ' . old_hi
469
+ endfunction
470
+ command! -nargs=0 Pulse call s:Pulse()
@@ -0,0 +1,15 @@
1
+ ---
2
+ - name: add apt-get repository for latest nginx
3
+ action: apt_repository repo=ppa:nginx/stable
4
+
5
+ - name: install nginx
6
+ apt: pkg=nginx state=present update_cache=true
7
+
8
+ - name: delete default vhost
9
+ action: file path=/etc/nginx/sites-enabled/default state=absent
10
+
11
+ - name: copy nginx conf
12
+ template: src=platform.conf dest=/etc/nginx/sites-enabled/platform.conf
13
+
14
+ - name: restart nginx
15
+ action: service name=nginx pattern=/etc/init.d/nginx state=restarted enabled=yes
@@ -0,0 +1,24 @@
1
+ upstream {{app_name}} {
2
+ server {{server_domain}}:3000;
3
+ server unix:///var/www/{{app_name}}/shared/tmp/sockets/puma.sock;
4
+ }
5
+ server {
6
+ listen 80;
7
+ server_name {{server_domain}};
8
+ root /var/www/{{app_name}}/current/public;
9
+
10
+ location / {
11
+ proxy_set_header Host $host;
12
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
13
+ proxy_pass http://{{app_name}};
14
+ }
15
+
16
+ location ~* ^/assets/ {
17
+ expires 1y;
18
+ add_header Cache-Control public;
19
+
20
+ add_header Last-Modified "";
21
+ add_header ETag "";
22
+ break;
23
+ }
24
+ }
@@ -0,0 +1,6 @@
1
+ ---
2
+ - name: add apt-get repository for latest node
3
+ action: apt_repository repo=ppa:chris-lea/node.js
4
+
5
+ - name: install node.js
6
+ apt: pkg=nodejs state=present update_cache=true
@@ -0,0 +1,3 @@
1
+ ---
2
+ - name: restart postgresql
3
+ service: name=postgresql state=restarted