kajizta
kajizta

Reputation: 5

Ruby. NoMethodError (undefined method `fetch' for nil:NilClass)

I want install redmine plugin ldap_sync, but when i test it, i have error:

Completed 500 Internal Server Error in 28ms (ActiveRecord: 19.6ms)
NoMethodError (undefined method `fetch' for nil:NilClass):

so thats part of code, which have some fetch

...
 def test
    return render 'ldap_setting_invalid' unless @ldap_setting.valid?

    ldap_test = params[:ldap_test]
    users     = ldap_test.fetch(:test_users, '').split(',')
    groups    = ldap_test.fetch(:test_groups, '').split(',')
    [users, groups].each {|l| l.map(&:strip).reject(&:blank?) }


    @test = LdapTest.new(@ldap_setting)
    @test.bind_user = ldap_test[:bind_user]
    @test.bind_password = ldap_test[:bind_password]

    if @test.valid?
      @test.run_with_users_and_groups(users, groups)
    else
      render 'ldap_test_invalid'
    end
  end
...

so thats part of code, which have some fetch in redmine plugin:

...
 def test
    return render 'ldap_setting_invalid' unless @ldap_setting.valid?

    ldap_test = params[:ldap_test]
    users     = ldap_test.fetch(:test_users, '').split(',')
    groups    = ldap_test.fetch(:test_groups, '').split(',')
    [users, groups].each {|l| l.map(&:strip).reject(&:blank?) }


    @test = LdapTest.new(@ldap_setting)
    @test.bind_user = ldap_test[:bind_user]
    @test.bind_password = ldap_test[:bind_password]

    if @test.valid?
      @test.run_with_users_and_groups(users, groups)
    else
      render 'ldap_test_invalid'
    end
  end
...

i take this plugin: https://github.com/eea/redmine_ldap_sync

Info about ruby and rails versions:

Ruby version                   2.7.6-p219 (2022-04-12) [x86_64-linux]
  Rails version                  5.2.6.3

Upvotes: -3

Views: 66

Answers (1)

Anton  Bogdanov
Anton Bogdanov

Reputation: 834

variable ldap_test is nil, because params does not have ldap_test key-value

so calling ldap_test.fetch raises this error

Upvotes: 0

Related Questions