├── lib ├── tasks │ ├── .gitkeep │ ├── jira.rake │ ├── spec.rake │ ├── concurrency.rake │ ├── truncation.rake │ ├── doc.rake │ └── statistics.rake ├── assets │ ├── .gitkeep │ ├── stylesheets │ │ ├── sortable_table.css.scss │ │ ├── smart_form.css.scss │ │ ├── autocomplete.css.scss │ │ ├── accordion.css.scss │ │ └── reset.css │ └── javascripts │ │ ├── bug_file_formatter.js.coffee │ │ ├── form_with_errors.js.coffee │ │ ├── configure_squash_client.js.coffee.erb │ │ ├── error_tooltip.js.coffee │ │ ├── dynamic_search_field.js.coffee │ │ ├── disclosure.js.coffee │ │ ├── accordion.js.coffee │ │ ├── buttons.js.coffee │ │ └── context.js.coffee ├── service.rb ├── api │ └── errors.rb ├── background_runner │ ├── tasks │ │ ├── sidekiq.rake │ │ └── resque.rake │ ├── job.rb │ └── multithread.rb ├── workers │ ├── pager_duty_resolver.rb │ ├── project_repo_fetcher.rb │ ├── deploy_notification_mailer.rb │ ├── comment_notification_mailer.rb │ ├── symbolication_creator.rb │ ├── symbolication_worker.rb │ ├── jira_status_worker.rb │ ├── obfuscation_map_worker.rb │ ├── source_map_worker.rb │ ├── source_map_creator.rb │ └── obfuscation_map_creator.rb ├── blamer │ └── simple.rb ├── background_runner.rb └── sidekiq_auth_constraint.rb ├── .ruby-gemset ├── .ruby-version ├── app ├── mailers │ └── .gitkeep ├── models │ ├── .gitkeep │ ├── device_bug.rb │ ├── observers │ │ ├── deploy_observer.rb │ │ ├── occurrence_observer.rb │ │ ├── comment_observer.rb │ │ └── watch_observer.rb │ ├── additions │ │ └── ldap_authentication.rb │ ├── user_event.rb │ └── watch.rb ├── assets │ ├── images │ │ ├── bug.png │ │ ├── footer.png │ │ └── comment-arrow.png │ └── stylesheets │ │ ├── _footer.scss │ │ ├── accounts.css.scss │ │ ├── users.css.scss │ │ ├── membership.css.scss │ │ ├── _alerts.scss │ │ ├── _badges.scss │ │ ├── sessions.css.scss │ │ ├── _pills.scss │ │ ├── _modal.scss │ │ ├── application.css │ │ ├── _breadcrumbs.scss │ │ ├── squash.css.scss │ │ ├── flash.css.scss │ │ ├── _tables.scss │ │ └── _controls.scss ├── views │ ├── notification_mailer │ │ ├── critical.text.erb │ │ ├── comment.text.erb │ │ ├── deploy.text.erb │ │ ├── threshold.text.erb │ │ ├── initial.text.erb │ │ ├── resolved.text.erb │ │ ├── reopened.text.erb │ │ ├── assign.text.erb │ │ ├── blame.text.erb │ │ └── occurrence.text.erb │ ├── project │ │ └── membership │ │ │ └── edit.js.erb │ ├── occurrences │ │ └── show.js.erb │ ├── users │ │ └── show.html.rb │ └── projects │ │ └── edit.js.erb ├── middleware │ └── ping.rb └── controllers │ ├── jira │ ├── projects_controller.rb │ ├── statuses_controller.rb │ └── issues_controller.rb │ └── additions │ ├── json_detail_responder.rb │ └── password_authentication_helpers.rb ├── db ├── .gitignore ├── migrate │ ├── 20151126022941_add_hosted_filename_to_source_maps.rb │ ├── 20140130012355_add_mapping_to_source_map.rb │ ├── 20130125021927_index_occurrences_by_bug_and_redirected.rb │ ├── 20130222055524_fix_blame_lru_key.rb │ ├── 20130131002503_track_bugs_per_device.rb │ ├── 20130221020818_create_blames.rb │ └── 20130215185809_fix_condition_on_rule_occurrences_set_latest.rb └── seeds.rb ├── log └── .gitignore ├── vendor ├── plugins │ └── .gitkeep ├── assets │ ├── javascripts │ │ ├── .gitkeep │ │ └── sh │ │ │ ├── shBrushGit.js │ │ │ ├── shBrushPlain.js │ │ │ └── shBrushDiff.js │ └── stylesheets │ │ └── .gitkeep └── configoro │ └── simple.rb ├── tmp ├── pids │ └── .gitignore ├── repos │ └── .gitignore ├── sockets │ └── .gitignore ├── sessions │ └── .gitignore └── sourcemaps │ └── .gitignore ├── doc ├── .gitignore ├── fdoc │ ├── squash.fdoc.service │ ├── deobfuscation-POST.fdoc │ ├── symbolication-POST.fdoc │ └── sourcemap-POST.fdoc └── CONTRIBUTING.md ├── CONTRIBUTING.md ├── config ├── environments │ ├── test │ │ ├── people.yml │ │ ├── squash_javascript.yml │ │ ├── dogfood.yml │ │ ├── jira.yml │ │ └── mailer.yml │ ├── common │ │ ├── javascript_dogfood.yml │ │ ├── activerecord.yml │ │ ├── repositories.yml │ │ ├── authentication.yml │ │ ├── pagerduty.yml │ │ ├── mailer.yml │ │ ├── jira.yml │ │ └── dogfood.yml │ ├── development │ │ ├── dogfood.yml │ │ └── mailer.yml │ └── production │ │ ├── javascript_dogfood.yml │ │ ├── mailer.yml │ │ └── dogfood.yml ├── initializers │ ├── cookies_serializer.rb │ ├── assets.rb │ ├── html5.rb │ ├── session_store.rb │ ├── mime_types.rb │ ├── inflections.rb │ ├── mail.rb │ ├── filter_parameter_logging.rb │ ├── load_autoload_paths.rb │ ├── backtrace_silencers.rb │ ├── field_error_proc.rb │ ├── jira.rb │ ├── wrap_parameters.rb │ ├── secret_token.rb │ └── concurrency.rb ├── database.yml ├── environment.rb ├── boot.rb ├── preinitializers │ ├── jruby.rb │ ├── safe_yaml.rb │ └── source_maps.rb └── secrets.yml ├── .gitignore ├── .rspec ├── public ├── favicon.ico ├── robots.txt ├── 500.html ├── 422.html ├── 400.html └── 404.html ├── spec ├── fixtures │ ├── image.jpg │ ├── image.png │ ├── mapping.json │ ├── pagerduty_response.json │ └── jira_issue_404.json ├── models │ ├── blame_spec.rb │ ├── device_bug_spec.rb │ ├── user_event_spec.rb │ ├── membership_spec.rb │ ├── watch_spec.rb │ └── notification_threshold_spec.rb ├── factories │ ├── memberships.rb │ ├── user_events.rb │ ├── device_bugs.rb │ ├── emails.rb │ ├── environments.rb │ ├── obfuscation_maps.rb │ ├── notification_thresholds.rb │ ├── symbolications.rb │ ├── blames.rb │ ├── watches.rb │ ├── source_maps.rb │ ├── bugs.rb │ ├── projects.rb │ ├── users.rb │ ├── deploys.rb │ ├── comments.rb │ └── events.rb ├── routing │ ├── project │ │ └── memberships_spec.rb │ └── users_spec.rb ├── lib │ └── composite_primary_keys_spec.rb ├── controllers │ └── jira │ │ ├── projects_controller_spec.rb │ │ ├── statuses_controller_spec.rb │ │ └── issues_controller_spec.rb └── support │ └── controller_404_examples.rb ├── bin ├── rake ├── bundle └── rails ├── .codoopts ├── Gemfile ├── Gemfile.d ├── views.rb ├── ~after.rb ├── integration.rb ├── specs.rb ├── utilities.rb ├── mail.rb ├── authentication.rb ├── development.rb ├── framework.rb ├── dogfood.rb ├── assets.rb ├── concurrency.rb ├── models.rb └── _before.rb ├── config.ru ├── Rakefile └── data └── brushes.yml /lib/tasks/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.ruby-gemset: -------------------------------------------------------------------------------- 1 | squash 2 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 2.3.0 2 | -------------------------------------------------------------------------------- /app/mailers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/models/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /db/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite3 -------------------------------------------------------------------------------- /lib/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /log/.gitignore: -------------------------------------------------------------------------------- 1 | *.log -------------------------------------------------------------------------------- /vendor/plugins/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tmp/pids/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | -------------------------------------------------------------------------------- /tmp/repos/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | -------------------------------------------------------------------------------- /tmp/sockets/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | -------------------------------------------------------------------------------- /doc/.gitignore: -------------------------------------------------------------------------------- 1 | app 2 | js 3 | -------------------------------------------------------------------------------- /tmp/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | -------------------------------------------------------------------------------- /tmp/sourcemaps/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | doc/CONTRIBUTING.md -------------------------------------------------------------------------------- /vendor/assets/javascripts/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /config/environments/test/people.yml: -------------------------------------------------------------------------------- 1 | --- 2 | url: 3 | -------------------------------------------------------------------------------- /config/environments/common/javascript_dogfood.yml: -------------------------------------------------------------------------------- 1 | --- {} 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .bundle 2 | .yardoc 3 | node_modules 4 | tmp/cache/* 5 | -------------------------------------------------------------------------------- /.rspec: -------------------------------------------------------------------------------- 1 | --color 2 | --require spec_helper 3 | --format documentation 4 | -------------------------------------------------------------------------------- /config/environments/common/activerecord.yml: -------------------------------------------------------------------------------- 1 | --- 2 | cursors: false 3 | -------------------------------------------------------------------------------- /config/environments/development/dogfood.yml: -------------------------------------------------------------------------------- 1 | --- 2 | disabled: true 3 | -------------------------------------------------------------------------------- /config/environments/test/squash_javascript.yml: -------------------------------------------------------------------------------- 1 | --- 2 | disabled: true 3 | -------------------------------------------------------------------------------- /config/environments/common/repositories.yml: -------------------------------------------------------------------------------- 1 | --- 2 | directory: tmp/repos 3 | -------------------------------------------------------------------------------- /config/environments/production/javascript_dogfood.yml: -------------------------------------------------------------------------------- 1 | --- 2 | APIHost: YOUR_URL 3 | -------------------------------------------------------------------------------- /config/environments/test/dogfood.yml: -------------------------------------------------------------------------------- 1 | --- 2 | exception_behavior_when_disabled: raise 3 | -------------------------------------------------------------------------------- /config/environments/test/jira.yml: -------------------------------------------------------------------------------- 1 | --- 2 | authentication: 3 | password: obfuscated 4 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SquareSquash/web/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /spec/fixtures/image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SquareSquash/web/HEAD/spec/fixtures/image.jpg -------------------------------------------------------------------------------- /spec/fixtures/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SquareSquash/web/HEAD/spec/fixtures/image.png -------------------------------------------------------------------------------- /app/assets/images/bug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SquareSquash/web/HEAD/app/assets/images/bug.png -------------------------------------------------------------------------------- /app/assets/images/footer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SquareSquash/web/HEAD/app/assets/images/footer.png -------------------------------------------------------------------------------- /config/environments/common/authentication.yml: -------------------------------------------------------------------------------- 1 | --- 2 | strategy: password 3 | registration_enabled: true 4 | -------------------------------------------------------------------------------- /config/environments/test/mailer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | default_url_options: 3 | host: "test.host" 4 | protocol: http 5 | -------------------------------------------------------------------------------- /bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require_relative '../config/boot' 3 | require 'rake' 4 | Rake.application.run 5 | -------------------------------------------------------------------------------- /app/assets/images/comment-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SquareSquash/web/HEAD/app/assets/images/comment-arrow.png -------------------------------------------------------------------------------- /config/environments/production/mailer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | default_url_options: 3 | host: YOUR_HOSTNAME 4 | protocol: https 5 | -------------------------------------------------------------------------------- /config/environments/development/mailer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | default_url_options: 3 | host: "localhost:3000" 4 | protocol: http 5 | -------------------------------------------------------------------------------- /.codoopts: -------------------------------------------------------------------------------- 1 | -o doc/js 2 | --title "Squash Front-End JavaScript Documentation" 3 | 4 | lib/assets/javascripts 5 | app/assets/javascripts 6 | -------------------------------------------------------------------------------- /config/environments/production/dogfood.yml: -------------------------------------------------------------------------------- 1 | --- 2 | disabled: true 3 | api_key: YOUR_PRODUCTION_SQUASH_API_KEY 4 | api_host: YOUR_URL 5 | -------------------------------------------------------------------------------- /bin/bundle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 3 | load Gem.bin_path('bundler', 'bundle') 4 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file 2 | 3 | User-Agent: * 4 | Disallow: / 5 | -------------------------------------------------------------------------------- /bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | APP_PATH = File.expand_path('../../config/application', __FILE__) 3 | require_relative '../config/boot' 4 | require 'rails/commands' 5 | -------------------------------------------------------------------------------- /config/initializers/cookies_serializer.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Rails.application.config.action_dispatch.cookies_serializer = :marshal 4 | -------------------------------------------------------------------------------- /app/assets/stylesheets/_footer.scss: -------------------------------------------------------------------------------- 1 | footer { 2 | p { 3 | text-align: center; 4 | color: rgb(159, 159, 159); 5 | margin-top: 20px; 6 | margin-bottom: 10px; 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /app/assets/stylesheets/accounts.css.scss: -------------------------------------------------------------------------------- 1 | @import "vars"; 2 | 3 | body.accounts { 4 | h1 img { 5 | height: $h1-size; 6 | vertical-align: bottom; 7 | margin-right: 10px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/assets/stylesheets/users.css.scss: -------------------------------------------------------------------------------- 1 | @import "vars"; 2 | 3 | body#users-show { 4 | h1 img { 5 | height: $h1-size; 6 | vertical-align: bottom; 7 | margin-right: 10px; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /config/environments/common/pagerduty.yml: -------------------------------------------------------------------------------- 1 | --- 2 | disabled: true 3 | authentication: 4 | strategy: token 5 | token: YOUR_AUTH_TOKEN 6 | api_url: "https://events.pagerduty.com/generic/2010-04-15/create_event.json" 7 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Load all files under the Gemfile.d directory. 4 | 5 | Dir.glob(File.join(File.dirname(__FILE__), 'Gemfile.d', '*.rb')).sort.each do |file| 6 | eval File.read(file), binding, file 7 | end 8 | -------------------------------------------------------------------------------- /config/environments/common/mailer.yml: -------------------------------------------------------------------------------- 1 | --- 2 | from: squash@YOUR_DOMAIN 3 | domain: YOUR_DOMAIN 4 | strategy: sendmail 5 | smtp_settings: 6 | address: 7 | port: 8 | domain: 9 | user_name: 10 | password: 11 | authentication: 12 | enable_starttls_auto: 13 | -------------------------------------------------------------------------------- /config/environments/common/jira.yml: -------------------------------------------------------------------------------- 1 | --- 2 | disabled: true 3 | authentication: 4 | strategy: basic 5 | user: YOUR_USERNAME 6 | password: YOUR_PASSWORD 7 | api_host: "https://yourcompany.com" 8 | api_root: "/jira" 9 | create_issue_details: "/secure/CreateIssueDetails!init.jspa" 10 | -------------------------------------------------------------------------------- /doc/fdoc/squash.fdoc.service: -------------------------------------------------------------------------------- 1 | --- 2 | name: Squash 3 | basePath: '/api/1.0' 4 | description: | 5 | The API for Squash allows client libraries to notify Squash of exceptions and 6 | deploys, and upload data that Squash can use to analyze incoming exceptions 7 | (e.g., source maps, symbolication data, etc.). 8 | -------------------------------------------------------------------------------- /lib/assets/stylesheets/sortable_table.css.scss: -------------------------------------------------------------------------------- 1 | @import "vars"; 2 | @import "tables"; 3 | 4 | table.sortable { 5 | @include table; 6 | 7 | th { 8 | &.sortable:hover { cursor: pointer; } 9 | &.sorted { background-color: $gray5; } 10 | 11 | i { 12 | margin-left: 5px; 13 | float: right; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/assets/stylesheets/membership.css.scss: -------------------------------------------------------------------------------- 1 | body#membership-edit { 2 | .row { padding-bottom: 30px; } 3 | 4 | form { 5 | padding-top: 0; 6 | padding-bottom: 0; 7 | } 8 | 9 | #project-owner img { 10 | float: left; 11 | margin-right: 10px; 12 | } 13 | } 14 | 15 | #email-aliases { 16 | input[type=search] { margin-bottom: 10px; } 17 | } 18 | -------------------------------------------------------------------------------- /spec/fixtures/mapping.json: -------------------------------------------------------------------------------- 1 | { 2 | "version":3, 3 | "file":"out.js", 4 | "sourceRoot":"/Documents/Projects/SquareSquash/javascript", 5 | "sources":["/Documents/Projects/SquareSquash/javascript/vendor/assets/foo.js", "/Documents/Projects/SquareSquash/javascript/vendor/assets/bar.js"], 6 | "names":["src", "maps", "are", "fun"], 7 | "mappings":"AAgBC,SAAQ,CAAEA" 8 | } 9 | -------------------------------------------------------------------------------- /lib/assets/stylesheets/smart_form.css.scss: -------------------------------------------------------------------------------- 1 | .tooltip-error .tooltip-inner { background-color: #700; } 2 | .tooltip-error.top { .tooltip-arrow { border-top-color: #700; } } 3 | .tooltip-error.left { .tooltip-arrow { border-left-color: #700; } } 4 | .tooltip-error.right { .tooltip-arrow { border-right-color: #700; } } 5 | .tooltip-error.bottom { .tooltip-arrow { border-bottom-color: #700; } } 6 | -------------------------------------------------------------------------------- /app/assets/stylesheets/_alerts.scss: -------------------------------------------------------------------------------- 1 | @import "vars"; 2 | 3 | .alert { 4 | padding: 10px 20px; 5 | border-radius: 4px; 6 | font-weight: bold; 7 | margin: 20px 0; 8 | 9 | &.error { background-color: $red; } 10 | &.important { background-color: $orange; } 11 | &.warning { background-color: $yellow; } 12 | &.success { background-color: $green; } 13 | &.info { background-color: $blue; } 14 | } 15 | -------------------------------------------------------------------------------- /config/environments/common/dogfood.yml: -------------------------------------------------------------------------------- 1 | transmit_timeout: 60 2 | ignored_exception_classes: 3 | - ActionController::RoutingError 4 | - ActionController::MethodNotAllowed 5 | - ActionController::ActionNotFound 6 | ignored_exception_messages: 7 | SignalException: 8 | - SIGTERM 9 | "ActiveRecord::StatementInvalid": 10 | - This connection has been closed. 11 | failsafe_log: log/squash.failsafe.log 12 | disabled: true 13 | allowed_origins: [] -------------------------------------------------------------------------------- /lib/assets/stylesheets/autocomplete.css.scss: -------------------------------------------------------------------------------- 1 | @import "vars"; 2 | 3 | ul.autocomplete { 4 | z-index: 99; 5 | position: absolute; 6 | left: 0; 7 | min-width: 200px; 8 | border: 1px solid $gray4; 9 | box-shadow: 0 4px 4px rgba(black, 0.5); 10 | background-color: white; 11 | display: none; 12 | &.shown { display: block; } 13 | 14 | li { 15 | padding: 5px 10px; 16 | &.selected { background-color: $blue; } 17 | &:hover { cursor: pointer; } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /doc/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Contributing 2 | ============ 3 | 4 | If you would like to contribute code to Squash, thank you! You can do so through 5 | GitHub by forking one of the repositories and sending a pull request. However, 6 | before your code can be accepted into the project we need you to sign the (super 7 | simple) [Individual Contributor License Agreement (CLA)][1]. 8 | 9 | [1]: https://spreadsheets.google.com/spreadsheet/viewform?formkey=dDViT2xzUHAwRkI3X3k5Z0lQM091OGc6MQ&ndplr=1 10 | -------------------------------------------------------------------------------- /config/database.yml: -------------------------------------------------------------------------------- 1 | development: 2 | adapter: postgresql 3 | encoding: utf8 4 | host: localhost 5 | username: squash 6 | password: 7 | database: squash_development 8 | 9 | test: 10 | adapter: postgresql 11 | encoding: utf8 12 | host: localhost 13 | username: squash 14 | password: 15 | database: squash_test 16 | 17 | production: 18 | adapter: postgresql 19 | encoding: utf8 20 | host: localhost 21 | username: squash 22 | password: 23 | database: squash_production 24 | pool: 30 25 | -------------------------------------------------------------------------------- /app/assets/stylesheets/_badges.scss: -------------------------------------------------------------------------------- 1 | @import "vars"; 2 | 3 | $badge-padding: 4px; 4 | 5 | span.badge { 6 | background-color: $gray3; 7 | color: white; 8 | padding: $badge-padding; 9 | border-radius: $radius-size; 10 | 11 | &.critical { background-color: $red; } 12 | &.important { background-color: $orange; color: black; } 13 | &.warning { background-color: $yellow; color: black; } 14 | &.success { background-color: $green; color: black; } 15 | &.info { background-color: $blue; color: black; } 16 | } 17 | -------------------------------------------------------------------------------- /config/initializers/assets.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Version of your assets, change this if you want to expire all your assets. 4 | Rails.application.config.assets.version = '1.0' 5 | 6 | # Add additional assets to the asset load path 7 | # Rails.application.config.assets.paths << Emoji.images_path 8 | 9 | # Precompile additional assets. 10 | # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. 11 | Rails.application.config.assets.precompile << 'flot/excanvas.js' 12 | -------------------------------------------------------------------------------- /app/assets/stylesheets/sessions.css.scss: -------------------------------------------------------------------------------- 1 | @import "vars"; 2 | 3 | body.sessions { 4 | .modal-container p { font-size: $h5-size; } 5 | 6 | .body-portion { 7 | h3 { margin-top: 50px; } 8 | 9 | form { 10 | &>div { 11 | margin: 10px 0; 12 | &:last-child { margin-bottom: 0; } 13 | } 14 | 15 | .row .columns { 16 | padding: 0 5px; 17 | &:first-child { padding-left: 0; } 18 | &:last-child { padding-right: 0; } 19 | } 20 | input[type=submit] { width: 100%; } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /spec/fixtures/pagerduty_response.json: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx/1.0.14 3 | Date: Wed, 14 Nov 2012 04:09:11 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Transfer-Encoding: chunked 6 | Connection: keep-alive 7 | Status: 200 OK 8 | X-UA-Compatible: IE=Edge,chrome=1 9 | Cache-Control: no-cache 10 | X-Request-Id: 20436b8395ad658aa642721c14fda3ef 11 | X-Runtime: 0.019127 12 | X-Rack-Cache: invalidate, pass 13 | Set-Cookie: uid=CqQdA1CjGWdd8GH+jTjOAg==; expires=Thu, 31-Dec-37 23:55:55 GMT; domain=pagerduty.com; path=/ 14 | 15 | {"status":"success","message":"You did it!"} 16 | -------------------------------------------------------------------------------- /app/assets/stylesheets/_pills.scss: -------------------------------------------------------------------------------- 1 | @import "vars"; 2 | 3 | ul.pills { 4 | margin-top: 30px; 5 | margin-bottom: 20px; 6 | padding-bottom: 10px; 7 | text-align: center; 8 | border-bottom: 1px solid $gray4; 9 | 10 | &:first-child { margin-top: 0; } 11 | 12 | li { 13 | display: inline; 14 | padding-left: 10px; 15 | padding-right: 10px; 16 | border-right: 1px solid black; 17 | margin-top: 30px; 18 | margin-bottom: 10px; 19 | 20 | &:last-child { border-right: none; } 21 | &.active { font-weight: bold; } 22 | 23 | a { text-decoration: none; } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /spec/fixtures/jira_issue_404.json: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Date: Wed, 14 Nov 2012 22:33:22 GMT 3 | X-AREQUESTID: 1353x39200x1 4 | X-Seraph-LoginReason: OK 5 | X-ASESSIONID: u08r0a 6 | X-AUSERNAME: tim 7 | Cache-Control: no-cache, no-store, no-transform 8 | Content-Type: application/json;charset=UTF-8 9 | Set-Cookie: JSESSIONID=7EEAD8D3F2AE657AF60461E813ADF1B7; Path=/jira; HttpOnly 10 | Set-Cookie: atlassian.xsrf.token=ALMX-0SVV-VVCK-3Y73|b3d297f61c2c261383332a358e39c371759e0f54|lin; Path=/jira 11 | Connection: close 12 | Transfer-Encoding: chunked 13 | 14 | {"errorMessages":["Issue Does Not Exist"],"errors":{}} 15 | -------------------------------------------------------------------------------- /vendor/assets/javascripts/sh/shBrushGit.js: -------------------------------------------------------------------------------- 1 | // Git brush for SyntaxHighlighter 2 | 3 | (function() { 4 | // CommonJS 5 | typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; 6 | 7 | function Brush() { 8 | this.regexList = [ 9 | { regex: /^commit (\w+)$/gm, css: 'keyword' } 10 | ] 11 | } 12 | 13 | Brush.prototype = new SyntaxHighlighter.Highlighter(); 14 | Brush.aliases = ['git', 'commit']; 15 | 16 | SyntaxHighlighter.brushes.Git = Brush; 17 | 18 | // CommonJS 19 | typeof(exports) != 'undefined' ? exports.Brush = Brush : null; 20 | })(); 21 | -------------------------------------------------------------------------------- /vendor/configoro/simple.rb: -------------------------------------------------------------------------------- 1 | # A stripped-down version of Configoro that works without any gems. 2 | 3 | require 'erb' 4 | require 'yaml' 5 | 6 | load File.join(File.dirname(__FILE__), 'base.rb') 7 | 8 | # @private 9 | class Configoro::HashWithIndifferentAccess < ::Hash 10 | def deep_merge(other_hash) 11 | dup.deep_merge!(other_hash) 12 | end 13 | 14 | def deep_merge!(other_hash) 15 | other_hash.each_pair do |k, v| 16 | tv = self[k] 17 | self[k] = tv.is_a?(Hash) && v.is_a?(Hash) ? tv.deep_merge(v) : v 18 | end 19 | self 20 | end 21 | end 22 | 23 | load File.join(File.dirname(__FILE__), 'hash.rb') 24 | -------------------------------------------------------------------------------- /db/migrate/20151126022941_add_hosted_filename_to_source_maps.rb: -------------------------------------------------------------------------------- 1 | class AddHostedFilenameToSourceMaps < ActiveRecord::Migration 2 | def up 3 | add_column :source_maps, :filename, :string, limit: 255 4 | 5 | say "Updating existing source maps" 6 | SourceMap.reset_column_information 7 | SourceMap.find_each(batch_size: 50) do |map| 8 | map.update_attribute :filename, map.map.filename 9 | end 10 | 11 | change_column :source_maps, :filename, :string, null: false, limit: 255 12 | 13 | add_index :source_maps, :filename 14 | end 15 | 16 | def down 17 | remove_column :source_maps, :filename 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /app/views/notification_mailer/critical.text.erb: -------------------------------------------------------------------------------- 1 | Bug #<%= @bug.number %> on <%= @bug.environment.project.name %> is occurring 2 | a lot. Perhaps someone should look into it. 3 | 4 | <%= project_environment_bug_url @bug.environment.project, @bug.environment, @bug %> 5 | 6 | Project: <%= @bug.environment.project.name %> 7 | Environment: <%= @bug.environment.name %> 8 | Revision: <%= @bug.revision %> 9 | 10 | <%= @bug.class_name %> 11 | <% if @bug.special_file? %> 12 | in <%= @bug.file %> 13 | <% else %> 14 | in <%= @bug.file %>:<%= @bug.line %> 15 | <% end %> 16 | 17 | <%= @bug.message_template %> 18 | 19 | Yours truly, 20 | Squash 21 | -------------------------------------------------------------------------------- /app/views/notification_mailer/comment.text.erb: -------------------------------------------------------------------------------- 1 | <%= @comment.user.name %> has commented on this bug: 2 | 3 | <%= @bug.class_name %> 4 | <% if @bug.special_file? %> 5 | in <%= @bug.file %> 6 | <% else %> 7 | in <%= @bug.file %>:<%= @bug.line %> 8 | <% end %> 9 | 10 | <%= @bug.message_template %> 11 | 12 | His/her comment was: 13 | 14 | <%= email_quote @comment.body %> 15 | 16 | More details at <%= project_environment_bug_url @bug.environment.project, @bug.environment, @bug, anchor: 'comments' %> 17 | 18 | Yours truly, 19 | Squash 20 | --- 21 | 22 | If you wish to stop receiving these emails, visit your account page: 23 | <%= account_url %> 24 | -------------------------------------------------------------------------------- /app/views/notification_mailer/deploy.text.erb: -------------------------------------------------------------------------------- 1 | The fix for this bug has just been deployed: 2 | 3 | <%= project_environment_bug_url @bug.environment.project, @bug.environment, @bug %> 4 | 5 | Project: <%= @bug.environment.project.name %> 6 | Environment: <%= @bug.environment.name %> 7 | Revision: <%= @bug.revision %> 8 | Blamed Commit: <%= @bug.blamed_revision %> 9 | Fix Commit: <%= @bug.resolution_revision %> 10 | 11 | <%= @bug.class_name %> 12 | <% if @bug.special_file? %> 13 | in <%= @bug.file %> 14 | <% else %> 15 | in <%= @bug.file %>:<%= @bug.line %> 16 | <% end %> 17 | 18 | <%= @bug.message_template %> 19 | 20 | Yours truly, 21 | Squash 22 | -------------------------------------------------------------------------------- /app/views/notification_mailer/threshold.text.erb: -------------------------------------------------------------------------------- 1 | Bug #<%= @bug.number %> on <%= @bug.environment.project.name %> has been 2 | occurring frequently lately. You set a threshold on how often it should occur, 3 | and this threshold was exceeded. 4 | 5 | <%= project_environment_bug_url @bug.environment.project, @bug.environment, @bug %> 6 | 7 | Project: <%= @bug.environment.project.name %> 8 | Environment: <%= @bug.environment.name %> 9 | Revision: <%= @bug.revision %> 10 | 11 | <%= @bug.class_name %> 12 | <% if @bug.special_file? %> 13 | in <%= @bug.file %> 14 | <% else %> 15 | in <%= @bug.file %>:<%= @bug.line %> 16 | <% end %> 17 | 18 | <%= @bug.message_template %> 19 | 20 | Yours truly, 21 | Squash 22 | -------------------------------------------------------------------------------- /Gemfile.d/views.rb: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Square Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | gem 'erector', github: 'RISCfuture/erector' 16 | gem 'kramdown' 17 | -------------------------------------------------------------------------------- /Gemfile.d/~after.rb: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Square Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | if defined?(Configoro) 16 | Configoro.reset_paths # reset configoro 17 | end 18 | -------------------------------------------------------------------------------- /lib/service.rb: -------------------------------------------------------------------------------- 1 | # Copyright 2014 Square Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # Container module for third-party service integrations. 16 | 17 | module Service 18 | end 19 | -------------------------------------------------------------------------------- /public/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |Maybe one of your attributes had an invalid value.
24 |Maybe you tried to change an attribute you didn't have access to.
24 |You may have mistyped the address or the page may have moved.
24 |