rail_pass 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +20 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/rail_pass/application.js +15 -0
  5. data/app/assets/stylesheets/rail_pass/application.css +13 -0
  6. data/app/controllers/rail_pass/application_controller.rb +4 -0
  7. data/app/controllers/rail_pass/styleguide_controller.rb +7 -0
  8. data/app/helpers/rail_pass/application_helper.rb +4 -0
  9. data/app/views/rail_pass/styleguide/index.html.haml +104 -0
  10. data/config/routes.rb +3 -0
  11. data/lib/generators/rail_pass/install_generator.rb +220 -0
  12. data/lib/generators/templates/Procfile +1 -0
  13. data/lib/generators/templates/app/assets/javascripts/application.js +17 -0
  14. data/lib/generators/templates/app/assets/javascripts/html5.js +14 -0
  15. data/lib/generators/templates/app/assets/javascripts/polyfills.js +14 -0
  16. data/lib/generators/templates/app/assets/javascripts/responsive.js +14 -0
  17. data/lib/generators/templates/app/assets/javascripts/scripts.js.coffee +0 -0
  18. data/lib/generators/templates/app/assets/stylesheets/application.css.scss +26 -0
  19. data/lib/generators/templates/app/assets/stylesheets/base/_colors.scss +1 -0
  20. data/lib/generators/templates/app/assets/stylesheets/base/_defaults.scss +27 -0
  21. data/lib/generators/templates/app/assets/stylesheets/base/_forms.scss +0 -0
  22. data/lib/generators/templates/app/assets/stylesheets/base/_settings.scss +0 -0
  23. data/lib/generators/templates/app/assets/stylesheets/base/_typography.scss +3 -0
  24. data/lib/generators/templates/app/assets/stylesheets/layout/_containers.scss +18 -0
  25. data/lib/generators/templates/app/assets/stylesheets/layout/_footer.scss +1 -0
  26. data/lib/generators/templates/app/assets/stylesheets/layout/_header.scss +1 -0
  27. data/lib/generators/templates/app/assets/stylesheets/layout/_settings.scss +1 -0
  28. data/lib/generators/templates/app/assets/stylesheets/modules/_buttons.scss +15 -0
  29. data/lib/generators/templates/app/controllers/pages_controller.rb +2 -0
  30. data/lib/generators/templates/app/helpers/application_helper.rb +87 -0
  31. data/lib/generators/templates/app/views/errors/404.html.haml +3 -0
  32. data/lib/generators/templates/app/views/layouts/application.html.haml +124 -0
  33. data/lib/generators/templates/app/views/pages/index.html.haml +0 -0
  34. data/lib/generators/templates/config/deploy.rb +34 -0
  35. data/lib/generators/templates/config/initializers/dev_environment.rb +6 -0
  36. data/lib/generators/templates/config/initializers/new_relic.rb +5 -0
  37. data/lib/generators/templates/config/mongoid.yml +68 -0
  38. data/lib/generators/templates/config/newrelic.yml +255 -0
  39. data/lib/generators/templates/config/recipes/base.rb +86 -0
  40. data/lib/generators/templates/config/recipes/check.rb +13 -0
  41. data/lib/generators/templates/config/recipes/mongodb/install-outdated.rb +41 -0
  42. data/lib/generators/templates/config/recipes/mongodb/install.rb +45 -0
  43. data/lib/generators/templates/config/recipes/mongodb/manage.rb +27 -0
  44. data/lib/generators/templates/config/recipes/mongodb.rb +73 -0
  45. data/lib/generators/templates/config/recipes/mysql.rb +152 -0
  46. data/lib/generators/templates/config/recipes/nginx.rb +25 -0
  47. data/lib/generators/templates/config/recipes/nodejs.rb +9 -0
  48. data/lib/generators/templates/config/recipes/postgresql.rb +34 -0
  49. data/lib/generators/templates/config/recipes/rbenv.rb +29 -0
  50. data/lib/generators/templates/config/recipes/redis.rb +18 -0
  51. data/lib/generators/templates/config/recipes/ruby.rb +93 -0
  52. data/lib/generators/templates/config/recipes/templates/foreman.erb +2 -0
  53. data/lib/generators/templates/config/recipes/templates/gitlab.yml.erb +29 -0
  54. data/lib/generators/templates/config/recipes/templates/mongoid.yml.erb +10 -0
  55. data/lib/generators/templates/config/recipes/templates/mysql.yml.erb +7 -0
  56. data/lib/generators/templates/config/recipes/templates/nginx_unicorn.erb +27 -0
  57. data/lib/generators/templates/config/recipes/templates/postgresql.yml.erb +8 -0
  58. data/lib/generators/templates/config/recipes/templates/unicorn.rb.erb +8 -0
  59. data/lib/generators/templates/config/recipes/templates/unicorn_init.erb +84 -0
  60. data/lib/generators/templates/config/recipes/unicorn.rb +28 -0
  61. data/lib/generators/templates/config/recipes/utilities.rb +144 -0
  62. data/lib/generators/templates/config/unicorn.rb +2 -0
  63. data/lib/generators/templates/public/422.html +54 -0
  64. data/lib/generators/templates/public/500.html +54 -0
  65. data/lib/generators/templates/spec/spec_helper.rb +41 -0
  66. data/lib/generators/templates/vendor/assets/fonts/fontawesome/fontawesome-webfont.eot +0 -0
  67. data/lib/generators/templates/vendor/assets/fonts/fontawesome/fontawesome-webfont.ttf +0 -0
  68. data/lib/generators/templates/vendor/assets/fonts/fontawesome/fontawesome-webfont.woff +0 -0
  69. data/lib/generators/templates/vendor/assets/fonts/icomoon/icomoon.eot +0 -0
  70. data/lib/generators/templates/vendor/assets/fonts/icomoon/icomoon.svg +36 -0
  71. data/lib/generators/templates/vendor/assets/fonts/icomoon/icomoon.ttf +0 -0
  72. data/lib/generators/templates/vendor/assets/fonts/icomoon/icomoon.woff +0 -0
  73. data/lib/generators/templates/vendor/assets/javascripts/jquery.ui.touch-punch.min.js +11 -0
  74. data/lib/generators/templates/vendor/assets/javascripts/polyfills/html5shim.js +3 -0
  75. data/lib/generators/templates/vendor/assets/javascripts/polyfills/modernizr.js +4 -0
  76. data/lib/generators/templates/vendor/assets/javascripts/polyfills/respond.js +15 -0
  77. data/lib/generators/templates/vendor/assets/javascripts/polyfills/selectivizr.js +560 -0
  78. data/lib/generators/templates/vendor/assets/stylesheets/font-awesome.scss +493 -0
  79. data/lib/generators/templates/vendor/assets/stylesheets/icomoon.scss +22 -0
  80. data/lib/rail_pass/engine.rb +5 -0
  81. data/lib/rail_pass/version.rb +3 -0
  82. data/lib/rail_pass.rb +4 -0
  83. data/lib/tasks/rail_pass_tasks.rake +4 -0
  84. metadata +146 -0
@@ -0,0 +1,87 @@
1
+ module ApplicationHelper
2
+
3
+ # Page Titles - Set individual page title elements
4
+ # Accepts a String or Array.
5
+ # Sets yield(:title) to a String for use in <title>.
6
+ #
7
+ # --Array--
8
+ # title ["Example", "Nashville, TN"]
9
+ # => "Example - Page - Title"
10
+ #
11
+ # --String--
12
+ # title "Example Page Title"
13
+ # => "Example Page Title"
14
+ #
15
+ def title title_partials
16
+ title = if title_partials.is_a? String
17
+ title_partials
18
+ elsif title_partials.is_a? Array
19
+ title_partials.reject(&:blank?).join(' - ')
20
+ end
21
+ content_for(:title) { title }
22
+ end
23
+
24
+
25
+ #
26
+ # Yes -or- No
27
+ #
28
+ def yes_no(bool)
29
+ bool ? 'Yes' : 'No'
30
+ end
31
+
32
+
33
+ #
34
+ # Enabled -or- Disabled
35
+ #
36
+ def enabled_disabled(bool)
37
+ bool ? 'Enabled' : 'Disabled'
38
+ end
39
+
40
+
41
+ #
42
+ # Substitute N/A for blank data
43
+ #
44
+ def check(data)
45
+ data.blank? ? 'N/A' : data
46
+ end
47
+
48
+
49
+
50
+ #
51
+ # Date: Jan 1, 2012
52
+ #
53
+ def date_short(date)
54
+ date.strftime("%b %e, %Y") if !date.blank?
55
+ end
56
+
57
+
58
+ #
59
+ # Date: 1/1/2012
60
+ #
61
+ def date_compact(date)
62
+ date.strftime("%-m/%-d/%Y") if !date.blank?
63
+ end
64
+
65
+
66
+ #
67
+ # Substitute empty string for blank data
68
+ #
69
+ def exists?(data)
70
+ data.blank? ? '' : data
71
+ end
72
+
73
+
74
+
75
+
76
+
77
+
78
+ #
79
+ # Alternate object debug
80
+ #
81
+ def mdebug(object)
82
+ d = object.attributes.inspect.split(',')
83
+ d.map! {|i| i.to_s + '<br>'}
84
+ d.join.delete("{").delete("}")
85
+ end
86
+
87
+ end
@@ -0,0 +1,3 @@
1
+ .container
2
+ %h1 Oops!
3
+ %p{ style: 'text-align: center;' } The page you were looking for might not exist. Try the links above or visit the #{link_to 'home page', root_url}.
@@ -0,0 +1,124 @@
1
+ !!! 5
2
+
3
+ %html
4
+
5
+ /
6
+ _
7
+ _
8
+ _ /// /// ..=====..
9
+ _ /// /// .:ooooooooooo:.
10
+ _ /// /// .ooooooooooooooo.
11
+ _ /// /// -ooooooooooooooooo-
12
+ _ /// /// -ooooooooooooooooo-
13
+ _ /// /// -ooooooooooooooooo-
14
+ _ /// /// `ooooooooooooooo'
15
+ _ /// /// `:ooooooooooo:'
16
+ _ /// /// ''=====''
17
+ _
18
+ _ Designed & Developed by LaCroix Design Co.
19
+ _ http://lacroixdesign.net
20
+ _
21
+ _
22
+ _
23
+
24
+ %head
25
+ %meta(charset="utf-8")
26
+ %title=raw [yield(:title), "FIXME: APPLICATION NAME"].reject(&:blank?).join(' | ')
27
+
28
+ -# Kore ga general meta
29
+ %meta{name: "description", content: "FIXME: APPLICATION DESCRIPTION"}
30
+ %meta{name: "author", content: "Michael LaCroix, James LaCroix"}
31
+ %meta{:'http-equiv' => "X-UA-Compatible", content: "chrome=1"}
32
+
33
+ -# Kore ga Facebook meta
34
+ / %meta{name: "og:title", content: "#{@fb_title || 'FIXME: APPLICATION NAME'}"}
35
+ / %meta{name: "og:image", content: ""}
36
+ / %meta{name: "og:type", content: "website"}
37
+ / %meta{name: "og:site_name", content: "FIXME: APPLICATION NAME"}
38
+ / %meta{name: "og:admins", content: ""}
39
+
40
+ -# Kore ga fav and touch icons (reside in the /public folder), plus iOS meta
41
+ / %link{rel: "shortcut icon", href: "#{root_url}/favicon.png"}
42
+ / %link{rel: "apple-touch-icon", href: "#{root_url}/apple-touch-icon-57x57-precomposed.png"}
43
+ / %link{rel: "apple-touch-icon-precomposed", sizes: "72x72", href: "#{root_url}/apple-touch-icon-72x72-precomposed.png"}
44
+ / %link{rel: "apple-touch-icon-precomposed", sizes: "114x114", href: "#{root_url}/apple-touch-icon-114x114-precomposed.png"}
45
+ / %link{rel: "apple-touch-icon-precomposed", sizes: "144x144", href: "#{root_url}/apple-touch-icon-144x144-precomposed.png"}
46
+ %meta{name: "viewport", content: "initial-scale=1.0, width=device-width, user-scalable=no, maximum-scale=1.0"}
47
+ %meta{name: "apple-mobile-web-app-capable", content: "yes"}
48
+ %meta{name: "apple-mobile-web-app-status-bar-style", content:"black"}
49
+
50
+ -# Kore ga HTML5 shim, for IE6-8 support of HTML elements
51
+ /[if lt IE 9]
52
+ = javascript_include_tag "html5"
53
+
54
+ = stylesheet_link_tag "application", media: "all"
55
+
56
+ -# Kore ga CSS3 polyfill, IE6-8 support of CSS3 pseudo-classes with Selectivizr
57
+ /[if lt IE 9]
58
+ = javascript_include_tag "polyfills"
59
+
60
+ = javascript_include_tag "responsive"
61
+ = csrf_meta_tags
62
+
63
+ -# Kore ga Typekit -- replace VVVVVVV with the proper kit code
64
+ / %script{ type: "text/javascript", src: "//use.typekit.net/VVVVVVV.js" }
65
+ / :javascript
66
+ / try{Typekit.load();}catch(e){}
67
+
68
+
69
+
70
+
71
+ %body
72
+ /[if lt IE 9]
73
+ .wrap.outdated-browser
74
+ %div
75
+ %p
76
+ %a.close{ href: "#" } x
77
+ You are using an outdated browser. Please
78
+ %a{ href: "http://browsehappy.com/", target: '_blank' } upgrade your browser
79
+ or
80
+ %a{ href: "http://www.google.com/chromeframe/?redirect=true", target: '_blank' } activate Google Chrome Frame
81
+ to improve your experience.
82
+
83
+
84
+ %header.header
85
+
86
+
87
+ = yield
88
+
89
+
90
+ %footer.footer
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+ -# Kore ga javascript
100
+ = javascript_include_tag "application"
101
+
102
+
103
+ -# Kore ga Google Analytics -- replace VVVVVVVV-V with the proper code
104
+ - if Rails.env.production?
105
+ :javascript
106
+ var _gaq = _gaq || [];
107
+ _gaq.push(['_setAccount', 'UA-VVVVVVVV-V']);
108
+ _gaq.push(['_trackPageview']);
109
+
110
+ (function() {
111
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
112
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
113
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
114
+ })();
115
+
116
+
117
+
118
+
119
+
120
+ -# Kore ga Width Plugin
121
+ - if Rails.env.development?
122
+ #lacroixdesign-browserwidth{style: "position:fixed; bottom:0; left:0; background:#555; color:#CCC; font-size:0.75em; padding:0.25em; text-shadow:black 1px 1px 1px; font-weight:normal;"}
123
+ :javascript
124
+ function showWidth(){var w = $(window).width();$('#dev-browserwidth').text(w);}showWidth();$(window).resize(function(){showWidth();});
@@ -0,0 +1,34 @@
1
+ require "bundler/capistrano"
2
+
3
+ load "config/recipes/base"
4
+ load "config/recipes/nginx"
5
+ load "config/recipes/unicorn"
6
+ # load "config/recipes/mongodb"
7
+ load "config/recipes/postgresql"
8
+ # load "config/recipes/mysql"
9
+ # load "config/recipes/redis"
10
+ load "config/recipes/nodejs"
11
+ load "config/recipes/rbenv"
12
+ # load "config/recipes/ruby" # No long necessary, Foreman does not need sudo for bundle exec
13
+ load "config/recipes/check"
14
+
15
+
16
+
17
+ server "XX.XX.XX.XX", :web, :app, :db, primary: true # FIXME change this
18
+ set :environment, "production"
19
+
20
+ set :user, "deploy" # FIXME change this
21
+ set :application, "APPLICATION" # FIXME change this
22
+ set :deploy_to, "/home/#{user}/apps/#{application}"
23
+ set :deploy_via, :remote_cache
24
+ set :use_sudo, false
25
+
26
+ set :scm, "git"
27
+ set :repository, "git@github.com:APPLICATION.git" # FIXME change this
28
+ set :remote_repository, "origin" # default is "origin"
29
+ set :branch, "master" # default is "master"
30
+
31
+ default_run_options[:pty] = true
32
+ ssh_options[:forward_agent] = true
33
+
34
+ after "deploy", "deploy:cleanup" # keep only the last 5 releases
@@ -0,0 +1,6 @@
1
+ unless Rails.env.production?
2
+ # Add environment variables for use during development.
3
+ # Ensure this file is added to .gitignore
4
+ #
5
+ # ENV['PASSWORD'] = "secret"
6
+ end
@@ -0,0 +1,5 @@
1
+ # Ensure the agent is started using Unicorn
2
+ # This is needed when using Unicorn and preload_app is not set to true.
3
+ # See http://support.newrelic.com/kb/troubleshooting/unicorn-no-data
4
+
5
+ NewRelic::Agent.after_fork(:force_reconnect => true) if defined? Unicorn
@@ -0,0 +1,68 @@
1
+ development:
2
+ # Configure available database sessions. (required)
3
+ sessions:
4
+ # Defines the default session. (required)
5
+ default:
6
+ # Defines the name of the default database that Mongoid can connect to.
7
+ # (required).
8
+ database: app_name_development
9
+ # Provides the hosts the default session can connect to. Must be an array
10
+ # of host:port pairs. (required)
11
+ hosts:
12
+ - localhost:27017
13
+ options:
14
+ # Change whether the session persists in safe mode by default.
15
+ # (default: false)
16
+ # safe: false
17
+
18
+ # Change the default consistency model to :eventual or :strong.
19
+ # :eventual will send reads to secondaries, :strong sends everything
20
+ # to master. (default: :eventual)
21
+ consistency: :strong
22
+ # Configure Mongoid specific options. (optional)
23
+ options:
24
+ # Configuration for whether or not to allow access to fields that do
25
+ # not have a field definition on the model. (default: true)
26
+ # allow_dynamic_fields: true
27
+
28
+ # Enable the identity map, needed for eager loading. (default: false)
29
+ # identity_map_enabled: false
30
+
31
+ # Includes the root model name in json serialization. (default: false)
32
+ # include_root_in_json: false
33
+
34
+ # Include the _type field in serializaion. (default: false)
35
+ # include_type_for_serialization: false
36
+
37
+ # Preload all models in development, needed when models use
38
+ # inheritance. (default: false)
39
+ # preload_models: false
40
+
41
+ # Protect id and type from mass assignment. (default: true)
42
+ # protect_sensitive_fields: true
43
+
44
+ # Raise an error when performing a #find and the document is not found.
45
+ # (default: true)
46
+ # raise_not_found_error: true
47
+
48
+ # Raise an error when defining a scope with the same name as an
49
+ # existing method. (default: false)
50
+ # scope_overwrite_exception: false
51
+
52
+ # Skip the database version check, used when connecting to a db without
53
+ # admin access. (default: false)
54
+ # skip_version_check: false
55
+
56
+ # User Active Support's time zone in conversions. (default: true)
57
+ # use_activesupport_time_zone: true
58
+
59
+ # Ensure all times are UTC in the app side. (default: false)
60
+ # use_utc: false
61
+ test:
62
+ sessions:
63
+ default:
64
+ database: app_name_test
65
+ hosts:
66
+ - localhost:27017
67
+ options:
68
+ consistency: :strong
@@ -0,0 +1,255 @@
1
+ # Here are the settings that are common to all environments
2
+ common: &default_settings
3
+ # ============================== LICENSE KEY ===============================
4
+
5
+ # You must specify the license key associated with your New Relic
6
+ # account. This key binds your Agent's data to your account in the
7
+ # New Relic service.
8
+ license_key: '<%= ENV["NEW_RELIC_LICENSE_KEY"] %>'
9
+
10
+ # Agent Enabled (Rails Only)
11
+ # Use this setting to force the agent to run or not run.
12
+ # Default is 'auto' which means the agent will install and run only
13
+ # if a valid dispatcher such as Mongrel is running. This prevents
14
+ # it from running with Rake or the console. Set to false to
15
+ # completely turn the agent off regardless of the other settings.
16
+ # Valid values are true, false and auto.
17
+ #
18
+ # agent_enabled: auto
19
+
20
+ # Application Name Set this to be the name of your application as
21
+ # you'd like it show up in New Relic. The service will then auto-map
22
+ # instances of your application into an "application" on your
23
+ # dashboard page. If you want to map this instance into multiple
24
+ # apps, like "AJAX Requests" and "All UI" then specify a semicolon
25
+ # separated list of up to three distinct names, or a yaml list.
26
+ # Defaults to the capitalized RAILS_ENV or RACK_ENV (i.e.,
27
+ # Production, Staging, etc)
28
+ #
29
+ # Example:
30
+ #
31
+ # app_name:
32
+ # - Ajax Service
33
+ # - All Services
34
+ #
35
+ app_name: <%= ENV["NEW_RELIC_APP_NAME"] %>
36
+
37
+ # When "true", the agent collects performance data about your
38
+ # application and reports this data to the New Relic service at
39
+ # newrelic.com. This global switch is normally overridden for each
40
+ # environment below. (formerly called 'enabled')
41
+ monitor_mode: true
42
+
43
+ # Developer mode should be off in every environment but
44
+ # development as it has very high overhead in memory.
45
+ developer_mode: false
46
+
47
+ # The newrelic agent generates its own log file to keep its logging
48
+ # information separate from that of your application. Specify its
49
+ # log level here.
50
+ log_level: info
51
+
52
+ # Optionally set the path to the log file This is expanded from the
53
+ # root directory (may be relative or absolute, e.g. 'log/' or
54
+ # '/var/log/') The agent will attempt to create this directory if it
55
+ # does not exist.
56
+ # log_file_path: 'log'
57
+
58
+ # Optionally set the name of the log file, defaults to 'newrelic_agent.log'
59
+ # log_file_name: 'newrelic_agent.log'
60
+
61
+ # The newrelic agent communicates with the service via http by
62
+ # default. If you want to communicate via https to increase
63
+ # security, then turn on SSL by setting this value to true. Note,
64
+ # this will result in increased CPU overhead to perform the
65
+ # encryption involved in SSL communication, but this work is done
66
+ # asynchronously to the threads that process your application code,
67
+ # so it should not impact response times.
68
+ ssl: false
69
+
70
+ # EXPERIMENTAL: enable verification of the SSL certificate sent by
71
+ # the server. This setting has no effect unless SSL is enabled
72
+ # above. This may block your application. Only enable it if the data
73
+ # you send us needs end-to-end verified certificates.
74
+ #
75
+ # This means we cannot cache the DNS lookup, so each request to the
76
+ # service will perform a lookup. It also means that we cannot
77
+ # use a non-blocking lookup, so in a worst case, if you have DNS
78
+ # problems, your app may block indefinitely.
79
+ # verify_certificate: true
80
+
81
+ # Set your application's Apdex threshold value with the 'apdex_t'
82
+ # setting, in seconds. The apdex_t value determines the buckets used
83
+ # to compute your overall Apdex score.
84
+ # Requests that take less than apdex_t seconds to process will be
85
+ # classified as Satisfying transactions; more than apdex_t seconds
86
+ # as Tolerating transactions; and more than four times the apdex_t
87
+ # value as Frustrating transactions.
88
+ # For more about the Apdex standard, see
89
+ # http://newrelic.com/docs/general/apdex
90
+
91
+ apdex_t: 0.5
92
+
93
+ #============================== Browser Monitoring ===============================
94
+ # New Relic Real User Monitoring gives you insight into the performance real users are
95
+ # experiencing with your website. This is accomplished by measuring the time it takes for
96
+ # your users' browsers to download and render your web pages by injecting a small amount
97
+ # of JavaScript code into the header and footer of each page.
98
+ browser_monitoring:
99
+ # By default the agent automatically injects the monitoring JavaScript
100
+ # into web pages. Set this attribute to false to turn off this behavior.
101
+ auto_instrument: true
102
+
103
+ # Proxy settings for connecting to the service.
104
+ #
105
+ # If a proxy is used, the host setting is required. Other settings
106
+ # are optional. Default port is 8080.
107
+ #
108
+ # proxy_host: hostname
109
+ # proxy_port: 8080
110
+ # proxy_user:
111
+ # proxy_pass:
112
+
113
+
114
+ # Tells transaction tracer and error collector (when enabled)
115
+ # whether or not to capture HTTP params. When true, frameworks can
116
+ # exclude HTTP parameters from being captured.
117
+ # Rails: the RoR filter_parameter_logging excludes parameters
118
+ # Java: create a config setting called "ignored_params" and set it to
119
+ # a comma separated list of HTTP parameter names.
120
+ # ex: ignored_params: credit_card, ssn, password
121
+ capture_params: false
122
+
123
+
124
+ # Transaction tracer captures deep information about slow
125
+ # transactions and sends this to the service once a
126
+ # minute. Included in the transaction is the exact call sequence of
127
+ # the transactions including any SQL statements issued.
128
+ transaction_tracer:
129
+
130
+ # Transaction tracer is enabled by default. Set this to false to
131
+ # turn it off. This feature is only available at the Professional
132
+ # and above product levels.
133
+ enabled: true
134
+
135
+ # Threshold in seconds for when to collect a transaction
136
+ # trace. When the response time of a controller action exceeds
137
+ # this threshold, a transaction trace will be recorded and sent to
138
+ # the service. Valid values are any float value, or (default)
139
+ # "apdex_f", which will use the threshold for an dissatisfying
140
+ # Apdex controller action - four times the Apdex T value.
141
+ transaction_threshold: apdex_f
142
+
143
+ # When transaction tracer is on, SQL statements can optionally be
144
+ # recorded. The recorder has three modes, "off" which sends no
145
+ # SQL, "raw" which sends the SQL statement in its original form,
146
+ # and "obfuscated", which strips out numeric and string literals
147
+ record_sql: obfuscated
148
+
149
+ # Threshold in seconds for when to collect stack trace for a SQL
150
+ # call. In other words, when SQL statements exceed this threshold,
151
+ # then capture and send the current stack trace. This is
152
+ # helpful for pinpointing where long SQL calls originate from
153
+ stack_trace_threshold: 0.500
154
+
155
+ # Determines whether the agent will capture query plans for slow
156
+ # SQL queries. Only supported in mysql and postgres. Should be
157
+ # set to false when using other adapters.
158
+ # explain_enabled: true
159
+
160
+ # Threshold for query execution time below which query plans will not
161
+ # not be captured. Relevant only when `explain_enabled` is true.
162
+ # explain_threshold: 0.5
163
+
164
+ # Error collector captures information about uncaught exceptions and
165
+ # sends them to the service for viewing
166
+ error_collector:
167
+
168
+ # Error collector is enabled by default. Set this to false to turn
169
+ # it off. This feature is only available at the Professional and above
170
+ # product levels
171
+ enabled: true
172
+
173
+ # Rails Only - tells error collector whether or not to capture a
174
+ # source snippet around the place of the error when errors are View
175
+ # related.
176
+ capture_source: true
177
+
178
+ # To stop specific errors from reporting to New Relic, set this property
179
+ # to comma separated values. Default is to ignore routing errors
180
+ # which are how 404's get triggered.
181
+ #
182
+ ignore_errors: ActionController::RoutingError
183
+
184
+ # (Advanced) Uncomment this to ensure the cpu and memory samplers
185
+ # won't run. Useful when you are using the agent to monitor an
186
+ # external resource
187
+ # disable_samplers: true
188
+
189
+ # If you aren't interested in visibility in these areas, you can
190
+ # disable the instrumentation to reduce overhead.
191
+ #
192
+ # disable_view_instrumentation: true
193
+ # disable_activerecord_instrumentation: true
194
+ # disable_memcache_instrumentation: true
195
+ # disable_dj: true
196
+
197
+ # If you're interested in capturing memcache keys as though they
198
+ # were SQL uncomment this flag. Note that this does increase
199
+ # overhead slightly on every memcached call, and can have security
200
+ # implications if your memcached keys are sensitive
201
+ # capture_memcache_keys: true
202
+
203
+ # Certain types of instrumentation such as GC stats will not work if
204
+ # you are running multi-threaded. Please let us know.
205
+ # multi_threaded = false
206
+
207
+ # Application Environments
208
+ # ------------------------------------------
209
+ # Environment specific settings are in this section.
210
+ # For Rails applications, RAILS_ENV is used to determine the environment
211
+ # For Java applications, pass -Dnewrelic.environment <environment> to set
212
+ # the environment
213
+
214
+ # NOTE if your application has other named environments, you should
215
+ # provide newrelic configuration settings for these environments here.
216
+
217
+ development:
218
+ <<: *default_settings
219
+ # Turn off communication to New Relic service in development mode (also
220
+ # 'enabled').
221
+ # NOTE: for initial evaluation purposes, you may want to temporarily
222
+ # turn the agent on in development mode.
223
+ monitor_mode: false
224
+
225
+ # Rails Only - when running in Developer Mode, the New Relic Agent will
226
+ # present performance information on the last 100 transactions you have
227
+ # executed since starting the mongrel.
228
+ # NOTE: There is substantial overhead when running in developer mode.
229
+ # Do not use for production or load testing.
230
+ developer_mode: true
231
+
232
+ # Enable textmate links
233
+ # textmate: true
234
+
235
+ test:
236
+ <<: *default_settings
237
+ # It almost never makes sense to turn on the agent when running
238
+ # unit, functional or integration tests or the like.
239
+ monitor_mode: false
240
+
241
+ # Turn on the agent in production for 24x7 monitoring. NewRelic
242
+ # testing shows an average performance impact of < 5 ms per
243
+ # transaction, you you can leave this on all the time without
244
+ # incurring any user-visible performance degradation.
245
+ production:
246
+ <<: *default_settings
247
+ monitor_mode: true
248
+
249
+ # Many applications have a staging environment which behaves
250
+ # identically to production. Support for that environment is provided
251
+ # here. By default, the staging environment has the agent turned on.
252
+ staging:
253
+ <<: *default_settings
254
+ monitor_mode: true
255
+ app_name: <%= ENV["NEW_RELIC_APP_NAME"] %> (Staging)
@@ -0,0 +1,86 @@
1
+ def template(from, to)
2
+ erb = File.read(File.expand_path("../templates/#{from}", __FILE__))
3
+ put ERB.new(erb).result(binding), to
4
+ end
5
+
6
+ def set_default(name, *args, &block)
7
+ set(name, *args, &block) unless exists?(name)
8
+ end
9
+
10
+ namespace :deploy do
11
+
12
+ desc "Install everything onto the server"
13
+ task :install do
14
+ run "#{sudo} apt-get -y update"
15
+ run "#{sudo} apt-get -y install python-software-properties"
16
+ end
17
+
18
+
19
+ namespace :assets do
20
+ task :precompile, :roles => :web, :except => { :no_release => true } do
21
+ from = source.next_revision(current_revision)
22
+ if capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ app/assets/ | wc -l").to_i > 0
23
+ run %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile}
24
+ else
25
+ logger.info "Skipping asset pre-compilation because there were no asset changes"
26
+ end
27
+ end
28
+ end
29
+
30
+
31
+ # Use Foreman instead
32
+ # ==========
33
+ # %w[start stop restart].each do |command|
34
+ # desc "#{command} unicorn server"
35
+ # task command, roles: :app, except: {no_release: true} do
36
+ # run "/etc/init.d/unicorn_#{application} #{command}"
37
+ # end
38
+ # end
39
+
40
+ end
41
+
42
+
43
+
44
+
45
+ # Foreman
46
+ # =======
47
+ after 'deploy:start', 'foreman:export'
48
+ after 'deploy:start', 'foreman:start'
49
+ after 'deploy:restart', 'foreman:export'
50
+ after 'deploy:restart', 'foreman:restart'
51
+
52
+ namespace :foreman do
53
+
54
+ desc "Skip password for sudo foreman tasks"
55
+ task :foreman_sudoers do
56
+ template "foreman.erb", "/home/#{user}/foreman_sudoers"
57
+ run "#{sudo} chgrp admin /etc/init/"
58
+ run "#{sudo} chmod 775 /etc/init/"
59
+ end
60
+ after "deploy:setup", "foreman:foreman_sudoers"
61
+
62
+
63
+ desc "Export the Procfile to Ubuntu's upstart scripts"
64
+ task :export, :roles => :app do
65
+ run "cd #{release_path} && bundle exec foreman export upstart /etc/init -a #{application} -u #{user} -l #{shared_path}/log"
66
+ end
67
+
68
+
69
+ desc "Start the application services"
70
+ task :start, :roles => :app do
71
+ run "sudo start #{application}"
72
+ end
73
+
74
+
75
+ desc "Stop the application services"
76
+ task :stop, :roles => :app do
77
+ run "sudo stop #{application}"
78
+ end
79
+
80
+
81
+ desc "Restart the application services"
82
+ task :restart, :roles => :app do
83
+ run "sudo restart #{application}"
84
+ end
85
+
86
+ end
@@ -0,0 +1,13 @@
1
+ namespace :check do
2
+ desc "Make sure local git is in sync with remote."
3
+ task :revision, roles: :web do
4
+ unless `git rev-parse HEAD` == `git rev-parse #{remote_repository}/#{branch}`
5
+ puts "WARNING: HEAD is not the same as #{remote_repository}/#{branch}"
6
+ puts "Run `git push` to sync changes."
7
+ exit
8
+ end
9
+ end
10
+ before "deploy", "check:revision"
11
+ before "deploy:migrations", "check:revision"
12
+ before "deploy:cold", "check:revision"
13
+ end