I am on Rails 5.1, and on a Mac running Sierra. I've already read and tried the solutions listed on other similar questions (1, 2). I have 3 different Rails projects that I'm working on and have rails-erd installed on all of them, but it is not working on one of them.

When I run rails ert --trace:

>rails erd --trace
** Invoke erd (first_time)
** Invoke erd:generate (first_time)
** Invoke erd:check_dependencies (first_time)
** Execute erd:check_dependencies
** Invoke erd:options (first_time)
** Execute erd:options
** Invoke erd:load_models (first_time)
** Execute erd:load_models
Loading application environment...
** Invoke environment (first_time)
** Execute environment
Loading code in search of Active Record models...
** Execute erd:generate
Generating Entity-Relationship Diagram for 13 models...
rails aborted!
Saving diagram failed!
Verify that Graphviz is installed and in your path, or use filetype=dot.
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/diagram/graphviz.rb:211:in `rescue in block in <class:Graphviz>'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/diagram/graphviz.rb:202:in `block in <class:Graphviz>'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/diagram.rb:169:in `instance_eval'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/diagram.rb:169:in `save'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/diagram.rb:120:in `create'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/diagram.rb:74:in `create'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/tasks.rake:55:in `block (2 levels) in <top (required)>'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `block in execute'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `each'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `execute'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:194:in `block in invoke_with_call_chain'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:216:in `block in invoke_prerequisites'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:214:in `each'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:214:in `invoke_prerequisites'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:193:in `block in invoke_with_call_chain'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:180:in `invoke'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:152:in `invoke_task'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block (2 levels) in top_level'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `each'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block in top_level'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:117:in `run_with_threads'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:102:in `top_level'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.2/lib/rails/commands/rake/rake_command.rb:21:in `block in perform'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:178:in `standard_exception_handling'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.2/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.2/lib/rails/command.rb:46:in `invoke'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.2/lib/rails/commands.rb:16:in `<top (required)>'
/Users/jaysonwhelpley/Sites/biq/bin/rails:9:in `require'
/Users/jaysonwhelpley/Sites/biq/bin/rails:9:in `<top (required)>'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `load'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `call'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client/command.rb:7:in `call'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client.rb:30:in `run'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/bin/spring:49:in `<top (required)>'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `load'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `<top (required)>'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:68:in `require'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:68:in `require'
/Users/jaysonwhelpley/Sites/biq/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
NoMethodError: undefined method `zero?' for nil:NilClass
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/ruby-graphviz-1.2.3/lib/graphviz/utils.rb:58:in `output_from_command'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/ruby-graphviz-1.2.3/lib/graphviz.rb:600:in `output'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/diagram/graphviz.rb:204:in `block in <class:Graphviz>'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/diagram.rb:169:in `instance_eval'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/diagram.rb:169:in `save'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/diagram.rb:120:in `create'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/diagram.rb:74:in `create'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rails-erd-1.5.2/lib/rails_erd/tasks.rake:55:in `block (2 levels) in <top (required)>'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `block in execute'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `each'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:250:in `execute'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:194:in `block in invoke_with_call_chain'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:216:in `block in invoke_prerequisites'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:214:in `each'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:214:in `invoke_prerequisites'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:193:in `block in invoke_with_call_chain'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/task.rb:180:in `invoke'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:152:in `invoke_task'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block (2 levels) in top_level'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `each'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:108:in `block in top_level'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:117:in `run_with_threads'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:102:in `top_level'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.2/lib/rails/commands/rake/rake_command.rb:21:in `block in perform'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/rake-12.0.0/lib/rake/application.rb:178:in `standard_exception_handling'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.2/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.2/lib/rails/command.rb:46:in `invoke'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.2/lib/rails/commands.rb:16:in `<top (required)>'
/Users/jaysonwhelpley/Sites/biq/bin/rails:9:in `require'
/Users/jaysonwhelpley/Sites/biq/bin/rails:9:in `<top (required)>'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `load'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `call'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client/command.rb:7:in `call'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client.rb:30:in `run'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/bin/spring:49:in `<top (required)>'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `load'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `<top (required)>'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:68:in `require'
/Users/jaysonwhelpley/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:68:in `require'
/Users/jaysonwhelpley/Sites/biq/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => erd => erd:generate

I have already installed graphviz.

The rake erd filetype=dot command works just fine, but trying the option of using:

erd --inheritance --direct --attributes=foreign_keys,content --filetype=dot
dot -Tjpg erd.dot > erd.jpg

It just creates an empty erd.jpg.

Any help?

1

There are 1 answers

0
Carlos Castillo On

I was having a similar problem, what I did was the following:

  1. Put the following patch on initializers, you can find the explanation here ERD issue:

    require 'rails_erd/domain/relationship'
    
    module RailsERD
      class Domain
        class Relationship
          class << self
            private
    
            def association_identity(association)
              Set[association_owner(association), association_target(association)]
            end
          end
        end
      end
    end
    
  2. Generate the dot file

    rake erd filetype=dot --trace
    
  3. Generate the pdf file

    dot -Tpdf -oERD.pdf -v erd.dot