sapience 0.2.7 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/.simplecov +15 -19
  3. data/.travis.yml +13 -2
  4. data/Rakefile +1 -0
  5. data/docker-compose.yml +21 -6
  6. data/lib/sapience/appender/stream.rb +1 -1
  7. data/lib/sapience/extensions/action_cable/tagged_logger_proxy.rb +6 -8
  8. data/lib/sapience/extensions/active_model_serializers/logging.rb +11 -13
  9. data/lib/sapience/extensions/grape/middleware/logging.rb +14 -16
  10. data/lib/sapience/rails.rb +3 -3
  11. data/lib/sapience/version.rb +1 -1
  12. data/lib/sapience.rb +0 -1
  13. data/lib/tasks/coverage.rake +68 -0
  14. data/{test_app → test_apps/grape}/.gitignore +0 -0
  15. data/test_apps/grape/.simplecov +25 -0
  16. data/test_apps/grape/Gemfile +30 -0
  17. data/test_apps/grape/Rakefile.rb +8 -0
  18. data/test_apps/grape/config.ru +5 -0
  19. data/test_apps/grape/lib/ping/api.rb +16 -0
  20. data/test_apps/grape/lib/ping.rb +3 -0
  21. data/test_apps/grape/spec/lib/ping/api_spec.rb +41 -0
  22. data/test_apps/grape/spec/spec_helper.rb +25 -0
  23. data/test_apps/rails/.gitignore +38 -0
  24. data/{test_app → test_apps/rails}/.ruby-version +0 -0
  25. data/test_apps/rails/.simplecov +25 -0
  26. data/{test_app → test_apps/rails}/Gemfile +5 -5
  27. data/{test_app → test_apps/rails}/README.md +0 -0
  28. data/{test_app → test_apps/rails}/Rakefile +0 -0
  29. data/{test_app → test_apps/rails}/app/assets/config/manifest.js +0 -0
  30. data/{test_app → test_apps/rails}/app/assets/images/.keep +0 -0
  31. data/{test_app → test_apps/rails}/app/assets/javascripts/posts.js +0 -0
  32. data/{test_app → test_apps/rails}/app/assets/stylesheets/application.css +0 -0
  33. data/{test_app → test_apps/rails}/app/assets/stylesheets/posts.css +0 -0
  34. data/{test_app → test_apps/rails}/app/assets/stylesheets/scaffold.css +0 -0
  35. data/{test_app → test_apps/rails}/app/channels/application_cable/channel.rb +0 -0
  36. data/{test_app → test_apps/rails}/app/channels/application_cable/connection.rb +0 -0
  37. data/{test_app → test_apps/rails}/app/controllers/application_controller.rb +0 -0
  38. data/{test_app → test_apps/rails}/app/controllers/concerns/.keep +0 -0
  39. data/{test_app → test_apps/rails}/app/controllers/posts_controller.rb +0 -0
  40. data/{test_app → test_apps/rails}/app/helpers/application_helper.rb +0 -0
  41. data/{test_app → test_apps/rails}/app/helpers/posts_helper.rb +0 -0
  42. data/{test_app → test_apps/rails}/app/jobs/application_job.rb +0 -0
  43. data/{test_app → test_apps/rails}/app/mailers/application_mailer.rb +0 -0
  44. data/{test_app → test_apps/rails}/app/models/application_record.rb +0 -0
  45. data/{test_app → test_apps/rails}/app/models/concerns/.keep +0 -0
  46. data/{test_app → test_apps/rails}/app/models/post.rb +0 -0
  47. data/{test_app → test_apps/rails}/app/models/user.rb +0 -0
  48. data/{test_app → test_apps/rails}/app/views/layouts/application.html.erb +0 -0
  49. data/{test_app → test_apps/rails}/app/views/layouts/mailer.html.erb +0 -0
  50. data/{test_app → test_apps/rails}/app/views/layouts/mailer.text.erb +0 -0
  51. data/{test_app → test_apps/rails}/app/views/posts/_form.html.slim +0 -0
  52. data/{test_app → test_apps/rails}/app/views/posts/edit.html.slim +0 -0
  53. data/{test_app → test_apps/rails}/app/views/posts/index.html.slim +0 -0
  54. data/{test_app → test_apps/rails}/app/views/posts/new.html.slim +0 -0
  55. data/{test_app → test_apps/rails}/app/views/posts/show.html.slim +0 -0
  56. data/{test_app → test_apps/rails}/app/workers/test_worker.rb +1 -1
  57. data/{test_app → test_apps/rails}/bin/bundle +0 -0
  58. data/{test_app → test_apps/rails}/bin/rails +0 -0
  59. data/{test_app → test_apps/rails}/bin/rake +0 -0
  60. data/{test_app → test_apps/rails}/bin/setup +0 -0
  61. data/{test_app → test_apps/rails}/bin/sneakers +0 -0
  62. data/{test_app → test_apps/rails}/bin/update +0 -0
  63. data/{test_app → test_apps/rails}/config/application.rb +0 -0
  64. data/{test_app → test_apps/rails}/config/boot.rb +0 -0
  65. data/{test_app → test_apps/rails}/config/cable.yml +0 -0
  66. data/{test_app → test_apps/rails}/config/database.yml +0 -0
  67. data/{test_app → test_apps/rails}/config/environment.rb +0 -0
  68. data/{test_app → test_apps/rails}/config/environments/development.rb +0 -0
  69. data/{test_app → test_apps/rails}/config/environments/production.rb +0 -0
  70. data/{test_app → test_apps/rails}/config/environments/test.rb +0 -0
  71. data/{test_app → test_apps/rails}/config/initializers/application_controller_renderer.rb +0 -0
  72. data/{test_app → test_apps/rails}/config/initializers/backtrace_silencers.rb +0 -0
  73. data/{test_app → test_apps/rails}/config/initializers/cookies_serializer.rb +0 -0
  74. data/{test_app → test_apps/rails}/config/initializers/filter_parameter_logging.rb +0 -0
  75. data/{test_app → test_apps/rails}/config/initializers/inflections.rb +0 -0
  76. data/{test_app → test_apps/rails}/config/initializers/mime_types.rb +0 -0
  77. data/{test_app → test_apps/rails}/config/initializers/new_framework_defaults.rb +0 -0
  78. data/{test_app → test_apps/rails}/config/initializers/session_store.rb +0 -0
  79. data/{test_app → test_apps/rails}/config/initializers/sneakers.rb +0 -0
  80. data/{test_app → test_apps/rails}/config/initializers/wrap_parameters.rb +0 -0
  81. data/{test_app → test_apps/rails}/config/locales/en.yml +0 -0
  82. data/{test_app → test_apps/rails}/config/puma.rb +0 -0
  83. data/{test_app → test_apps/rails}/config/routes.rb +0 -0
  84. data/{test_app → test_apps/rails}/config/sapience_example.yml +0 -0
  85. data/{test_app → test_apps/rails}/config/secrets.yml +0 -0
  86. data/{test_app → test_apps/rails}/config.ru +0 -0
  87. data/{test_app → test_apps/rails}/db/migrate/20160812092236_create_users.rb +0 -0
  88. data/{test_app → test_apps/rails}/db/migrate/20160902141445_create_posts.rb +0 -0
  89. data/{test_app → test_apps/rails}/db/schema.rb +0 -0
  90. data/{test_app → test_apps/rails}/db/seeds.rb +0 -0
  91. data/{test_app → test_apps/rails}/lib/assets/.keep +0 -0
  92. data/{test_app → test_apps/rails}/lib/external_sneaker.rb +0 -0
  93. data/{test_app → test_apps/rails}/lib/tasks/.keep +0 -0
  94. data/{test_app → test_apps/rails}/public/404.html +0 -0
  95. data/{test_app → test_apps/rails}/public/422.html +0 -0
  96. data/{test_app → test_apps/rails}/public/500.html +0 -0
  97. data/{test_app → test_apps/rails}/public/apple-touch-icon-precomposed.png +0 -0
  98. data/{test_app → test_apps/rails}/public/apple-touch-icon.png +0 -0
  99. data/{test_app → test_apps/rails}/public/favicon.ico +0 -0
  100. data/{test_app → test_apps/rails}/public/robots.txt +0 -0
  101. data/{test_app → test_apps/rails}/spec/controllers/posts_controller_spec.rb +0 -0
  102. data/{test_app → test_apps/rails}/spec/factories/posts.rb +0 -0
  103. data/{test_app → test_apps/rails}/spec/factories/users.rb +0 -0
  104. data/{test_app → test_apps/rails}/spec/fixtures/sapience.yml +0 -0
  105. data/{test_app → test_apps/rails}/spec/helpers/posts_helper_spec.rb +0 -0
  106. data/{test_app → test_apps/rails}/spec/integration/sapience_spec.rb +0 -0
  107. data/{test_app → test_apps/rails}/spec/models/post_spec.rb +0 -0
  108. data/{test_app → test_apps/rails}/spec/models/user_spec.rb +0 -0
  109. data/{test_app → test_apps/rails}/spec/rails_helper.rb +4 -2
  110. data/{test_app → test_apps/rails}/spec/requests/posts_spec.rb +0 -0
  111. data/{test_app → test_apps/rails}/spec/routing/posts_routing_spec.rb +0 -0
  112. data/{test_app → test_apps/rails}/spec/spec_helper.rb +0 -0
  113. data/{test_app → test_apps/rails}/spec/views/posts/edit.html.slim_spec.rb +0 -0
  114. data/{test_app → test_apps/rails}/spec/views/posts/index.html.slim_spec.rb +0 -0
  115. data/{test_app → test_apps/rails}/spec/views/posts/new.html.slim_spec.rb +0 -0
  116. data/{test_app → test_apps/rails}/spec/views/posts/show.html.slim_spec.rb +0 -0
  117. data/{test_app → test_apps/rails}/spec/workers/test_worker_spec.rb +0 -0
  118. data/{test_app/log → test_apps/rails/vendor/assets/stylesheets}/.keep +0 -0
  119. metadata +108 -102
  120. data/lib/sapience/configuration/grape.rb +0 -9
  121. data/test_app/.rspec +0 -2
  122. data/test_app/tmp/.keep +0 -0
  123. data/test_app/vendor/assets/stylesheets/.keep +0 -0
  124. data/test_app.simplecov +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f3bb0b1bdb49281387b1d631b711ec681856297f
4
- data.tar.gz: 11a904f638a18b0abc193ba568833548459e8787
3
+ metadata.gz: 14d3cb7ced5f31db60bee83527aa91fa14054562
4
+ data.tar.gz: cbdbeb2b580049917ff6914f30750ca757ba953d
5
5
  SHA512:
6
- metadata.gz: 8c5c673b3aa0c29703ac2e573e4061a168af7247e71d5f7e26546e5faa1084b431620a1c0bc4cc91bf24833b9a29cfc932c58ddc07aa41dcd6c4a8ef73a8b860
7
- data.tar.gz: 14eb31b23384a30fd49f2cd7d28bd0e6bb14152cbc586a606f010025a4d0514dafadada052ae7bc91e228ada47454d976cba461051b6728e2ceee922ef5f4efa
6
+ metadata.gz: d6a2d9d9e32281d0c8f74c8ba387a721e287aacbc33d4e7d3d896db74340ea9af40ca52b5defc95f6b3fe50cf9239ad582fb9544deef783e5c960312f74a9ced
7
+ data.tar.gz: feff9250b817af7363881bdba3311ea0b0c1c02b701e441e793840424bb7393615522b7b8570e43d5c726f2e70cdc872babf1611151736e9b4c9b4f426f97cb6
data/.simplecov CHANGED
@@ -1,22 +1,18 @@
1
- if ENV['CODECLIMATE_REPO_TOKEN']
2
- require "codeclimate-test-reporter"
3
- CodeClimate::TestReporter.start
1
+ require "simplecov-json"
4
2
 
5
- # require "coveralls"
6
- # Coveralls.wear!
7
- else
8
- require "simplecov-json"
9
- SimpleCov.maximum_coverage_drop 1
3
+ coverage_dir = './coverage/sapience'
4
+ FileUtils.rm_rf coverage_dir
10
5
 
11
- SimpleCov.formatters = [
12
- SimpleCov::Formatter::HTMLFormatter,
13
- SimpleCov::Formatter::JSONFormatter,
14
- ]
6
+ SimpleCov.coverage_dir coverage_dir
7
+ SimpleCov.command_name "sapience"
8
+ SimpleCov.maximum_coverage_drop 1
9
+ SimpleCov.formatters = [
10
+ SimpleCov::Formatter::HTMLFormatter,
11
+ SimpleCov::Formatter::JSONFormatter,
12
+ ]
15
13
 
16
- SimpleCov.start do
17
- add_filter "/spec/"
18
- add_filter "/bin/"
19
- add_filter "/gemfiles/"
20
- end
21
-
22
- end
14
+ SimpleCov.start do
15
+ add_filter "/spec/"
16
+ add_filter "/bin/"
17
+ add_filter "/gemfiles/"
18
+ end
data/.travis.yml CHANGED
@@ -1,10 +1,21 @@
1
1
  sudo: required
2
+ dist: trusty
2
3
  language: ruby
3
4
  services:
4
5
  - docker
6
+
7
+ before_script:
8
+ - mkdir -p coverage/rails coverage/grape coverage/sapience
9
+
5
10
  script:
6
- - docker-compose run -e TRAVIS=$TRAVIS -e TRAVIS_BRANCH=$TRAVIS_BRANCH -e TRAVIS_JOB_ID=$TRAVIS_JOB_ID -e TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST rspec
7
- - docker-compose run -e TRAVIS=$TRAVIS -e TRAVIS_BRANCH=$TRAVIS_BRANCH -e TRAVIS_JOB_ID=$TRAVIS_JOB_ID -e TRAVIS_PULL_REQUEST=$TRAVIS_PULL_REQUEST test_app
11
+ - docker-compose run rspec
12
+ - docker-compose run rails
13
+ - docker-compose run grape
14
+
15
+ after_success:
16
+ - chown -R $(whoami) coverage
17
+ - bundle exec rake coverage:merge coverage:send
18
+
8
19
  notifications:
9
20
  slack:
10
21
  secure: apFwkfBQ+3NDJgcLNCHQori9qtr6ePaN3Xx7Sy7NVWwYm9BHNxoX/FN8/hxR63JjXrf1C0hK0FLQ0TiA0BN9PgEEIecg78BvWUwMClDDiwhyYN3H0Bbg35PUFtgDIrOGpu/TYlxNmdHEDYEAxaWsl9wSds8pAJsN6m7VTjGfBwJUDcOiM4L1eRpbp7smPqOjmuQFuOJnO8YkPb+6nUfz53cJrMRUdha89Vgmvnw6cP4/Ms1TsL3vKmMSVbGGh/6WNKPjU6IbuUjwlsh6a9xWxQOk6Wnis/Z+kA+T0XbLMuTLLmzRDuql1tjJeMPi+wukmK1a7GjpPkpkzAgwLQ/CkjTBfIRbMyaBYSuAciuOY8PDtCcT4WLwEvdZbkFmhAdSr1RYxIBpONVfZ/5DT3bpk71+O74OIBqxG6NmkiZ0B6u9/KxbnIINLVAcVaqsN8sdSqWlWKzPm45BfGPXGjmGGgIVFU31rs+W5Zs7IYMNUjZxabYKIv9TsBONbogfbcoGZA+rWWUnQdjypNWJS9wyQDvJ4btxqy8YhDfaV6gF30Un5JcAggMutzKJiYi+qAeh0uN3/9XoXV2N6XBnh58h8ny1NY+0vklWhtFGR1wfFAqkDskvCIZabSeJ5bFM6FtNbNKq9tYciS+eAO1vEYQVDFt9eY2uZF2mFDKRnEegHMU=
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
+ load "lib/tasks/coverage.rake"
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
5
6
 
data/docker-compose.yml CHANGED
@@ -10,7 +10,9 @@ services:
10
10
  RABBITMQ_DEFAULT_USER: sapience
11
11
  RABBITMQ_DEFAULT_PASS: tests
12
12
 
13
- rails:
13
+
14
+
15
+ base:
14
16
  image: ruby:2.3
15
17
  cpu_shares: 4
16
18
  # Specify the directory from where all commands sent to the container will be
@@ -27,14 +29,14 @@ services:
27
29
  # Mount our app code directory (".") into our app containers at the
28
30
  # "/usr/src/app" folder:
29
31
  - .:/usr/src/app
30
-
31
32
  # Mount the 'gems' volume on the folder that stores bundled gems:
32
33
  - gems:/usr/local/bundle
33
34
 
34
35
 
36
+
35
37
  rspec:
36
38
  extends:
37
- service: rails
39
+ service: base
38
40
  entrypoint: /usr/src/app/dev-entrypoint.sh
39
41
  command: bundle exec rake
40
42
  depends_on:
@@ -43,10 +45,12 @@ services:
43
45
  CODECLIMATE_REPO_TOKEN: 204dc055302da6aed94379e249aa0645636d1d1794920c62db05c5fa968215de
44
46
  PATH: /usr/src/app/bin:/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
45
47
 
46
- test_app:
48
+
49
+
50
+ rails:
47
51
  extends:
48
- service: rails
49
- working_dir: /usr/src/app/test_app
52
+ service: base
53
+ working_dir: /usr/src/app/test_apps/rails
50
54
  entrypoint: /usr/src/app/dev-entrypoint.sh
51
55
  command: bundle exec rspec
52
56
  depends_on:
@@ -54,3 +58,14 @@ services:
54
58
  environment:
55
59
  AMQP: amqp://sapience:tests@rabbitmq:5672
56
60
  PATH: /usr/src/app/bin:/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
61
+
62
+
63
+
64
+ grape:
65
+ extends:
66
+ service: base
67
+ working_dir: /usr/src/app/test_apps/grape
68
+ entrypoint: /usr/src/app/dev-entrypoint.sh
69
+ command: bundle exec rspec
70
+ environment:
71
+ PATH: /usr/src/app/bin:/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@@ -61,7 +61,7 @@ module Sapience
61
61
  # rubocop:disable AbcSize, CyclomaticComplexity, PerceivedComplexity
62
62
  def initialize(options = {}, &block)
63
63
  unless options[:io] || options[:file_name]
64
- fail "Sapience::Appender::Stream missing mandatory parameter :file_name or :io"
64
+ fail ArgumentError, "missing mandatory argument :file_name or :io"
65
65
  end
66
66
 
67
67
  opts = options.dup
@@ -1,10 +1,8 @@
1
- if defined?(ActionCable)
2
- class ActionCable::Connection::TaggedLoggerProxy # rubocop:disable ClassAndModuleChildren
3
- alias_method :orig_tag, :tag
1
+ class ActionCable::Connection::TaggedLoggerProxy # rubocop:disable ClassAndModuleChildren
2
+ alias_method :orig_tag, :tag
4
3
 
5
- def tag(logger, &block)
6
- current_tags = tags - logger.tags
7
- logger.tagged(*current_tags, &block)
8
- end
4
+ def tag(logger, &block)
5
+ current_tags = tags - logger.tags
6
+ logger.tagged(*current_tags, &block)
9
7
  end
10
- end
8
+ end
@@ -1,21 +1,19 @@
1
1
  # Patch ActiveModelSerializers logger
2
2
 
3
- if defined?(ActiveModelSerializers)
4
- require "active_model_serializers/logging"
3
+ require "active_model_serializers/logging"
5
4
 
6
- module ActiveModelSerializers::Logging # rubocop:disable ClassAndModuleChildren
7
- def self.included(base)
8
- base.send(:include, Sapience::Loggable)
9
- end
5
+ module ActiveModelSerializers::Logging # rubocop:disable ClassAndModuleChildren
6
+ def self.included(base)
7
+ base.send(:include, Sapience::Loggable)
8
+ end
10
9
 
11
- private
10
+ private
12
11
 
13
- alias_method :orig_tag_logger, :tag_logger
12
+ alias_method :orig_tag_logger, :tag_logger
14
13
 
15
- def tag_logger(*tags, &block)
16
- logger.tagged(*tags, &block)
17
- end
14
+ def tag_logger(*tags, &block)
15
+ logger.tagged(*tags, &block)
18
16
  end
19
-
20
- ActiveModelSerializers.send(:include, Sapience::Loggable)
21
17
  end
18
+
19
+ ActiveModelSerializers.send(:include, Sapience::Loggable)
@@ -26,30 +26,28 @@ module Sapience
26
26
  nil
27
27
  end
28
28
 
29
- def call!(env)
30
- super
31
- end
32
-
33
29
  protected
34
30
 
35
- def response
36
- super
37
- rescue
38
- nil
39
- end
40
-
41
31
  def parameters # rubocop:disable AbcSize
42
32
  {
43
- status: (response.nil? ? "fail" : response.status),
44
- db_runtime: db_runtime,
45
- view_runtime: view_runtime,
46
- total_runtime: total_runtime,
47
33
  method: request.request_method,
48
- path: request.path,
49
- params: request.params,
34
+ request_path: request.path,
35
+ format: "json",
36
+ status: response.try(:status),
37
+ class_name: env['api.endpoint'].options[:for].to_s,
38
+ action: "index",
50
39
  host: request.host,
51
40
  ip: (request.env["HTTP_X_FORWARDED_FOR"] || request.env["REMOTE_ADDR"]),
52
41
  ua: request.env["HTTP_USER_AGENT"],
42
+ # route: "test_controller#index",
43
+ # message: "Completed #index",
44
+ tags: Sapience.tags,
45
+ params: request.params,
46
+ runtimes: {
47
+ total: total_runtime,
48
+ view: view_runtime,
49
+ db: db_runtime,
50
+ },
53
51
  }
54
52
  end
55
53
 
@@ -1,11 +1,8 @@
1
1
  require "sapience"
2
- require "sapience/extensions/action_cable/tagged_logger_proxy"
3
2
  require "sapience/extensions/action_controller/live"
4
3
  require "sapience/extensions/action_controller/log_subscriber"
5
4
  require "sapience/extensions/action_dispatch/debug_exceptions"
6
5
  require "sapience/extensions/action_view/streaming_template_renderer"
7
- require "sapience/extensions/active_job/logging"
8
- require "sapience/extensions/active_model_serializers/logging"
9
6
  require "sapience/extensions/active_record/log_subscriber"
10
7
  require "sapience/extensions/rails/rack/logger"
11
8
  require "sapience/extensions/rails/rack/logger_info_as_debug"
@@ -57,6 +54,9 @@ module Sapience
57
54
 
58
55
  # Before any initializers run, but after the gems have been loaded
59
56
  config.after_initialize do
57
+ require "sapience/extensions/action_cable/tagged_logger_proxy" if defined?(ActionCable)
58
+ require "sapience/extensions/active_model_serializers/logging" if defined?(ActiveModelSerializers)
59
+ require "sapience/extensions/active_job/logging" if defined?(ActiveJob)
60
60
  # Replace the Bugsnag logger
61
61
  Bugsnag.configure { |config| config.logger = Sapience[Bugsnag] } if defined?(Bugsnag)
62
62
  Sapience::Extensions::ActionController::LogSubscriber.attach_to :action_controller
@@ -1,3 +1,3 @@
1
1
  module Sapience
2
- VERSION = "0.2.7"
2
+ VERSION = "0.2.8"
3
3
  end
data/lib/sapience.rb CHANGED
@@ -17,7 +17,6 @@ require "sapience/formatters/json"
17
17
 
18
18
  require "sapience/config_loader"
19
19
  require "sapience/configuration"
20
- require "sapience/configuration/grape"
21
20
  require "sapience/base"
22
21
  require "sapience/log"
23
22
  require "sapience/logger"
@@ -0,0 +1,68 @@
1
+ COVERAGE_FILE = ".simplecov".freeze
2
+ COVERAGE_BKP_FILE = ".simplecov.bkp".freeze
3
+
4
+ def coverage_dir
5
+ p File.join(Dir.pwd, "coverage")
6
+ end
7
+
8
+ def hide_coverage_config
9
+ FileUtils.mv COVERAGE_FILE, COVERAGE_BKP_FILE if File.exist?(COVERAGE_FILE)
10
+ end
11
+
12
+ def unhide_coverage_config
13
+ FileUtils.mv COVERAGE_BKP_FILE, COVERAGE_FILE if File.exist?(COVERAGE_BKP_FILE)
14
+ end
15
+
16
+ namespace :coverage do
17
+ task :merge do
18
+ hide_coverage_config
19
+ require "json"
20
+ require "simplecov/version"
21
+ require "simplecov/result"
22
+ require "simplecov-html"
23
+ require "simplecov-json"
24
+
25
+ coverage_file_pattern = "{rails,sapience,grape}/.resultset.json"
26
+ json_files = Dir[File.join(coverage_dir, coverage_file_pattern)]
27
+
28
+ merged_hash = {}
29
+ json_files.each do |json_file|
30
+ content = File.read(json_file)
31
+ content.gsub!(%r{\/usr\/src\/app}, Dir.pwd) # not inside docker anymore
32
+ JSON.parse(content).each do |command_name, data|
33
+ puts "#{json_file} –> '#{command_name}'"
34
+ merged_hash = SimpleCov::Result.from_hash(command_name => data).original_result.merge_resultset(merged_hash)
35
+ end
36
+ end
37
+
38
+ merged_result = SimpleCov::Result.new(merged_hash)
39
+ result_file = File.join(coverage_dir, ".resultset.json")
40
+ FileUtils.rm result_file if File.exist?(result_file)
41
+ File.write(result_file, merged_result.to_hash.to_json)
42
+
43
+ SimpleCov.coverage_dir coverage_dir
44
+ [SimpleCov::Formatter::JSONFormatter, SimpleCov::Formatter::HTMLFormatter].each do |formatter|
45
+ formatter.new.format(merged_result)
46
+ end
47
+
48
+ unhide_coverage_config
49
+ end
50
+
51
+ task :send do
52
+ hide_coverage_config
53
+ require "json"
54
+ require "codeclimate-test-reporter"
55
+ CodeClimate::TestReporter.configure do |config|
56
+ config.branch = "master"
57
+ end
58
+
59
+ require "code_climate/test_reporter/ci" if ENV["CI"]
60
+ ENV["CODECLIMATE_REPO_TOKEN"] = "204dc055302da6aed94379e249aa0645636d1d1794920c62db05c5fa968215de"
61
+ resultset_file = File.join(coverage_dir, ".resultset.json")
62
+ result_hash = JSON.parse(File.read(resultset_file))
63
+ simplecov_result = SimpleCov::Result.from_hash(result_hash)
64
+
65
+ CodeClimate::TestReporter::Formatter.new.format(simplecov_result)
66
+ unhide_coverage_config
67
+ end
68
+ end
File without changes
@@ -0,0 +1,25 @@
1
+ require "simplecov-json"
2
+
3
+ coverage_dir = '../../coverage/grape'
4
+ FileUtils.rm_rf coverage_dir
5
+
6
+ SimpleCov.coverage_dir coverage_dir
7
+ SimpleCov.command_name "grape"
8
+ SimpleCov.maximum_coverage_drop 1
9
+ SimpleCov.formatters = [
10
+ SimpleCov::Formatter::HTMLFormatter,
11
+ SimpleCov::Formatter::JSONFormatter,
12
+ ]
13
+ SimpleCov.start do
14
+ profiles.delete(:root_filter)
15
+ filters.clear
16
+ add_filter do |src|
17
+ if src.filename =~ %r{sapience\-rb|\/usr\/src\/app/}
18
+ src.filename.include?("test_apps/grape")
19
+ else
20
+ true
21
+ end
22
+ end
23
+
24
+ add_group "Sapience", "../"
25
+ end
@@ -0,0 +1,30 @@
1
+ source "https://rubygems.org"
2
+
3
+
4
+ # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
5
+ gem "grape"
6
+ # Use Puma as the app server
7
+ gem "puma", "~> 3.0"
8
+
9
+ # Use Capistrano for deployment
10
+ # gem 'capistrano-rails', group: :development
11
+ gem "sapience", path: "../.."
12
+ gem "sentry-raven"
13
+ gem "statsd-ruby"
14
+ gem "active_model_serializers"
15
+
16
+ group :development, :test do
17
+ # Call 'byebug' anywhere in the code to stop execution and get a debugger console
18
+ gem "byebug", platform: :mri
19
+ # gem "pry-nav"
20
+ gem "pry-byebug", platform: :mri
21
+ gem "rspec"
22
+ gem "racksh"
23
+ end
24
+
25
+ group :test do
26
+ gem "rspec-its"
27
+ gem "simplecov"
28
+ gem "simplecov-json"
29
+ gem "fuubar"
30
+ end
@@ -0,0 +1,8 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+ require_relative "lib/ping"
4
+
5
+ require "rspec/core/rake_task"
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: [:spec]
@@ -0,0 +1,5 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require_relative 'lib/ping/api'
4
+
5
+ run Ping::API
@@ -0,0 +1,16 @@
1
+ require "grape"
2
+ require "grape/api"
3
+ require "sapience/grape"
4
+
5
+ module Ping
6
+ class API < ::Grape::API
7
+ format :json
8
+ use Sapience::Extensions::Grape::Middleware::Logging, logger: Grape::API.logger
9
+ prefix :api
10
+
11
+ desc "Returns pong."
12
+ get :ping do
13
+ { ping: "PONG" }
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ module Ping
2
+ require_relative "ping/api"
3
+ end
@@ -0,0 +1,41 @@
1
+ require "spec_helper"
2
+
3
+ describe Ping::API do
4
+ include Rack::Test::Methods
5
+
6
+ def app
7
+ Ping::API
8
+ end
9
+
10
+ context "GET /api/ping" do
11
+ let(:logger) { Grape::API.logger }
12
+
13
+ specify do
14
+ get "/api/ping"
15
+ expect(last_response.body).to match(/PONG/)
16
+ end
17
+
18
+ it "logs something" do
19
+ expect(logger).to receive(:info).with(
20
+ method: "GET",
21
+ request_path: "/api/ping",
22
+ format: "json",
23
+ status: 200,
24
+ class_name: "Ping::API",
25
+ action: "index",
26
+ host: "example.org",
27
+ ip: "127.0.0.1",
28
+ ua: nil,
29
+ tags: [],
30
+ params: {},
31
+ runtimes: a_hash_including(
32
+ total: kind_of(Float),
33
+ view: kind_of(Float),
34
+ db: kind_of(Float),
35
+ ),
36
+ )
37
+ get "/api/ping"
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,25 @@
1
+ require "simplecov"
2
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
3
+ require "sapience/grape"
4
+ require "rspec/its"
5
+ require "ping"
6
+
7
+ RSpec.configure do |config|
8
+ config.expect_with :rspec do |expectations|
9
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
10
+ end
11
+
12
+ config.mock_with :rspec do |mocks|
13
+ mocks.verify_partial_doubles = true
14
+ end
15
+
16
+ config.shared_context_metadata_behavior = :apply_to_host_groups
17
+ config.filter_run_when_matching :focus
18
+ config.example_status_persistence_file_path = "spec/examples.txt"
19
+ config.default_formatter = "doc" if config.files_to_run.one?
20
+ config.order = :random
21
+ Kernel.srand config.seed
22
+ config.before(:each) do
23
+ Sapience.reset!
24
+ end
25
+ end
@@ -0,0 +1,38 @@
1
+ *.rbc
2
+ capybara-*.html
3
+ .rspec
4
+ /log
5
+ /tmp
6
+ /db/*.sqlite3
7
+ /db/*.sqlite3-journal
8
+ /public/system
9
+ /coverage/
10
+ /spec/tmp
11
+ **.orig
12
+ rerun.txt
13
+ pickle-email-*.html
14
+
15
+ # dotenv
16
+ # TODO Comment out this rule if environment variables can be committed
17
+ .env
18
+
19
+ ## Environment normalization:
20
+ /.bundle
21
+ /vendor/bundle
22
+
23
+ # these should all be checked in to normalize the environment:
24
+ # Gemfile.lock, .ruby-version, .ruby-gemset
25
+
26
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
27
+ .rvmrc
28
+
29
+ # if using bower-rails ignore default bower_components path bower.json files
30
+ /vendor/assets/bower_components
31
+ *.bowerrc
32
+ bower.json
33
+
34
+ # Ignore pow environment settings
35
+ .powenv
36
+
37
+ # Ignore Byebug command history file.
38
+ .byebug_history
File without changes
@@ -0,0 +1,25 @@
1
+ require "simplecov-json"
2
+
3
+ coverage_dir = '../../coverage/rails'
4
+ FileUtils.rm_rf coverage_dir
5
+
6
+ SimpleCov.coverage_dir coverage_dir
7
+ SimpleCov.command_name "rails"
8
+ SimpleCov.maximum_coverage_drop 1
9
+ SimpleCov.formatters = [
10
+ SimpleCov::Formatter::HTMLFormatter,
11
+ SimpleCov::Formatter::JSONFormatter,
12
+ ]
13
+ SimpleCov.start do
14
+ profiles.delete(:root_filter)
15
+ filters.clear
16
+ add_filter do |src|
17
+ if src.filename =~ %r{sapience\-rb|\/usr\/src\/app/}
18
+ src.filename.include?("test_apps/rails")
19
+ else
20
+ true
21
+ end
22
+ end
23
+
24
+ add_group "Sapience", "../"
25
+ end
@@ -14,18 +14,18 @@ gem "puma", "~> 3.0"
14
14
 
15
15
  # Use Capistrano for deployment
16
16
  # gem 'capistrano-rails', group: :development
17
- gem "sapience", path: "../", require: "sapience/rails"
17
+ gem "sapience", path: "../..", require: "sapience/rails"
18
18
  gem "sentry-raven"
19
19
  gem "statsd-ruby"
20
+ gem "active_model_serializers"
20
21
  gem "sneakers"
21
22
  gem "slim-rails"
22
- gem "active_model_serializers"
23
23
 
24
24
  group :development, :test do
25
25
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
26
26
  gem "byebug", platform: :mri
27
27
  # gem "pry-nav"
28
- gem "pry-byebug"
28
+ gem "pry-byebug", platform: :mri
29
29
  gem "rspec-rails"
30
30
  gem "factory_girl_rails"
31
31
  end
@@ -38,9 +38,9 @@ end
38
38
 
39
39
  group :test do
40
40
  gem "rspec-its"
41
- gem "bunny-mock"
42
- gem "rspec-wait"
43
41
  gem "rails-controller-testing"
42
+ gem "simplecov"
43
+ gem "simplecov-json"
44
44
  end
45
45
 
46
46
  # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
File without changes
File without changes