airbrake/airbrake-ruby

View on GitHub
Rakefile

Summary

Maintainability
Test Coverage
require 'rspec/core/rake_task'
require 'rubygems/package_task'

RSpec::Core::RakeTask.new(:spec)
task default: :spec

# rubocop:disable Security/Eval
def modify_base_gemspec(&block)
  eval(File.read('airbrake-ruby.gemspec')).tap(&block)
end
# rubocop:enable Security/Eval

namespace :ruby do
  spec = modify_base_gemspec do |s|
    # We keep this dependency in Gemfile, so we can run CI builds. When we
    # generate gems, duplicate dependencies are not allowed.
    s.dependencies.delete_if { |d| d.name == 'rbtree-jruby' || 'rbtree3' }

    s.platform = Gem::Platform::RUBY
    s.add_dependency('rbtree3', '~> 0.5')
  end

  Gem::PackageTask.new(spec) do |pkg|
    pkg.need_zip = false
    pkg.need_tar = false
  end
end

namespace :jruby do
  spec = modify_base_gemspec do |s|
    # We keep this dependency in Gemfile, so we can run CI builds. When we
    # generate gems, duplicate dependencies are not allowed.
    s.dependencies.delete_if { |d| d.name == 'rbtree-jruby' || 'rbtree3' }

    s.platform = 'java'
    s.add_dependency('rbtree-jruby', '~> 0.2')
  end

  Gem::PackageTask.new(spec) do |pkg|
    pkg.need_zip = false
    pkg.need_tar = false
  end
end

desc 'Build all platform gems at once'
task gems: %w[ruby:clobber_package ruby:gem jruby:gem]

desc 'Build and push platform gems'
task pushgems: :gems do
  chdir("#{File.dirname(__FILE__)}/pkg") do
    Dir['*.gem'].each { |gem| sh "gem push #{gem}" }
  end
end