Sha256: 3f53184fe91b1e7f89cdda727b665b845221cce27c5f2259b5f5741f34998914

Contents?: true

Size: 1.38 KB

Versions: 8

Compression:

Stored size: 1.38 KB

Contents

def say(message)
  puts message unless Rake.application.options.silent
end

namespace :erd do
  task :options do
    (RailsERD.options.keys.map(&:to_s) & ENV.keys).each do |option|
      RailsERD.options[option.to_sym] = case ENV[option]
      when "true", "yes" then true
      when "false", "no" then false
      when /,/ then ENV[option].split(/\s*,\s*/)
      else ENV[option].to_sym
      end
    end
  end

  task :load_models do
    say "Loading application environment..."
    Rake::Task[:environment].invoke

    say "Loading code in search of Active Record models..."
    begin
      Rails.application.eager_load!
    rescue Exception => err
      if Rake.application.options.trace
        raise
      else
        trace = Rails.backtrace_cleaner.clean(err.backtrace)
        error = (["Loading models failed!\nError occurred while loading application: #{err} (#{err.class})"] + trace).join("\n    ")
        raise error
      end
    end

    raise "Active Record was not loaded." unless defined? ActiveRecord
  end

  task :generate => [:options, :load_models] do
    say "Generating Entity-Relationship Diagram for #{ActiveRecord::Base.descendants.length} models..."

    require "rails_erd/diagram/graphviz"
    file = RailsERD::Diagram::Graphviz.create

    say "Done! Saved diagram to #{file}."
  end
end

desc "Generate an Entity-Relationship Diagram based on your models"
task :erd => "erd:generate"

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rails-erd-1.5.0 lib/rails_erd/tasks.rake
rails-erd-1.4.7 lib/rails_erd/tasks.rake
rails-erd-1.4.6 lib/rails_erd/tasks.rake
rails-erd-1.4.5 lib/rails_erd/tasks.rake
rails-erd-1.4.4 lib/rails_erd/tasks.rake
rails-erd-1.4.3 lib/rails_erd/tasks.rake
rails-erd-1.4.2 lib/rails_erd/tasks.rake
rails-erd-1.4.1 lib/rails_erd/tasks.rake