digital_heroes_startkit 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (189) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +37 -0
  4. data/Rakefile +36 -0
  5. data/app/assets/config/digital_heroes_startkit_manifest.js +0 -0
  6. data/app/assets/javascripts/authorization.coffee +79 -0
  7. data/app/assets/javascripts/avatar.coffee +16 -0
  8. data/app/assets/javascripts/datepicker.js +2 -0
  9. data/app/assets/javascripts/digital_heroes_startkit/cable.js +13 -0
  10. data/app/assets/javascripts/digital_heroes_startkit/channels/pills.coffee +23 -0
  11. data/app/assets/javascripts/digital_heroes_startkit/input.coffee +5 -0
  12. data/app/assets/javascripts/digital_heroes_startkit/pills.coffee +2 -0
  13. data/app/assets/javascripts/digital_heroes_startkit/snap.svg-min.js +21 -0
  14. data/app/assets/javascripts/digital_heroes_startkit.js +26 -0
  15. data/app/assets/javascripts/profile.coffee +53 -0
  16. data/app/assets/javascripts/profile_geodata.coffee +68 -0
  17. data/app/assets/javascripts/reg_fields_checkup.coffee +96 -0
  18. data/app/assets/javascripts/registration.coffee +35 -0
  19. data/app/assets/javascripts/resurrection.coffee +20 -0
  20. data/app/channels/application_cable/channel.rb +4 -0
  21. data/app/channels/application_cable/connection.rb +4 -0
  22. data/app/channels/pills_channel.rb +10 -0
  23. data/app/controllers/avatars_controller.rb +11 -0
  24. data/app/controllers/clients_controller.rb +62 -0
  25. data/app/controllers/email_access_cards_controller.rb +28 -0
  26. data/app/controllers/geodata_controller.rb +84 -0
  27. data/app/controllers/nickname_access_cards_controller.rb +30 -0
  28. data/app/controllers/oauth_controller.rb +178 -0
  29. data/app/controllers/openid_controller.rb +124 -0
  30. data/app/controllers/phone_access_cards_controller.rb +28 -0
  31. data/app/controllers/profile_controller.rb +114 -0
  32. data/app/controllers/response_controller.rb +17 -0
  33. data/app/controllers/start_kit_controller.rb +86 -0
  34. data/app/controllers/user_cards_controller.rb +305 -0
  35. data/app/jobs/log_analyzer_job.rb +50 -0
  36. data/app/jobs/password_resurrection_kill_job.rb +9 -0
  37. data/app/mailers/admin_mailer.rb +9 -0
  38. data/app/mailers/client_mailer.rb +3 -0
  39. data/app/mailers/kreator_mailer.rb +9 -0
  40. data/app/mailers/manager_mailer.rb +9 -0
  41. data/app/mailers/prometeus_mailer.rb +16 -0
  42. data/app/mailers/user_cards_mailer.rb +9 -0
  43. data/app/models/admin.rb +3 -0
  44. data/app/models/avatar.rb +23 -0
  45. data/app/models/city.rb +7 -0
  46. data/app/models/client.rb +31 -0
  47. data/app/models/country.rb +7 -0
  48. data/app/models/delayed_job.rb +20 -0
  49. data/app/models/email_access_card.rb +30 -0
  50. data/app/models/kreator.rb +3 -0
  51. data/app/models/log_error.rb +56 -0
  52. data/app/models/log_error_type.rb +3 -0
  53. data/app/models/manager.rb +3 -0
  54. data/app/models/nickname_access_card.rb +18 -0
  55. data/app/models/oauth_access_card.rb +38 -0
  56. data/app/models/phone_access_card.rb +19 -0
  57. data/app/models/prometeus.rb +50 -0
  58. data/app/models/user_card.rb +158 -0
  59. data/app/views/admin_mailer/greetings_email.html.erb +191 -0
  60. data/app/views/client_mailer/greetings_email.html.erb +191 -0
  61. data/app/views/kreator_mailer/greetings_email.html.erb +191 -0
  62. data/app/views/manager_mailer/greetings_email.html.erb +191 -0
  63. data/app/views/oauth/verify.slim +1 -0
  64. data/app/views/profile/_add_avatar.slim +12 -0
  65. data/app/views/profile/_user_profile.slim +95 -0
  66. data/app/views/profile/index.slim +12 -0
  67. data/app/views/user_cards/authorization.slim +72 -0
  68. data/app/views/user_cards/confirmation_but_access_code.slim +7 -0
  69. data/app/views/user_cards/confirmation_complete.slim +7 -0
  70. data/app/views/user_cards/registration.slim +86 -0
  71. data/app/views/user_cards/resurrection.slim +19 -0
  72. data/app/views/user_cards/resurrection_but_access_code.slim +7 -0
  73. data/app/views/user_cards/resurrection_no_access_code.slim +7 -0
  74. data/app/views/user_cards_mailer/email.html.erb +191 -0
  75. data/app/views/user_cards_mailer/resurrection.html.erb +191 -0
  76. data/config/initializers/session_manager.rb +2 -0
  77. data/config/routes.rb +53 -0
  78. data/lib/access_control.rb +3 -0
  79. data/lib/digital_heroes_startkit/engine.rb +25 -0
  80. data/lib/digital_heroes_startkit/version.rb +3 -0
  81. data/lib/digital_heroes_startkit.rb +5 -0
  82. data/lib/generators/digital_heroes_startkit/install_generator.rb +61 -0
  83. data/lib/generators/project/Capfile +36 -0
  84. data/lib/generators/project/Procfile +3 -0
  85. data/lib/generators/project/app/assets/stylesheets/application.scss +16 -0
  86. data/lib/generators/project/app/assets/stylesheets/base/_auth.scss +37 -0
  87. data/lib/generators/project/app/assets/stylesheets/base/_buttons.scss +62 -0
  88. data/lib/generators/project/app/assets/stylesheets/base/_checkbox.scss +71 -0
  89. data/lib/generators/project/app/assets/stylesheets/base/_datepicker.scss +620 -0
  90. data/lib/generators/project/app/assets/stylesheets/base/_form.scss +81 -0
  91. data/lib/generators/project/app/assets/stylesheets/base/_notice.scss +14 -0
  92. data/lib/generators/project/app/assets/stylesheets/base/_pills.scss +39 -0
  93. data/lib/generators/project/app/assets/stylesheets/base/_profile.scss +67 -0
  94. data/lib/generators/project/app/assets/stylesheets/base/_reset.scss +49 -0
  95. data/lib/generators/project/app/assets/stylesheets/base/_social.scss +52 -0
  96. data/lib/generators/project/app/assets/stylesheets/base/_user.scss +0 -0
  97. data/lib/generators/project/app/assets/stylesheets/base/_user_avatar.scss +18 -0
  98. data/lib/generators/project/app/assets/stylesheets/base/styles.scss.txt +35 -0
  99. data/lib/generators/project/app/assets/stylesheets/plugins/sumoselect.scss +296 -0
  100. data/lib/generators/project/app/controllers/application_controller.rb +3 -0
  101. data/lib/generators/project/app/views/layouts/_counts.html.erb +29 -0
  102. data/lib/generators/project/app/views/layouts/_footer.slim +6 -0
  103. data/lib/generators/project/app/views/layouts/_head.slim +7 -0
  104. data/lib/generators/project/app/views/layouts/_header.slim +47 -0
  105. data/lib/generators/project/app/views/layouts/_mobile_menu.slim +11 -0
  106. data/lib/generators/project/app/views/layouts/application.slim +26 -0
  107. data/lib/generators/project/app/views/layouts/mailer.html.erb +13 -0
  108. data/lib/generators/project/app/views/layouts/mailer.text.erb +1 -0
  109. data/lib/generators/project/config/application.access.yml +66 -0
  110. data/lib/generators/project/config/application.db.yml +5 -0
  111. data/lib/generators/project/config/application.google.yml +3 -0
  112. data/lib/generators/project/config/application.oauth.yml +135 -0
  113. data/lib/generators/project/config/application.robokassa.yml +10 -0
  114. data/lib/generators/project/config/application.sendgrid.yml +3 -0
  115. data/lib/generators/project/config/application.telegram.yml +22 -0
  116. data/lib/generators/project/config/application.yml +28 -0
  117. data/lib/generators/project/config/cable.yml +6 -0
  118. data/lib/generators/project/config/capistrano.yml +78 -0
  119. data/lib/generators/project/config/database.yml +52 -0
  120. data/lib/generators/project/config/deploy/application.secrets.yml +4 -0
  121. data/lib/generators/project/config/deploy/domain.crt +92 -0
  122. data/lib/generators/project/config/deploy/domain.key +51 -0
  123. data/lib/generators/project/config/deploy/nginx.conf +50 -0
  124. data/lib/generators/project/config/deploy/production.rb +67 -0
  125. data/lib/generators/project/config/deploy/secrets.yml +32 -0
  126. data/lib/generators/project/config/deploy/secrets.yml.enc +1 -0
  127. data/lib/generators/project/config/deploy/secrets.yml.key +1 -0
  128. data/lib/generators/project/config/deploy/staging.rb +61 -0
  129. data/lib/generators/project/config/deploy/virgin_conf/database.yml +42 -0
  130. data/lib/generators/project/config/deploy/virgin_conf/nginx_site.conf +47 -0
  131. data/lib/generators/project/config/deploy/virgin_conf/nginx_site_ssl.conf +57 -0
  132. data/lib/generators/project/config/deploy/virgin_conf/postfix.cf +685 -0
  133. data/lib/generators/project/config/deploy/virgin_conf/production.rb +67 -0
  134. data/lib/generators/project/config/deploy/virgin_conf/puma.rb +66 -0
  135. data/lib/generators/project/config/deploy/virgin_sh/capistrano.sh +18 -0
  136. data/lib/generators/project/config/deploy/virgin_sh/foreman.sh +19 -0
  137. data/lib/generators/project/config/deploy/virgin_sh/rvm_install.sh +10 -0
  138. data/lib/generators/project/config/deploy.rb +377 -0
  139. data/lib/generators/project/config/environments/development.rb +91 -0
  140. data/lib/generators/project/config/environments/production.rb +142 -0
  141. data/lib/generators/project/config/initializers/session_store.rb +3 -0
  142. data/lib/generators/project/config/locales/ru.yml +444 -0
  143. data/lib/generators/project/db/migrate/10_create_user_cards.rb +19 -0
  144. data/lib/generators/project/db/migrate/12_create_email_access_cards.rb +15 -0
  145. data/lib/generators/project/db/migrate/13_create_nickname_access_cards.rb +15 -0
  146. data/lib/generators/project/db/migrate/14_create_phone_access_cards.rb +16 -0
  147. data/lib/generators/project/db/migrate/15_create_oauth_access_cards.rb +19 -0
  148. data/lib/generators/project/db/migrate/1_create_kreators.rb +9 -0
  149. data/lib/generators/project/db/migrate/21_create_avatars.rb +12 -0
  150. data/lib/generators/project/db/migrate/30_create_countries.rb +12 -0
  151. data/lib/generators/project/db/migrate/32_create_cities.rb +12 -0
  152. data/lib/generators/project/db/migrate/3_create_admins.rb +9 -0
  153. data/lib/generators/project/db/migrate/44_add_sessions_table.rb +12 -0
  154. data/lib/generators/project/db/migrate/4_create_managers.rb +10 -0
  155. data/lib/generators/project/db/migrate/5_create_clients.rb +17 -0
  156. data/lib/generators/project/db/migrate/60_create_log_error_types.rb +9 -0
  157. data/lib/generators/project/db/migrate/61_create_log_errors.rb +12 -0
  158. data/lib/generators/project/db/migrate/78_create_delayed_jobs.rb +22 -0
  159. data/lib/generators/project/db/seeds.rb +27 -0
  160. data/lib/generators/project/geodata/cities.csv +25305 -0
  161. data/lib/generators/project/geodata/countries.csv +250 -0
  162. data/lib/generators/project/public/401.html +75 -0
  163. data/lib/generators/project/public/404.html +67 -0
  164. data/lib/generators/project/public/422.html +67 -0
  165. data/lib/generators/project/public/500.html +66 -0
  166. data/lib/generators/project/public/_receiver.html +10 -0
  167. data/lib/generators/project/public/apple-touch-icon-precomposed.png +0 -0
  168. data/lib/generators/project/public/apple-touch-icon.png +0 -0
  169. data/lib/generators/project/public/favicon.ico +0 -0
  170. data/lib/generators/project/public/robots.txt +1 -0
  171. data/lib/happy_birthday.rb +5 -0
  172. data/lib/link.rb +16 -0
  173. data/lib/oauth/oauth.rb +72 -0
  174. data/lib/oauth/oauth_fb.rb +48 -0
  175. data/lib/oauth/oauth_gg.rb +50 -0
  176. data/lib/oauth/oauth_im.rb +51 -0
  177. data/lib/oauth/oauth_mr.rb +53 -0
  178. data/lib/oauth/oauth_vk.rb +3 -0
  179. data/lib/oauth/oauth_yx.rb +51 -0
  180. data/lib/openid/openid.rb +46 -0
  181. data/lib/openid/openid_st.rb +2 -0
  182. data/lib/phone_cutter.rb +9 -0
  183. data/lib/response.rb +51 -0
  184. data/lib/session_manager.rb +47 -0
  185. data/lib/sms_lib.rb +30 -0
  186. data/lib/social_networks.rb +328 -0
  187. data/lib/tasks/digital_heroes_startkit_tasks.rake +83 -0
  188. data/lib/telegram.rb +33 -0
  189. metadata +497 -0
@@ -0,0 +1,67 @@
1
+ # server-based syntax
2
+ # ======================
3
+ # Defines a single server with a list of roles and multiple properties.
4
+ # You can define all roles on a single server, or split them:
5
+
6
+ # server 'example.com', user: 'deploy', roles: %w{app db web}, my_property: :my_value
7
+ # server 'example.com', user: 'deploy', roles: %w{app web}, other_property: :other_value
8
+ # server 'db.example.com', user: 'deploy', roles: %w{db}
9
+
10
+
11
+
12
+ # role-based syntax
13
+ # ==================
14
+
15
+ # Defines a role with one or multiple servers. The primary server in each
16
+ # group is considered to be the first unless any hosts have the primary
17
+ # property set. Specify the username and a domain or IP for the server.
18
+ # Don't use `:all`, it's a meta role.
19
+
20
+ role :app, %w{root@cap_server}
21
+ role :web, %w{root@cap_server}
22
+ role :db, %w{root@cap_server}
23
+
24
+ # role :app, %w{deploy@example.com}, my_property: :my_value
25
+ # role :web, %w{user1@primary.com user2@additional.com}, other_property: :other_value
26
+ # role :db, %w{deploy@example.com}
27
+
28
+
29
+
30
+ # Configuration
31
+ # =============
32
+ # You can set any configuration variable like in config/deploy.rb
33
+ # These variables are then only loaded and set in this stage.
34
+ # For available Capistrano configuration variables see the documentation page.
35
+ # http://capistranorb.com/documentation/getting-started/configuration/
36
+ # Feel free to add new variables to customise your setup.
37
+
38
+
39
+
40
+ # Custom SSH Options
41
+ # ==================
42
+ # You may pass any option but keep in mind that net/ssh understands a
43
+ # limited set of options, consult the Net::SSH documentation.
44
+ # http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start
45
+ #
46
+ # Global options
47
+ # --------------
48
+ # set :ssh_options, {
49
+ # user: 'root',
50
+ # keys: %w(~/.ssh/id_rsa),
51
+ # forward_agent: true,
52
+ # auth_methods: %w(publickey),
53
+ # passphrase: 'pussy'
54
+ # }
55
+ #
56
+ # The server-based syntax can be used to override options:
57
+ # ------------------------------------
58
+ server 'cap_server',
59
+ user: 'root',
60
+ roles: %w{web app},
61
+ ssh_options: {
62
+ keys: %w(~/.ssh/id_rsa),
63
+ forward_agent: true,
64
+ auth_methods: %w(publickey),
65
+ passphrase: 'cap_passphrase'
66
+ }
67
+
@@ -0,0 +1,66 @@
1
+ shared_dir = 'cap_shared_path'
2
+
3
+ # Puma can serve each request in a thread from an internal thread pool.
4
+ # The `threads` method setting takes two numbers a minimum and maximum.
5
+ # Any libraries that use thread pools should be configured to match
6
+ # the maximum value specified for Puma. Default is set to 5 threads for minimum
7
+ # and maximum, this matches the default thread size of Active Record.
8
+ #
9
+ threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i
10
+ threads threads_count, threads_count
11
+
12
+ # Specifies the `port` that Puma will listen on to receive requests, default is 3000.
13
+ #
14
+ # port ENV.fetch("PORT") { 80 }
15
+
16
+ # Specifies the `environment` that Puma will run in.
17
+ #
18
+ environment ENV.fetch("RAILS_ENV") { "production" }
19
+
20
+ # Specifies the number of `workers` to boot in clustered mode.
21
+ # Workers are forked webserver processes. If using threads and workers together
22
+ # the concurrency of the application would be max `threads` * `workers`.
23
+ # Workers do not work on JRuby or Windows (both of which do not support
24
+ # processes).
25
+ #
26
+ workers ENV.fetch("WEB_CONCURRENCY") { 2 }
27
+
28
+ # Use the `preload_app!` method when specifying a `workers` number.
29
+ # This directive tells Puma to first boot the application and load code
30
+ # before forking the application. This takes advantage of Copy On Write
31
+ # process behavior so workers use less memory. If you use this option
32
+ # you need to make sure to reconnect any threads in the `on_worker_boot`
33
+ # block.
34
+ #
35
+ preload_app!
36
+
37
+ # The code in the `on_worker_boot` will be called if you are using
38
+ # clustered mode by specifying a number of `workers`. After each worker
39
+ # process is booted this block will be run, if you are using `preload_app!`
40
+ # option you will want to use this block to reconnect to any threads
41
+ # or connections that may have been created at application boot, Ruby
42
+ # cannot share connections between processes.
43
+ #
44
+ # on_worker_boot do
45
+ # ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
46
+ # end
47
+
48
+ # Set up socket location
49
+ bind "unix://#{shared_dir}/sockets/puma.sock"
50
+
51
+ # Logging
52
+ stdout_redirect "#{shared_dir}/log/puma.stdout.log", "#{shared_dir}/log/puma.stderr.log", true
53
+
54
+ # Set master PID and state locations
55
+ pidfile "#{shared_dir}/pids/puma.pid"
56
+ state_path "#{shared_dir}/pids/puma.state"
57
+ activate_control_app
58
+
59
+ on_worker_boot do
60
+ require "active_record"
61
+ ActiveRecord::Base.connection.disconnect! rescue ActiveRecord::ConnectionNotEstablished
62
+ ActiveRecord::Base.establish_connection(YAML.load_file("#{shared_dir}/config/database.yml")['production'])
63
+ end
64
+
65
+ # Allow puma to be restarted by `rails restart` command.
66
+ plugin :tmp_restart
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env bash
2
+ domain='cap_server'
3
+ # Вставить Ключ Зажигания
4
+ ssh-copy-id "root@$domain"
5
+ # копирование пакетных файлов
6
+ scp rvm_install.sh "root@$domain":/root
7
+ # Установка RVM - создание среды для возможности действий CAPISTRANO
8
+ ssh "root@$domain" bash rvm_install.sh
9
+ echo "- Товарищ Капитан ! $domain к Деплою Готов !"
10
+ echo '- К Деплою приступить !'
11
+ echo '- Есть !'
12
+ # Инсталляция окружения и Деплой !
13
+ cap production deploy:setup
14
+ cap production deploy
15
+ # Настройка Foreman
16
+ scp foreman.sh "root@$domain":/root
17
+ #ssh "root@$domain" bash foreman.sh
18
+ echo 'для завершения установки зайди на root и запусти foreman.sh'
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env bash
2
+ # Экспорт Procfile
3
+ cd /home/rails/cap_application/current
4
+ foreman export systemd /etc/systemd/system --user=root --app=cap_application
5
+ # Замена пути
6
+ files=(/etc/systemd/system/cap_application-web@.service /etc/systemd/system/cap_application-worker@.service /etc/systemd/system/cap_application-redis@.service)
7
+
8
+ for file in ${files[@]}
9
+ do
10
+ if [ -e ${file} ]
11
+ then
12
+ sed -i "s/releases.*$/current/g" ${file}
13
+ echo ${file}
14
+ fi
15
+ done
16
+
17
+ unset files
18
+
19
+ systemctl enable cap_application.target
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env bash
2
+ # update репозиториев
3
+ apt-get -y update
4
+ apt-get -y install zip
5
+ # установка RVM
6
+ apt install curl
7
+ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
8
+ curl -sSL https://get.rvm.io | bash -s stable
9
+ source /etc/profile.d/rvm.sh
10
+ rvm reinstall ruby-cap_ruby_version
@@ -0,0 +1,377 @@
1
+ # config valid only for current version of Capistrano
2
+ lock '3.8.1'
3
+
4
+ # загрузка конфига в полноценный символьный хэш
5
+ require 'active_support/core_ext/hash'
6
+ CONFIG = YAML.load_file(File.expand_path('../capistrano.yml', __FILE__)).with_indifferent_access
7
+
8
+ set :application, CONFIG[:conf][:vars][:cap_application]
9
+ set :repo_url, "git@bitbucket.org:slowpokesfrommoscow/#{fetch :application}.git"
10
+ # set :repo_url, 'git@example.com:me/my_repo.git'
11
+ # Default branch is :master
12
+ # ask :branch, `git rev-parse --abbrev-ref HEAD`.chomp
13
+
14
+ # Default deploy_to directory is /var/www/my_app_name
15
+ set :deploy_to, "/home/rails/#{fetch :application}"
16
+
17
+ # Default value for :format is :airbrussh.
18
+ # set :format, :airbrussh
19
+
20
+ # You can configure the Airbrussh format using :format_options.
21
+ # These are the defaults.
22
+ set :format_options, command_output: true, log_file: 'log/capistrano.log', color: :auto, truncate: :auto
23
+
24
+ # Default value for :pty is false
25
+ # set :pty, true
26
+ # set :default_shell, '/bin/bash -l'
27
+
28
+ # Default value for :linkedlinked_files is []
29
+ # 'config/sitemap.rb',
30
+ set :linked_files, fetch(:linked_files, []).push('config/secrets.yml.enc', 'config/secrets.yml.key', 'config/database.yml', 'config/secrets.yml', 'config/puma.rb')
31
+ set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'public/system', 'public', 'files', 'documents')
32
+
33
+ # Default value for default_env is {}
34
+ # set :default_env, { path: "/opt/ruby/bin:$PATH" }
35
+
36
+ # Default value for keep_releases is 5
37
+ set :keep_releases, 2
38
+
39
+ # Puma:
40
+ # set :puma_conf, "#{shared_path}/config/puma.rb"
41
+
42
+ before 'rvm:hook', 'prepare:ssh'
43
+
44
+ namespace :install do
45
+ desc 'подготовительные мероприятия'
46
+ task :prepare do
47
+ on roles(:all) do
48
+ CONFIG[:soft][:prepare].each do |command|
49
+ execute command
50
+ end
51
+ end
52
+ end
53
+
54
+ desc 'apt'
55
+ task :apt do
56
+ on roles(:all) do
57
+ CONFIG[:soft][:apt].each do |software|
58
+ execute "apt-get -y install #{software}"
59
+ end
60
+ end
61
+ end
62
+
63
+ desc 'команды'
64
+ task :commands do
65
+ on roles(:all) do
66
+ CONFIG[:soft][:commands].each do |command|
67
+ execute command
68
+ end
69
+ end
70
+ end
71
+
72
+ desc 'гемы'
73
+ task :gems do
74
+ on roles(:all) do
75
+ CONFIG[:soft][:gems].each do |gem|
76
+ execute "/usr/local/rvm/bin/rvm all do gem install --no-rdoc --no-ri #{gem}"
77
+ end
78
+ end
79
+ end
80
+
81
+ end
82
+
83
+ namespace :conf do
84
+
85
+ desc 'перемещение кофн файлов на сервак'
86
+ task :copy do
87
+ on roles(:all) do
88
+ # конфиги
89
+ p 'перемещение кофн файлов на сервак'
90
+ upload! 'config/deploy/puma.rb', "#{shared_path}/config/puma.rb"
91
+ upload! 'config/deploy/database.yml', "#{shared_path}/config/database.yml"
92
+ upload! 'config/secrets.yml', "#{shared_path}/config/secrets.yml"
93
+ upload! 'config/deploy/secrets.yml.key', "#{shared_path}/config/secrets.yml.key"
94
+ upload! 'config/deploy/secrets.yml.enc', "#{shared_path}/config/secrets.yml.enc"
95
+ upload! 'config/deploy/application.secrets.yml', "#{shared_path}/config/application.secrets.yml"
96
+ upload! 'config/deploy/foreman.sh', "#{shared_path}/foreman.sh"
97
+ # upload! 'config/deploy/postfix.cf', "/etc/postfix/main.cf"
98
+ upload! 'config/sitemap.rb', "#{shared_path}/config/sitemap.rb"
99
+
100
+ # конфиги NGINX
101
+ upload! 'config/deploy/nginx.conf', "/etc/nginx/nginx.conf"
102
+ # дефолтный конфиг убирается
103
+ execute :rm, "-f /etc/nginx/sites-enabled/default"
104
+
105
+ if CONFIG[:conf][:with_ssl]
106
+ upload! 'config/deploy/nginx_site_ssl.conf', "/etc/nginx/sites-enabled/#{fetch :application}.conf"
107
+ upload! "config/deploy/#{fetch :application}.crt", "/etc/ssl/#{fetch :application}.crt"
108
+ upload! "config/deploy/#{fetch :application}.key", "/etc/ssl/#{fetch :application}.key"
109
+ else
110
+ upload! 'config/deploy/nginx_site.conf', "/etc/nginx/sites-enabled/#{fetch :application}.conf"
111
+ end
112
+ end
113
+ end
114
+
115
+ desc 'добавление SSL к уже работающему проекту'
116
+ task :ssl_update do
117
+
118
+ execute :rake, 'cap:conf_update'
119
+
120
+
121
+ on roles(:all) do
122
+ upload! 'config/deploy/nginx_site_ssl.conf', "/etc/nginx/sites-enabled/#{fetch :application}.conf"
123
+ upload! "config/deploy/#{fetch :application}.crt", "/etc/ssl/#{fetch :application}.crt"
124
+ upload! "config/deploy/#{fetch :application}.key", "/etc/ssl/#{fetch :application}.key"
125
+ end
126
+
127
+ invoke 'conf:reload'
128
+
129
+ end
130
+
131
+ desc 'перезапуск нужных сервисов и чек конфига'
132
+ task :reload do
133
+ on roles(:all) do
134
+ execute :systemctl, :restart, :nginx
135
+ execute :systemctl, :restart, :postfix
136
+ end
137
+ end
138
+
139
+ desc 'тесты конфигов, тестовое письмо'
140
+ task :test do
141
+ on roles(:all) do
142
+ execute :nginx, '-t'
143
+ # execute "echo 'Привет! Как дела ?' | mail -s 'Тест от #{CONFIG[:conf][:vars][:cap_domain]}' shadows.of.unevenness@gmail.com"
144
+ end
145
+ end
146
+ end
147
+
148
+ namespace :sitemap do
149
+ desc 'unpack xml'
150
+ task :unpack_xml do
151
+ on roles(:all) do
152
+ within release_path do
153
+ execute "gunzip -c #{shared_path}/public/sitemap.xml.gz > #{shared_path}/public/sitemap.xml"
154
+ end
155
+ end
156
+ end
157
+
158
+ desc 'upload xml'
159
+ task :upload_xml do
160
+ on roles(:all) do
161
+ upload! 'public/sitemap.xml', "#{shared_path}/public"
162
+ end
163
+ end
164
+
165
+ desc 'заливка sitemap.rb'
166
+ task :upload_conf do
167
+ on roles(:all) do
168
+ upload! 'config/sitemap.rb', "#{shared_path}/config"
169
+ end
170
+ end
171
+
172
+ desc 'скачивание файла sitemap.xml почитать'
173
+ task :download_xml do
174
+ on roles(:all) do
175
+ download! "#{shared_path}/public/sitemap.xml", '/Users/nikolajmartynov/Documents/Разработка/Rails/science/public/sitemap.xml'
176
+ end
177
+ end
178
+
179
+ before 'sitemap:create', 'sitemap:upload_conf'
180
+ before 'sitemap:refresh', 'sitemap:upload_conf'
181
+ after 'sitemap:create', 'sitemap:unpack_xml'
182
+ after 'sitemap:create', 'sitemap:download_xml'
183
+ after 'sitemap:refresh', 'sitemap:unpack_xml'
184
+
185
+ end
186
+
187
+ namespace :robots_etc do
188
+ desc 'заливка robots.txt и всяких 404.html'
189
+ task :install do
190
+ on roles(:all) do
191
+ upload! 'public/robots.txt', "#{shared_path}/public"
192
+ upload! 'public/401.html', "#{shared_path}/public"
193
+ upload! 'public/422.html', "#{shared_path}/public"
194
+ upload! 'public/404.html', "#{shared_path}/public"
195
+ upload! 'public/500.html', "#{shared_path}/public"
196
+ upload! 'public/map', "#{shared_path}/public", recursive: true
197
+ upload! 'public/favicon.ico', "#{shared_path}/public"
198
+ end
199
+ end
200
+ end
201
+
202
+ namespace :prepare do
203
+ desc 'проверка там ли ключик ?'
204
+ task :ssh do
205
+ on roles(:all) do
206
+ begin
207
+ execute "ssh -o PasswordAuthentication=no root@#{CONFIG[:conf][:vars][:cap_server]}"
208
+ rescue
209
+ p 'ТВОЙ КЛЮЧ ЕЩЁ НЕ НА СЕРВАКЕ, ВВЕДИ РУТОВЫЙ ПАРОЛЬ!'
210
+ # копирование ключа на сервак
211
+ `ssh-copy-id root@#{CONFIG[:conf][:vars][:cap_server]}`
212
+ end
213
+
214
+ # плавный запуск ssh-agent'а для комфортного деплоя, и чтобы не заёбывал каждый раз, предусмотрена проверка .)
215
+ if /no identities/ =~ `ssh-add -l`
216
+ `eval 'ssh-agent'`
217
+ `ssh-add`
218
+ end
219
+
220
+ end
221
+ end
222
+ end
223
+
224
+ namespace :log do
225
+ desc 'скачивание логов'
226
+
227
+ task :dwnld do
228
+ on roles(:all) do
229
+ download! "#{shared_path}/log/production.log", "/Users/nikolajmartynov/Documents/Разработка/Rails/#{CONFIG[:conf][:vars][:cap_application]}/log/production.log"
230
+ end
231
+ end
232
+
233
+ end
234
+
235
+ namespace :feed do
236
+ desc 'заливка тестового xml'
237
+ task :upload do
238
+ on roles(:all) do
239
+ upload! 'public/feed.xml', "#{shared_path}/public"
240
+ end
241
+ end
242
+ end
243
+
244
+ namespace :db do
245
+ desc 'db fuck!'
246
+ task :fuck do
247
+ on roles(:all) do
248
+ within release_path do
249
+ with rails_env: fetch(:rails_env) do
250
+ execute :rake, 'db:fuck'
251
+ end
252
+ end
253
+ end
254
+ end
255
+ end
256
+
257
+ namespace :database do
258
+
259
+ task :create do
260
+ on roles(:all) do
261
+ within release_path do
262
+ with rails_env: fetch(:rails_env) do
263
+ execute :rake, 'db:create'
264
+ end
265
+ end
266
+ end
267
+ end
268
+
269
+ end
270
+
271
+ namespace :dump do
272
+ desc 'загрузить дамп'
273
+ task :upload do
274
+ on roles(:all) do
275
+ upload! 'dump.sql', "#{release_path}"
276
+ end
277
+ end
278
+ end
279
+
280
+ namespace :deploy do
281
+
282
+ task :seed do
283
+ on roles(:all) do
284
+ within release_path do
285
+ with rails_env: fetch(:rails_env) do
286
+ execute :rake, 'db:seed'
287
+ end
288
+ end
289
+ end
290
+ end
291
+
292
+ task :mk_dirs do
293
+ on roles(:all) do
294
+
295
+ execute "mkdir -p #{shared_path} #{shared_path}/config #{shared_path}/pids #{shared_path}/sockets #{shared_path}/log"
296
+
297
+ end
298
+
299
+ end
300
+
301
+ task :setup do
302
+ on roles(:all) do
303
+
304
+ # invoke 'deploy:mk_dirs'
305
+
306
+ end
307
+
308
+ end
309
+
310
+ task :prepare do
311
+
312
+ invoke 'deploy:mk_dirs'
313
+ execute :rake, 'cap:conf_update'
314
+ invoke 'conf:copy'
315
+ invoke 'conf:reload'
316
+
317
+ end
318
+
319
+ before 'deploy:assets:precompile', 'database:create'
320
+
321
+ after 'deploy:setup', 'install:prepare'
322
+ after 'deploy:setup', 'install:apt'
323
+ after 'deploy:setup', 'install:commands'
324
+ after 'deploy:setup', 'install:gems'
325
+ after 'deploy:setup', 'deploy:prepare'
326
+ after 'deploy:setup', 'conf:test'
327
+
328
+ after :deploy, 'robots_etc:install'
329
+ after :deploy, 'deploy:seed'
330
+ after :deploy, 'app:reload'
331
+ # after :deploy, 'sitemap:refresh'
332
+
333
+ end
334
+
335
+ namespace :app do
336
+ desc 'Start server'
337
+ task :start do
338
+ on roles(:all) do
339
+ execute "systemctl start #{fetch :application}.target"
340
+ end
341
+ end
342
+
343
+ desc 'Stop server'
344
+ task :stop do
345
+ on roles(:all) do
346
+ execute "systemctl stop #{fetch :application}.target"
347
+ end
348
+ end
349
+
350
+
351
+ desc 'Server status'
352
+ task :status do
353
+ on roles(:all) do
354
+ execute "systemctl status #{fetch :application}.target"
355
+ execute 'systemctl status nginx'
356
+ end
357
+ end
358
+
359
+ desc 'Server reload'
360
+ task :reload do
361
+ on roles(:all) do
362
+ execute 'systemctl daemon-reload'
363
+ invoke 'app:stop'
364
+ invoke 'app:start'
365
+ end
366
+ end
367
+ end
368
+
369
+ def err path
370
+ p '===S=====T========P==============='
371
+ p '=====h=i====H=a=p===E============='
372
+ p '======================N=S=!======='
373
+ p "#{path} NOT FOUND"
374
+ p '=================================='
375
+ p '=================================='
376
+ p '=================================='
377
+ end
@@ -0,0 +1,91 @@
1
+ Rails.application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb.
3
+
4
+
5
+ # не требуется железной связи!
6
+ Rails.application.config.active_record.belongs_to_required_by_default = false
7
+
8
+ config.time_zone = 'Moscow'
9
+ config.active_record.default_timezone = :local
10
+ config.action_mailer.default_url_options = { :host => CONFIG[:domain] }
11
+
12
+ config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s]
13
+ config.i18n.default_locale = :ru
14
+ config.encoding = 'utf-8'
15
+
16
+ config.active_job.queue_adapter = :delayed_job
17
+
18
+ config.autoload_paths += %W(#{config.root}/lib)
19
+
20
+ config.action_view.embed_authenticity_token_in_remote_forms = true
21
+
22
+ config.after_initialize do
23
+ Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'dj.log'))
24
+
25
+ begin
26
+ # запуск jobs
27
+ if ActiveRecord::Migrator.get_all_versions.any?
28
+ Delayed::Backend::ActiveRecord::Job.where(queue: :log_analyzer).destroy_all
29
+
30
+ LogAnalyzerJob.set(wait_until: DateTime.now).perform_later
31
+ end
32
+ # уничтожение сессий
33
+ ActiveRecord::SessionStore::Session.delete_all
34
+ rescue Exception => error
35
+ p error.message
36
+ end
37
+
38
+ end
39
+
40
+
41
+ # In the development environment your application's code is reloaded on
42
+ # every request. This slows down response time but is perfect for development
43
+ # since you don't have to restart the web server when you make code changes.
44
+ config.cache_classes = false
45
+
46
+ # Do not eager load code on boot.
47
+ config.eager_load = false
48
+
49
+ # Show full error reports.
50
+ config.consider_all_requests_local = true
51
+
52
+ # Enable/disable caching. By default caching is disabled.
53
+ if Rails.root.join('tmp/caching-dev.txt').exist?
54
+ config.action_controller.perform_caching = true
55
+
56
+ config.cache_store = :memory_store
57
+ config.public_file_server.headers = {
58
+ 'Cache-Control' => "public, max-age=#{2.days.seconds.to_i}"
59
+ }
60
+ else
61
+ config.action_controller.perform_caching = false
62
+
63
+ config.cache_store = :null_store
64
+ end
65
+
66
+ # Don't care if the mailer can't send.
67
+ config.action_mailer.raise_delivery_errors = false
68
+
69
+ config.action_mailer.perform_caching = false
70
+
71
+ # Print deprecation notices to the Rails logger.
72
+ config.active_support.deprecation = :log
73
+
74
+ # Raise an error on page load if there are pending migrations.
75
+ config.active_record.migration_error = :page_load
76
+
77
+ # Debug mode disables concatenation and preprocessing of assets.
78
+ # This option may cause significant delays in view rendering with a large
79
+ # number of complex assets.
80
+ config.assets.debug = true
81
+
82
+ # Suppress logger output for asset requests.
83
+ config.assets.quiet = true
84
+
85
+ # Raises error for missing translations
86
+ # config.action_view.raise_on_missing_translations = true
87
+
88
+ # Use an evented file watcher to asynchronously detect changes in source code,
89
+ # routes, locales, etc. This feature depends on the listen gem.
90
+ config.file_watcher = ActiveSupport::EventedFileUpdateChecker
91
+ end