From ca34d28a8404437a2fad962a9493e6fa57bbd5ba Mon Sep 17 00:00:00 2001 From: Michael Herold Date: Fri, 10 Feb 2017 08:23:51 -0600 Subject: [PATCH] In Rails, set `Hashie.logger` to `Rails.logger` --- .gitignore | 4 +- lib/hashie/logger.rb | 7 ++- spec/integration/rails/.rspec | 3 + spec/integration/rails/Gemfile | 5 ++ spec/integration/rails/integration_spec.rb | 66 ++++++++++++++++++++++ 5 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 spec/integration/rails/.rspec create mode 100644 spec/integration/rails/Gemfile create mode 100644 spec/integration/rails/integration_spec.rb diff --git a/.gitignore b/.gitignore index 42bfa64..3563ce0 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,8 @@ coverage rdoc pkg *.gem +*.log .bundle .rvmrc -Gemfile.lock \ No newline at end of file +Gemfile.lock +log/ diff --git a/lib/hashie/logger.rb b/lib/hashie/logger.rb index 065738f..4f8fe5a 100644 --- a/lib/hashie/logger.rb +++ b/lib/hashie/logger.rb @@ -5,7 +5,12 @@ module Hashie # # @return [Logger] def self.logger - @logger ||= Logger.new(STDOUT) + @logger ||= + if defined?(::Rails) + Rails.logger + else + Logger.new(STDOUT) + end end # Sets the logger that Hashie uses for reporting errors. diff --git a/spec/integration/rails/.rspec b/spec/integration/rails/.rspec new file mode 100644 index 0000000..a4c51e7 --- /dev/null +++ b/spec/integration/rails/.rspec @@ -0,0 +1,3 @@ +--colour +--format=documentation +--pattern=*_spec.rb diff --git a/spec/integration/rails/Gemfile b/spec/integration/rails/Gemfile new file mode 100644 index 0000000..3478982 --- /dev/null +++ b/spec/integration/rails/Gemfile @@ -0,0 +1,5 @@ +source 'http://rubygems.org' + +gem 'hashie', path: '../../..' +gem 'rails' +gem 'rspec', '~> 3.5.0' diff --git a/spec/integration/rails/integration_spec.rb b/spec/integration/rails/integration_spec.rb new file mode 100644 index 0000000..87ff1fc --- /dev/null +++ b/spec/integration/rails/integration_spec.rb @@ -0,0 +1,66 @@ +ENV['RACK_ENV'] = 'test' + +require 'rspec/core' +require 'rails' +require 'rails/all' +require 'action_view/testing/resolvers' + +module RailsApp + class Application < ::Rails::Application + config.action_dispatch.show_exceptions = false + config.active_support.deprecation = :stderr + config.eager_load = false + config.root = __dir__ + config.secret_key_base = 'hashieintegrationtest' + + routes.append do + get '/' => 'application#index' + end + + config.assets.paths << File.join(__dir__, 'assets/javascripts') + config.assets.debug = true + end +end + +LAYOUT = <<-HTML + + + + TestApp + <%= stylesheet_link_tag "application", :media => "all" %> + <%= javascript_include_tag "application" %> + <%= csrf_meta_tags %> + + +<%= yield %> + + +HTML + +INDEX = <<-HTML +

Hello, world!

+HTML + +class ApplicationController < ActionController::Base + include Rails.application.routes.url_helpers + + layout 'application' + + self.view_paths = [ActionView::FixtureResolver.new( + 'layouts/application.html.erb' => LAYOUT, + 'application/index.html.erb' => INDEX + )] + + def index + end +end + +RailsApp::Application.initialize! + +require 'hashie' + +RSpec.describe 'the Hashie logger' do + it 'is set to the Rails logger' do + expect(Hashie.logger).to eq(Rails.logger) + end +end