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
I expected plugin to be executed.
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?
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)
Most helpful comment
It seems to be a local issue, it works perfectly well for my colleague. Thanks for assistance!