class SolidusDevSupport::RakeTasks

Attributes

gemspec[R]
root[R]
test_app_path[R]

Public Class Methods

install(*args) click to toggle source
# File lib/solidus_dev_support/rake_tasks.rb, line 10
def self.install(*args)
  new(*args).tap(&:install)
end
new(root: Dir.pwd) click to toggle source
# File lib/solidus_dev_support/rake_tasks.rb, line 14
def initialize(root: Dir.pwd)
  @root = Pathname(root)
  @test_app_path = @root.join(ENV['DUMMY_PATH'] || 'spec/dummy')
  @gemspec = Bundler.load_gemspec(@root.glob("{,*}.gemspec").first)
end

Public Instance Methods

install() click to toggle source
# File lib/solidus_dev_support/rake_tasks.rb, line 22
def install
  install_test_app_task
  install_dev_app_task
  install_rspec_task
  install_changelog_task
end
install_changelog_task() click to toggle source
# File lib/solidus_dev_support/rake_tasks.rb, line 76
    def install_changelog_task
      require 'github_changelog_generator/task'

      GitHubChangelogGenerator::RakeTask.new(:changelog) do |config|
        require 'octokit'
        repo = Octokit::Repository.from_url(gemspec.metadata['source_code_uri'] || gemspec.homepage)

        config.user = repo.owner
        config.project = repo.name
        config.future_release = "v#{ENV['UNRELEASED_VERSION'] || gemspec.version}"

      rescue Octokit::InvalidRepository
        warn <<~WARN
          It won't be possible to automatically generate the CHANGELOG for this extension because the
          gemspec is missing the `source_code_uri` metadata. Please add this line to the gemspec to
          enable automatic CHANGELOG generation:

              s.metadata["source_code_uri"] = 'https://github.com/org/repo'

        WARN
      end
    end
install_dev_app_task() click to toggle source
# File lib/solidus_dev_support/rake_tasks.rb, line 52
def install_dev_app_task
  desc "Creates a sandbox application for simulating the Extension code in a deployed Rails app"
  task :sandbox do
    warn "DEPRECATED TASK: This task is here just for parity with solidus, please use bin/sandbox directly."
    exec("bin/sandbox", gemspec.name)
  end
end
install_rspec_task() click to toggle source
# File lib/solidus_dev_support/rake_tasks.rb, line 60
def install_rspec_task
  require 'rspec/core/rake_task'

  namespace :extension do
    ::RSpec::Core::RakeTask.new(:specs, [] => FileList[ENV['DUMMY_PATH']]) do |t|
      # Ref: https://circleci.com/docs/2.0/configuration-reference#store_test_results
      # Ref: https://github.com/solidusio/circleci-orbs-extensions#test-results-rspec
      if ENV['TEST_RESULTS_PATH']
        t.rspec_opts =
          "--format progress " \
          "--format RspecJunitFormatter --out #{ENV['TEST_RESULTS_PATH']}"
      end
    end
  end
end
install_test_app_task() click to toggle source
# File lib/solidus_dev_support/rake_tasks.rb, line 29
def install_test_app_task
  require 'rake/clean'
  require 'spree/testing_support/extension_rake'

  ENV['DUMMY_PATH'] = test_app_path.to_s
  ENV['LIB_NAME'] = gemspec.name

  ::CLOBBER.include test_app_path

  namespace :extension do
    # We need to go back to the gem root since the upstream
    # extension:test_app changes the working directory to be the dummy app.
    task :test_app do
      Rake::Task['extension:test_app'].invoke
      cd root
    end

    directory ENV['DUMMY_PATH'] do
      Rake::Task['extension:test_app'].invoke
    end
  end
end