digital_heroes_startkit 0.1.1

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 (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