File: Rakefile

package info (click to toggle)
ruby-paper-trail 12.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,200 kB
  • sloc: ruby: 6,743; makefile: 6
file content (73 lines) | stat: -rw-r--r-- 2,229 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# frozen_string_literal: true

ENV["DB"] ||= "sqlite"

require "fileutils"
require "bundler"
Bundler::GemHelper.install_tasks

desc "Copy the database.DB.yml per ENV['DB']"
task :install_database_yml do
  puts format("installing database.yml for %s", ENV["DB"])

  # It's tempting to use `git clean` here, but this rake task will be run by
  # people working on changes that haven't been committed yet, so we have to
  # be more selective with what we delete.
  ::FileUtils.rm("spec/dummy_app/db/database.yml", force: true)

  FileUtils.cp(
    "spec/dummy_app/config/database.#{ENV['DB']}.yml",
    "spec/dummy_app/config/database.yml"
  )
end

desc "Delete generated files and databases"
task :clean do
  puts format("dropping %s database", ENV["DB"])
  case ENV["DB"]
  when "mysql"
    # TODO: only works locally. doesn't respect database.yml
    system "mysqladmin drop -f paper_trail_test > /dev/null 2>&1"
  when "postgres"
    # TODO: only works locally. doesn't respect database.yml
    system "dropdb --if-exists paper_trail_test > /dev/null 2>&1"
  when nil, "sqlite"
    ::FileUtils.rm(::Dir.glob("spec/dummy_app/db/*.sqlite3"))
  else
    raise "Don't know how to clean specified RDBMS: #{ENV['DB']}"
  end
end

desc <<~EOS
  Write a database.yml for the specified RDBMS, and create database. Does not
  migrate. Migration happens later in spec_helper.
EOS
task prepare: %i[clean install_database_yml] do
  puts format("creating %s database", ENV["DB"])
  case ENV["DB"]
  when "mysql"
    # TODO: only works locally. doesn't respect database.yml
    system "mysqladmin create paper_trail_test"
  when "postgres"
    # TODO: only works locally. doesn't respect database.yml
    system "createdb paper_trail_test"
  when nil, "sqlite"
    # noop. test.sqlite3 will be created when migration happens
    nil
  else
    raise "Don't know how to create specified DB: #{ENV['DB']}"
  end
end

require "rspec/core/rake_task"
desc "Run tests on PaperTrail with RSpec"
task(:spec).clear
RSpec::Core::RakeTask.new(:spec) do |t|
  t.verbose = false # hide list of specs bit.ly/1nVq3Jn
end

require "rubocop/rake_task"
RuboCop::RakeTask.new

desc "Default: run all available test suites"
task default: %i[rubocop prepare spec]