diff --git a/Rakefile b/Rakefile index 80078df..e014087 100644 --- a/Rakefile +++ b/Rakefile @@ -1,19 +1,47 @@ require 'bundler/gem_tasks' +require 'rake' +require 'rspec/core/rake_task' -namespace :cover_me do +RCOV = RUBY_VERSION.to_f == 1.8 + +namespace :spec do - desc "Generates and opens code coverage report." - task :report do - require 'cover_me' - CoverMe.complete! + RSpec::Core::RakeTask.new(:coverage) do |t| + t.pattern = 'spec/**/*_spec.rb' + + if RCOV + t.rcov = true + t.rcov_opts = '--exclude osx\/objc,spec,gems\/' + end + end + + RSpec::Core::RakeTask.new(:normal) do |t| + t.pattern ='spec/**/*_spec.rb' + t.rcov = false + end + + namespace :coverage do + desc "Cleanup coverage data" + task :cleanup do + rm_rf 'coverage.data' + rm_rf 'coverage' + end + + desc "Browse the code coverage report." + task :report => ["spec:coverage:cleanup", "spec:coverage"] do + if RCOV + require "launchy" + Launchy.open("coverage/index.html") + else + require 'cover_me' + CoverMe.complete! + end + end end end -task :test do - Rake::Task['cover_me:report'].invoke -end +desc "RSpec tests" +task "spec" => "spec:normal" -task :spec do - Rake::Task['cover_me:report'].invoke -end \ No newline at end of file +task "default" => "spec" diff --git a/draper.gemspec b/draper.gemspec index 69f614b..7829cea 100644 --- a/draper.gemspec +++ b/draper.gemspec @@ -22,9 +22,15 @@ Gem::Specification.new do |s| s.add_development_dependency "rspec", "~> 2.0.1" s.add_development_dependency "activesupport", "~> 3.0.9" s.add_development_dependency "actionpack", "~> 3.0.9" - s.add_development_dependency "ruby-debug19" s.add_development_dependency "guard" s.add_development_dependency "guard-rspec" s.add_development_dependency "rb-fsevent" - s.add_development_dependency 'cover_me', '>= 1.0.0.rc6' + if RUBY_VERSION.to_f == 1.8 + s.add_development_dependency "ruby-debug" + s.add_development_dependency "rcov" + s.add_development_dependency "launchy" + else + s.add_development_dependency "ruby-debug19" + s.add_development_dependency 'cover_me', '>= 1.0.0.rc6' + end end diff --git a/lib/draper/all_helpers.rb b/lib/draper/all_helpers.rb index 15cb806..e348270 100644 --- a/lib/draper/all_helpers.rb +++ b/lib/draper/all_helpers.rb @@ -31,7 +31,7 @@ module Draper def url_for(*args) if args.last.is_a?(Hash) && !args.last[:only_path] args = args.dup - args << args.pop.merge(host: ActionMailer::Base.default_url_options[:host]) + args << args.pop.merge('host' => ActionMailer::Base.default_url_options[:host]) end super(*args) end diff --git a/lib/draper/base.rb b/lib/draper/base.rb index 1b023c3..f76bcb1 100644 --- a/lib/draper/base.rb +++ b/lib/draper/base.rb @@ -60,8 +60,8 @@ module Draper private def select_methods - specified = self.allowed || (model.public_methods - denied) - (specified - self.public_methods) + FORCED_PROXY + specified = self.allowed || (model.public_methods.map{|s| s.to_sym} - denied.map{|s| s.to_sym}) + (specified - self.public_methods.map{|s| s.to_sym}) + FORCED_PROXY end def build_methods diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b0134af..4f92c1f 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,6 +1,12 @@ require 'rubygems' require 'bundler' -require 'cover_me' + +require 'rspec' +begin + require 'cover_me' +rescue LoadError + # Silently fail +end require './spec/samples/application_helper.rb' Bundler.require Dir.glob('./spec/samples/*') {|file| require file}