chr 0.3.5 → 0.4.9

Sign up to get free protection for your applications and to get access to all the features.
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