chr 0.3.5 → 0.4.9

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 (184) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +2 -0
  3. data/.gitignore +6 -1
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +18 -0
  6. data/README.md +4 -0
  7. data/Rakefile +17 -2
  8. data/app/assets/javascripts/chr.coffee +13 -26
  9. data/app/assets/javascripts/chr/{core/chr.coffee → chr.coffee} +4 -1
  10. data/app/assets/javascripts/chr/{core/chr_router.coffee → chr_router.coffee} +0 -0
  11. data/app/assets/javascripts/chr/{core/item.coffee → item.coffee} +2 -1
  12. data/app/assets/javascripts/chr/{core/list.coffee → list.coffee} +1 -1
  13. data/app/assets/javascripts/chr/{core/list_config.coffee → list_config.coffee} +0 -0
  14. data/app/assets/javascripts/chr/{core/list_pagination.coffee → list_pagination.coffee} +15 -4
  15. data/app/assets/javascripts/chr/{core/list_reorder.coffee → list_reorder.coffee} +0 -0
  16. data/app/assets/javascripts/chr/{core/list_search.coffee → list_search.coffee} +1 -1
  17. data/app/assets/javascripts/chr/{core/module.coffee → module.coffee} +0 -0
  18. data/app/assets/javascripts/chr/{core/utils.coffee → utils.coffee} +0 -0
  19. data/app/assets/javascripts/chr/{core/view.coffee → view.coffee} +21 -9
  20. data/app/assets/javascripts/chr/{core/view_local-storage.coffee → view_local-storage.coffee} +0 -0
  21. data/app/assets/javascripts/{chr/store/array-store.coffee → stores/array.coffee} +0 -0
  22. data/app/assets/javascripts/{chr/store/object-store.coffee → stores/object.coffee} +0 -0
  23. data/app/assets/javascripts/{chr/store/rails-array-store.coffee → stores/rails-array.coffee} +0 -0
  24. data/app/assets/javascripts/{chr/store → stores}/rails-form-object-parser.coffee +4 -1
  25. data/app/assets/javascripts/{chr/store/rails-object-store.coffee → stores/rails-object.coffee} +0 -0
  26. data/app/assets/javascripts/{chr/store/rest-array-store.coffee → stores/rest-array.coffee} +5 -2
  27. data/app/assets/javascripts/{chr/store/rest-object-store.coffee → stores/rest-object.coffee} +0 -0
  28. data/app/assets/stylesheets/{_chr.scss → chr.scss} +2 -7
  29. data/app/assets/stylesheets/chr/{_icons.scss → icons.scss} +0 -0
  30. data/app/assets/stylesheets/chr/{_main.scss → main.scss} +10 -3
  31. data/app/assets/stylesheets/chr/{_mixins.scss → mixins.scss} +0 -77
  32. data/app/assets/stylesheets/chr/{_settings.scss → settings.scss} +1 -1
  33. data/bin/chr +13 -0
  34. data/bin/rake +16 -0
  35. data/bin/setup +13 -0
  36. data/chr.gemspec +41 -21
  37. data/docs/tests.md +64 -0
  38. data/lib/chr.rb +10 -2
  39. data/lib/chr/app_builder.rb +385 -0
  40. data/lib/chr/generators/app_generator.rb +213 -0
  41. data/lib/chr/version.rb +3 -1
  42. data/lib/generators/chr/controller_generator.rb +18 -0
  43. data/templates/Gemfile.erb +38 -0
  44. data/templates/Procfile +1 -0
  45. data/templates/README.md.erb +45 -0
  46. data/templates/_analytics.html.erb +9 -0
  47. data/templates/_flashes.html.erb +7 -0
  48. data/templates/_javascript.html.erb +12 -0
  49. data/templates/application.coffee +2 -0
  50. data/templates/application.scss +1 -0
  51. data/templates/application.yml +6 -0
  52. data/templates/application_gitignore +14 -0
  53. data/templates/application_layout.html.erb.erb +29 -0
  54. data/templates/asset_sync.rb +28 -0
  55. data/templates/bin_setup.erb +36 -0
  56. data/templates/body_class_helper.rb +19 -0
  57. data/templates/bundler_audit.rake +12 -0
  58. data/templates/carrierwave.rb +23 -0
  59. data/templates/character_admin.coffee.erb +28 -0
  60. data/templates/character_admin.scss +3 -0
  61. data/templates/character_admin_index.html.erb +2 -0
  62. data/templates/character_admin_layout.html.erb +21 -0
  63. data/templates/character_base_controller.rb +16 -0
  64. data/templates/development_seeds.rb +12 -0
  65. data/templates/devise_overrides_passwords_controller.rb +10 -0
  66. data/templates/devise_overrides_passwords_edit.html.erb +30 -0
  67. data/templates/devise_overrides_passwords_new.html.erb +21 -0
  68. data/templates/devise_overrides_sessions_controller.rb +12 -0
  69. data/templates/devise_overrides_sessions_new.html.erb +31 -0
  70. data/templates/errors.rb +34 -0
  71. data/templates/json_encoding.rb +1 -0
  72. data/templates/newrelic.yml.erb +34 -0
  73. data/templates/puma.rb +18 -0
  74. data/templates/routes.rb +90 -0
  75. data/templates/sample.env +6 -0
  76. data/templates/secrets.yml +14 -0
  77. data/templates/smtp.rb +9 -0
  78. data/templates/staging.rb +5 -0
  79. data/test/factories/article_factory.rb +19 -0
  80. data/test/files/test.jpg +0 -0
  81. data/test/integration/article_fullsize_test.rb +33 -0
  82. data/test/integration/article_test.rb +33 -0
  83. data/test/integration/magazine_article_test.rb +33 -0
  84. data/test/integration/restricted_article_test.rb +33 -0
  85. data/test/integration/sport_article_test.rb +34 -0
  86. data/test/rails_app/Rakefile +6 -0
  87. data/test/rails_app/app/assets/javascripts/admin.coffee +137 -0
  88. data/test/rails_app/app/assets/javascripts/application.js +1 -0
  89. data/test/rails_app/app/assets/stylesheets/admin.scss +1 -0
  90. data/test/rails_app/app/assets/stylesheets/application.css +1 -0
  91. data/test/rails_app/app/controllers/admin/articles_controller.rb +7 -0
  92. data/test/rails_app/app/controllers/admin/base_controller.rb +8 -0
  93. data/test/rails_app/app/controllers/application_controller.rb +5 -0
  94. data/test/rails_app/app/helpers/application_helper.rb +2 -0
  95. data/test/rails_app/app/models/article.rb +46 -0
  96. data/test/rails_app/app/uploaders/article_image_uploader.rb +16 -0
  97. data/test/rails_app/app/views/admin/index.html.erb +4 -0
  98. data/test/rails_app/app/views/layouts/admin.html.erb +17 -0
  99. data/test/rails_app/app/views/layouts/application.html.erb +14 -0
  100. data/test/rails_app/bin/bundle +3 -0
  101. data/test/rails_app/bin/rails +8 -0
  102. data/test/rails_app/bin/rake +8 -0
  103. data/test/rails_app/bin/setup +29 -0
  104. data/test/rails_app/bin/spring +15 -0
  105. data/test/rails_app/config.ru +4 -0
  106. data/test/rails_app/config/application.rb +36 -0
  107. data/test/rails_app/config/boot.rb +3 -0
  108. data/test/rails_app/config/environment.rb +5 -0
  109. data/test/rails_app/config/environments/development.rb +38 -0
  110. data/test/rails_app/config/environments/production.rb +76 -0
  111. data/test/rails_app/config/environments/test.rb +46 -0
  112. data/test/rails_app/config/initializers/assets.rb +12 -0
  113. data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
  114. data/test/rails_app/config/initializers/carrierwave.rb +5 -0
  115. data/test/rails_app/config/initializers/cookies_serializer.rb +3 -0
  116. data/test/rails_app/config/initializers/filter_parameter_logging.rb +4 -0
  117. data/test/rails_app/config/initializers/inflections.rb +16 -0
  118. data/test/rails_app/config/initializers/mime_types.rb +4 -0
  119. data/test/rails_app/config/initializers/session_store.rb +3 -0
  120. data/test/rails_app/config/initializers/wrap_parameters.rb +9 -0
  121. data/test/rails_app/config/locales/en.yml +23 -0
  122. data/test/rails_app/config/mongoid.yml +9 -0
  123. data/test/rails_app/config/routes.rb +8 -0
  124. data/test/rails_app/config/secrets.yml +22 -0
  125. data/test/rails_app/db/seeds.rb +7 -0
  126. data/test/rails_app/public/404.html +67 -0
  127. data/test/rails_app/public/422.html +67 -0
  128. data/test/rails_app/public/500.html +66 -0
  129. data/{app/assets/javascripts/form/input-date.coffee → test/rails_app/public/favicon.ico} +0 -0
  130. data/test/rails_app/public/robots.txt +5 -0
  131. data/test/support/character_front_end.rb +196 -0
  132. data/test/support/chr/item.rb +32 -0
  133. data/test/support/chr/list.rb +31 -0
  134. data/test/support/chr/list_pagination.rb +163 -0
  135. data/test/support/chr/list_reorder.rb +46 -0
  136. data/test/support/chr/list_search.rb +41 -0
  137. data/test/support/chr/view.rb +112 -0
  138. data/test/support/stores/array.rb +20 -0
  139. data/test/support/stores/rest-array.rb +34 -0
  140. data/test/test_helper.rb +68 -0
  141. metadata +373 -80
  142. data/Gruntfile.coffee +0 -101
  143. data/app/assets/javascripts/form/expandable-group.coffee +0 -30
  144. data/app/assets/javascripts/form/form.coffee +0 -221
  145. data/app/assets/javascripts/form/input-checkbox.coffee +0 -83
  146. data/app/assets/javascripts/form/input-color.coffee +0 -55
  147. data/app/assets/javascripts/form/input-file.coffee +0 -144
  148. data/app/assets/javascripts/form/input-form.coffee +0 -171
  149. data/app/assets/javascripts/form/input-form_reorder.coffee +0 -67
  150. data/app/assets/javascripts/form/input-hidden.coffee +0 -57
  151. data/app/assets/javascripts/form/input-list.coffee +0 -154
  152. data/app/assets/javascripts/form/input-list_reorder.coffee +0 -39
  153. data/app/assets/javascripts/form/input-list_typeahead.coffee +0 -55
  154. data/app/assets/javascripts/form/input-password.coffee +0 -32
  155. data/app/assets/javascripts/form/input-select.coffee +0 -84
  156. data/app/assets/javascripts/form/input-select2.coffee +0 -33
  157. data/app/assets/javascripts/form/input-string.coffee +0 -160
  158. data/app/assets/javascripts/form/input-text.coffee +0 -43
  159. data/app/assets/javascripts/input-html.coffee +0 -81
  160. data/app/assets/javascripts/input-markdown.coffee +0 -93
  161. data/app/assets/javascripts/input-redactor.coffee +0 -1
  162. data/app/assets/javascripts/redactor/input-redactor.coffee +0 -53
  163. data/app/assets/javascripts/redactor/input-redactor_character.coffee +0 -83
  164. data/app/assets/javascripts/redactor/input-redactor_images.coffee +0 -166
  165. data/app/assets/javascripts/vendor/ace.js +0 -18280
  166. data/app/assets/javascripts/vendor/jquery.scrollparent.js +0 -14
  167. data/app/assets/javascripts/vendor/jquery.textarea_autosize.js +0 -55
  168. data/app/assets/javascripts/vendor/jquery.typeahead.js +0 -1782
  169. data/app/assets/javascripts/vendor/marked.js +0 -1272
  170. data/app/assets/javascripts/vendor/mode-html.js +0 -2436
  171. data/app/assets/javascripts/vendor/mode-markdown.js +0 -2820
  172. data/app/assets/javascripts/vendor/redactor.fixedtoolbar.js +0 -107
  173. data/app/assets/javascripts/vendor/select2.js +0 -5274
  174. data/app/assets/stylesheets/_input-redactor.scss +0 -35
  175. data/app/assets/stylesheets/form/_expandable-group.scss +0 -16
  176. data/app/assets/stylesheets/form/_input-select2.scss +0 -94
  177. data/app/assets/stylesheets/form/_main.scss +0 -180
  178. data/app/assets/stylesheets/vendor/select2.css +0 -258
  179. data/bower.json +0 -38
  180. data/dist/chr.js +0 -5949
  181. data/dist/input-ace.js +0 -24946
  182. data/dist/input-redactor.js +0 -1
  183. data/lib/mongoid/character.rb +0 -30
  184. data/package.json +0 -10
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env sh
2
+
3
+ # Set up Rails app. Run this script immediately after cloning the codebase.
4
+ # https://github.com/thoughtbot/guides/tree/master/protocol
5
+
6
+ # Exit if any subcommand fails
7
+ set -e
8
+
9
+ # Set up Ruby dependencies via Bundler
10
+ gem install bundler --conservative
11
+ bundle check || bundle install
12
+
13
+ # Set up configurable environment variables
14
+ if [ ! -f .env ]; then
15
+ cp .sample.env .env
16
+ fi
17
+
18
+ # Set up database and add any development seed data
19
+ bundle exec rake db:setup dev:prime
20
+
21
+ # Add binstubs to PATH via export PATH=".git/safe/../../bin:$PATH" in ~/.zshenv
22
+ mkdir -p .git/safe
23
+
24
+ # Pick a port for Foreman
25
+ if ! grep --quiet --no-messages --fixed-strings 'port' .foreman; then
26
+ printf 'port: <%= config[:port_number] %>\n' >> .foreman
27
+ fi
28
+
29
+ if ! command -v foreman > /dev/null; then
30
+ printf 'Foreman is not installed.\n'
31
+ printf 'See https://github.com/ddollar/foreman for install instructions.\n'
32
+ fi
33
+
34
+ # Only if this isn't CI
35
+ # if [ -z "$CI" ]; then
36
+ # fi
@@ -0,0 +1,19 @@
1
+ # Body class helper striped our from:
2
+ # https://github.com/thoughtbot/flutie/blob/master/lib/flutie/body_class_helper.rb
3
+ module BodyClassHelper
4
+ def body_class(options = {})
5
+ extra_body_classes_symbol = options[:extra_body_classes_symbol] || :extra_body_classes
6
+ qualified_controller_name = controller.controller_path.gsub('/','-')
7
+ basic_body_class = "#{qualified_controller_name} #{qualified_controller_name}-#{controller.action_name}"
8
+
9
+ if content_for?(extra_body_classes_symbol)
10
+ [basic_body_class, content_for(extra_body_classes_symbol)].join(' ')
11
+ else
12
+ basic_body_class
13
+ end
14
+ end
15
+ end
16
+
17
+
18
+
19
+
@@ -0,0 +1,12 @@
1
+ if Rails.env.development? || Rails.env.test?
2
+ require "bundler/audit/cli"
3
+
4
+ namespace :bundler do
5
+ desc "Updates the ruby-advisory-db and runs audit"
6
+ task :audit do
7
+ %w(update check).each do |command|
8
+ Bundler::Audit::CLI.start [command]
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,23 @@
1
+ CarrierWave.configure do |config|
2
+
3
+ # DEVELOPMENT
4
+ config.storage = :file
5
+ config.cache_dir = "#{Rails.root}/public/uploads/tmp"
6
+
7
+ if Rails.env.test?
8
+ # TEST
9
+ config.cache_dir = "#{Rails.root}/public/uploads/tmp/test"
10
+ config.enable_processing = false
11
+
12
+ elsif Rails.env.production? || Rails.env.staging?
13
+ # PRODUCTION & STAGING
14
+ config.storage = :fog
15
+ config.fog_directory = ENV.fetch('FOG_DIRECTORY')
16
+ config.fog_credentials = {
17
+ provider: 'AWS',
18
+ aws_access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
19
+ aws_secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
20
+ }
21
+ end
22
+
23
+ end
@@ -0,0 +1,28 @@
1
+ #= require jquery
2
+ #= require jquery_ujs
3
+
4
+ #= require chr
5
+ #= require loft
6
+ #= require ants
7
+
8
+ @settingsConfig = ->
9
+ items:
10
+ admins: Ants.adminsConfig()
11
+ redirects: Ants.redirectsConfig()
12
+
13
+ @getChrConfig = (data) ->
14
+ modules = {}
15
+ all_modules =
16
+ loft: new Loft('Files', 'asset', '/admin/assets')
17
+ settings: settingsConfig()
18
+
19
+ return { modules: all_modules }
20
+
21
+ $ ->
22
+ $.get '/admin/bootstrap.json', (response) ->
23
+ chrConfig = getChrConfig(response)
24
+
25
+ chr.start('<%= app_name %>', chrConfig)
26
+
27
+ # append signout button to the end of sidebar menu
28
+ $('a[data-method=delete]').appendTo(".sidebar .menu").show()
@@ -0,0 +1,3 @@
1
+ @import "chr";
2
+ @import "loft";
3
+ @import "ants";
@@ -0,0 +1,2 @@
1
+ <%= javascript_include_tag :admin %>
2
+ <%= link_to 'Sign Out', destroy_admin_session_path, method: :delete, style: 'display:none;', class: 'menu-logout' %>
@@ -0,0 +1,21 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
6
+
7
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
8
+ <meta name="apple-mobile-web-app-capable" content="yes">
9
+ <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
10
+
11
+ <%= display_meta_tags site: 'hello-world', title: 'CMS' %>
12
+
13
+ <%= csrf_meta_tags %>
14
+ <%= stylesheet_link_tag :admin, media: 'all' %>
15
+ </head>
16
+
17
+ <body class='<%= body_class %>'>
18
+ <%= yield %>
19
+ </body>
20
+
21
+ </html>
@@ -0,0 +1,16 @@
1
+ class Admin::BaseController < ActionController::Base
2
+ protect_from_forgery
3
+
4
+ before_action :authenticate_admin!
5
+
6
+
7
+ def index
8
+ render '/admin/index', layout: 'admin'
9
+ end
10
+
11
+
12
+ def bootstrap_data
13
+ render json: {}
14
+ end
15
+
16
+ end
@@ -0,0 +1,12 @@
1
+ if Rails.env.development? || Rails.env.test?
2
+ require "factory_girl"
3
+
4
+ namespace :dev do
5
+ desc "Seed data for development environment"
6
+ task prime: "db:setup" do
7
+ include FactoryGirl::Syntax::Methods
8
+
9
+ Admin.create!(name: 'Admin', email: 'user@example.com', password: 'password')
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ class Admin::DeviseOverrides::PasswordsController < Devise::PasswordsController
2
+ layout 'admin'
3
+
4
+ protected
5
+
6
+ def after_resetting_password_path_for(resource)
7
+ admin_path
8
+ end
9
+
10
+ end
@@ -0,0 +1,30 @@
1
+ <% set_meta_tags title: 'CMS — Change Password' %>
2
+
3
+ <p class="notice"><%= notice %></p>
4
+ <p class="alert"><%= alert %></p>
5
+
6
+ <h2>Change your password</h2>
7
+
8
+ <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
9
+ <%= devise_error_messages! %>
10
+ <%= f.hidden_field :reset_password_token %>
11
+
12
+ <div class="field">
13
+ <%= f.label :password, "New password" %><br />
14
+ <% if @minimum_password_length %>
15
+ <em>(<%= @minimum_password_length %> characters minimum)</em><br />
16
+ <% end %>
17
+ <%= f.password_field :password, autofocus: true, autocomplete: "off" %>
18
+ </div>
19
+
20
+ <div class="field">
21
+ <%= f.label :password_confirmation, "Confirm new password" %><br />
22
+ <%= f.password_field :password_confirmation, autocomplete: "off" %>
23
+ </div>
24
+
25
+ <div class="actions">
26
+ <%= f.submit "Change my password" %>
27
+ </div>
28
+ <% end %>
29
+
30
+ <%= link_to 'Sign In', new_session_path(resource_name) %>
@@ -0,0 +1,21 @@
1
+ <% set_meta_tags title: 'CMS — Reset Password' %>
2
+
3
+ <p class="notice"><%= notice %></p>
4
+ <p class="alert"><%= alert %></p>
5
+
6
+ <h2>Forgot your password?</h2>
7
+
8
+ <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>
9
+ <%= devise_error_messages! %>
10
+
11
+ <div class="field">
12
+ <%= f.label :email %><br />
13
+ <%= f.email_field :email, autofocus: true %>
14
+ </div>
15
+
16
+ <div class="actions">
17
+ <%= f.submit "Send me reset password instructions" %>
18
+ </div>
19
+ <% end %>
20
+
21
+ <%= link_to 'Sign In', new_session_path(resource_name) %>
@@ -0,0 +1,12 @@
1
+ class Admin::DeviseOverrides::SessionsController < Devise::SessionsController
2
+ layout 'admin'
3
+
4
+ def after_sign_in_path_for(resource)
5
+ admin_path
6
+ end
7
+
8
+ def after_sign_out_path_for(resource)
9
+ new_admin_session_path
10
+ end
11
+
12
+ end
@@ -0,0 +1,31 @@
1
+ <% set_meta_tags title: 'CMS — Login' %>
2
+
3
+ <p class="notice"><%= notice %></p>
4
+ <p class="alert"><%= alert %></p>
5
+
6
+ <h2>Log in</h2>
7
+
8
+ <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
9
+ <div class="field">
10
+ <%= f.label :email %><br />
11
+ <%= f.email_field :email, autofocus: true %>
12
+ </div>
13
+
14
+ <div class="field">
15
+ <%= f.label :password %><br />
16
+ <%= f.password_field :password, autocomplete: "off" %>
17
+ </div>
18
+
19
+ <% if devise_mapping.rememberable? -%>
20
+ <div class="field">
21
+ <%= f.check_box :remember_me %>
22
+ <%= f.label :remember_me %>
23
+ </div>
24
+ <% end -%>
25
+
26
+ <div class="actions">
27
+ <%= f.submit "Log in" %>
28
+ </div>
29
+ <% end %>
30
+
31
+ <%= link_to 'Forgot your password?', new_password_path(resource_name) %>
@@ -0,0 +1,34 @@
1
+ require "net/http"
2
+ require "net/smtp"
3
+
4
+ # Example:
5
+ # begin
6
+ # some http call
7
+ # rescue *HTTP_ERRORS => error
8
+ # notify_hoptoad error
9
+ # end
10
+
11
+ HTTP_ERRORS = [
12
+ EOFError,
13
+ Errno::ECONNRESET,
14
+ Errno::EINVAL,
15
+ Net::HTTPBadResponse,
16
+ Net::HTTPHeaderSyntaxError,
17
+ Net::ProtocolError,
18
+ Timeout::Error
19
+ ]
20
+
21
+ SMTP_SERVER_ERRORS = [
22
+ IOError,
23
+ Net::SMTPAuthenticationError,
24
+ Net::SMTPServerBusy,
25
+ Net::SMTPUnknownError,
26
+ TimeoutError
27
+ ]
28
+
29
+ SMTP_CLIENT_ERRORS = [
30
+ Net::SMTPFatalError,
31
+ Net::SMTPSyntaxError
32
+ ]
33
+
34
+ SMTP_ERRORS = SMTP_SERVER_ERRORS + SMTP_CLIENT_ERRORS
@@ -0,0 +1 @@
1
+ ActiveSupport::JSON::Encoding.time_precision = 0
@@ -0,0 +1,34 @@
1
+ common: &default_settings
2
+ app_name: "<%= app_name %>"
3
+ audit_log:
4
+ enabled: false
5
+ browser_monitoring:
6
+ auto_instrument: true
7
+ capture_params: false
8
+ developer_mode: false
9
+ error_collector:
10
+ capture_source: true
11
+ enabled: true
12
+ ignore_errors: "ActionController::RoutingError,Sinatra::NotFound"
13
+ license_key: "<%%= ENV["NEW_RELIC_LICENSE_KEY"] %>"
14
+ log_level: info
15
+ monitor_mode: true
16
+ transaction_tracer:
17
+ enabled: true
18
+ record_sql: obfuscated
19
+ stack_trace_threshold: 0.500
20
+ transaction_threshold: apdex_f
21
+ development:
22
+ <<: *default_settings
23
+ monitor_mode: false
24
+ developer_mode: true
25
+ test:
26
+ <<: *default_settings
27
+ monitor_mode: false
28
+ production:
29
+ <<: *default_settings
30
+ monitor_mode: true
31
+ staging:
32
+ <<: *default_settings
33
+ app_name: "<%= app_name %> (Staging)"
34
+ monitor_mode: true
@@ -0,0 +1,18 @@
1
+ # https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server
2
+
3
+ # The environment variable WEB_CONCURRENCY may be set to a default value based
4
+ # on dyno size. To manually configure this value use heroku config:set
5
+ # WEB_CONCURRENCY.
6
+ workers Integer(ENV.fetch("WEB_CONCURRENCY", 3))
7
+ threads_count = Integer(ENV.fetch("MAX_THREADS", 5))
8
+ threads(threads_count, threads_count)
9
+
10
+ preload_app!
11
+
12
+ rackup DefaultRackup
13
+ environment ENV.fetch("RACK_ENV", "development")
14
+
15
+ on_worker_boot do
16
+ # Worker specific setup for Rails 4.1+
17
+ # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
18
+ end
@@ -0,0 +1,90 @@
1
+ Rails.application.routes.draw do
2
+ #-------------------------------------------#
3
+ # App Routes
4
+ #-------------------------------------------#
5
+
6
+
7
+ #-------------------------------------------#
8
+ # Admin
9
+ #-------------------------------------------#
10
+ devise_for :admins,
11
+ path: 'admin',
12
+ controllers: {
13
+ passwords: 'admin/devise_overrides/passwords',
14
+ sessions: 'admin/devise_overrides/sessions'
15
+ }
16
+
17
+ namespace :admin do
18
+ get '/' => 'base#index'
19
+ get '/bootstrap.json' => 'base#bootstrap_data'
20
+
21
+ # files
22
+ resources :assets, controller: 'assets' # Loft::Asset
23
+
24
+ # settings
25
+ resources :admins, controller: 'admins' # Ants::Admin
26
+ resources :redirects, controller: 'redirects' # Ants::Redirect
27
+ end
28
+
29
+
30
+ #-------------------------------------------#
31
+ # Redirects, ideally this should go last
32
+ #-------------------------------------------#
33
+ get "/*id" => 'redirects#show', :constraints => Constraints::Redirects
34
+
35
+
36
+ # The priority is based upon order of creation: first created -> highest priority.
37
+ # See how all your routes lay out with "rake routes".
38
+
39
+ # You can have the root of your site routed with "root"
40
+ # root 'welcome#index'
41
+
42
+ # Example of regular route:
43
+ # get 'products/:id' => 'catalog#view'
44
+
45
+ # Example of named route that can be invoked with purchase_url(id: product.id)
46
+ # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase
47
+
48
+ # Example resource route (maps HTTP verbs to controller actions automatically):
49
+ # resources :products
50
+
51
+ # Example resource route with options:
52
+ # resources :products do
53
+ # member do
54
+ # get 'short'
55
+ # post 'toggle'
56
+ # end
57
+ #
58
+ # collection do
59
+ # get 'sold'
60
+ # end
61
+ # end
62
+
63
+ # Example resource route with sub-resources:
64
+ # resources :products do
65
+ # resources :comments, :sales
66
+ # resource :seller
67
+ # end
68
+
69
+ # Example resource route with more complex sub-resources:
70
+ # resources :products do
71
+ # resources :comments
72
+ # resources :sales do
73
+ # get 'recent', on: :collection
74
+ # end
75
+ # end
76
+
77
+ # Example resource route with concerns:
78
+ # concern :toggleable do
79
+ # post 'toggle'
80
+ # end
81
+ # resources :posts, concerns: :toggleable
82
+ # resources :photos, concerns: :toggleable
83
+
84
+ # Example resource route within a namespace:
85
+ # namespace :admin do
86
+ # # Directs /admin/products/* to Admin::ProductsController
87
+ # # (app/controllers/admin/products_controller.rb)
88
+ # resources :products
89
+ # end
90
+ end