Danger: Can't use plugin added to Gemfile

Created on 8 Dec 2016  Â·  8Comments  Â·  Source: danger/danger

Report

What did you do?

I created a plugin with danger plugins create removed_tracking command and published it to GitHub: https://github.com/nikolaykasyanov/danger-removed_tracking.

Then I added it to my Gemfile like this:

gem 'danger-removed_tracking', git: 'https://github.com/nikolaykasyanov/danger-removed_tracking', branch: 'github'

bundle install successfully completed.

Finally I added the following line to my Dangerfile:

removed_tracking.warn_on_mondays

What did you expect to happen?

I expected plugin to be executed.

What happened instead?

Danger failed with the following error:

[14:33:45]: â–¸ bundler: failed to load command: danger (/Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bin/danger)
[14:33:45]: â–¸ Danger::DSLError: 
[14:33:45]: â–¸ [!] Invalid `Dangerfile-tests-debug` file: undefined local variable or method `removed_tracking' for #<Danger::Dangerfile:0x007fa39ea8f978>. Updating the Danger gem might fix the issue. Your Danger version: 4.0.2, latest Danger version: 4.0.3
[14:33:45]: â–¸ 
[14:33:45]: â–¸ #  from fastlane/Dangerfile-tests-debug:63
[14:33:45]: â–¸ #  -------------------------------------------
[14:33:45]: â–¸ #  # Verify that it's not monday
[14:33:45]: â–¸ >  removed_tracking.warn_on_mondays
[14:33:45]: â–¸ #  -------------------------------------------
[14:33:45]: â–¸ /Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/danger-4.0.2/lib/danger/danger_core/dangerfile.rb:68:in `method_missing'
[14:33:45]: â–¸ fastlane/Dangerfile-tests-debug:63:in `block in parse'
[14:33:45]: â–¸ /Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/danger-4.0.2/lib/danger/danger_core/dangerfile.rb:199:in `eval'
[14:33:45]: â–¸ /Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/danger-4.0.2/lib/danger/danger_core/dangerfile.rb:199:in `block in parse'
[14:33:45]: â–¸ /Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/danger-4.0.2/lib/danger/danger_core/dangerfile.rb:195:in `instance_eval'
[14:33:45]: â–¸ /Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/danger-4.0.2/lib/danger/danger_core/dangerfile.rb:195:in `parse'
[14:33:45]: â–¸ /Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/danger-4.0.2/lib/danger/danger_core/dangerfile.rb:272:in `run'
[14:33:45]: â–¸ /Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/danger-4.0.2/lib/danger/danger_core/executor.rb:27:in `run'
[14:33:45]: â–¸ /Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/danger-4.0.2/lib/danger/commands/runner.rb:66:in `run'
[14:33:45]: â–¸ /Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/claide-1.0.1/lib/claide/command.rb:334:in `run'
[14:33:45]: â–¸ /Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/danger-4.0.2/bin/danger:5:in `<top (required)>'
[14:33:45]: â–¸ /Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bin/danger:23:in `load'
[14:33:45]: â–¸ /Users/nkasyanov/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bin/danger:23:in `<top (required)>'

It looks like Danger can't find the plugin. Am I missing something?

Your Environment

  • I'm running Danger locally with Bundler
  • I was using 4.0.2, 4.0.3 doesn't help either

Most helpful comment

It seems to be a local issue, it works perfectly well for my colleague. Thanks for assistance!

All 8 comments

I'd recommend adding gem "pry" into your Gemfile, then add

require 'pry'
binding.pry

into your Dangerfile, then running bundle exec danger local which puts you in a REPL inside the Dangerfile. Then see what it shows in the dangerfiles plugins. This does, from a cursory look, seem correct

@orta thanks for the insight, unfortunately my plugin is not in plugins.

It seems to be a local issue, it works perfectly well for my colleague. Thanks for assistance!

Update: apparently rbenv is the culprit. Switching to rvm.

That's a shame - but at least you got it sorted

I got the same undefined method issue using rvm. But 4.0.1 works for me (originally tried 4.0.4 then 4.0.2). Sticking to 4.0.1 for now, but lemme know what I can do to help debug.

uhoh might be more of a fastlane or bundler issue; seems to work locally with direct danger but bundle exec fastlane run_danger on CI/jenkins doesnt :(

fastlane has a 'use_bundle_exec' option for danger. setting this to false seems to work for me:

#Fastfile
danger(use_bundle_exec: false)
Was this page helpful?
0 / 5 - 0 ratings